ملقم SQL Archiالبنية (موضح)

MS SQL Server عبارة عن بنية خادم-عميل. تبدأ عملية MS SQL Server بإرسال تطبيق العميل لطلب. يقبل SQL Server الطلب ويعالجه ويرد عليه بالبيانات المعالجة. دعنا نناقش بالتفصيل البنية الكاملة الموضحة أدناه:

كما يوضح الرسم البياني أدناه، هناك ثلاثة مكونات رئيسية في SQL Server Archiالبنية:

  1. طبقة البروتوكول
  2. المحرك العلائقي
  3. محرك التخزين
ملقم SQL Architecture
ملقم SQL Archiمخطط فني

طبقة البروتوكول – SNI

يدعم MS SQL SERVER PROTOCOL LAYER 3 أنواع من خادم العميل Architecture. سنبدأ ب "ثلاثة أنواع من خادم العميل Archiتكنولوجيا" الذي يدعمه MS SQL Server.

ذكريات مشتركه

دعونا نعيد النظر في سيناريو المحادثة في الصباح الباكر.

طبقة البروتوكول - SNI

MOM وTOM - هنا كان توم وأمه في نفس المكان المنطقي، أي في منزلهما. كان توم قادرًا على طلب القهوة وكانت أمي قادرة على تقديمها ساخنة.

خادم MS SQL – هنا مرض التصلب العصبي المتعدد مزود يوفر الخادم بروتوكول الذاكرة المشتركة. هنا زبون مرض التصلب العصبي المتعدد مزود السيرفر يعمل على نفس الجهاز يمكن لكليهما التواصل عبر بروتوكول الذاكرة المشتركة.

تشبيه: يتيح تعيين الكيانات في السيناريوهين أعلاه. يمكننا بسهولة تعيين Tom إلى Client، وMom إلى SQL server، وHome to Machine، والاتصال اللفظي إلى بروتوكول الذاكرة المشتركة.

من مكتب التكوين والتثبيت:

للاتصال بقاعدة البيانات المحلية - في مزود إدارة الاستوديو، يمكن أن يكون خيار "اسم الخادم".

"."

"مضيف محلي"

"127.0.0.1"

"الجهاز\المثيل"

طبقة البروتوكول - SNI

TCP / IP

الآن فكر في المساء، توم في مزاج الحفلة. يريد القهوة المطلوبة من مقهى معروف. يقع المقهى على بعد 10 كم من منزله.

TCP / IP

هنا يوجد توم وستاربوك في موقع مادي مختلف. توم في المنزل وستاربكس في السوق المزدحم. إنهم يتواصلون عبر الشبكة الخلوية. وبالمثل، يوفر MS SQL SERVER القدرة على التفاعل عبر بروتوكول TCP / IP، حيث يكون CLIENT وMS SQL Server بعيدين عن بعضهما البعض ويتم تثبيتهما على جهاز منفصل.

تشبيه: يتيح تعيين الكيانات في السيناريوهين أعلاه. يمكننا بسهولة تعيين Tom إلى Client، وStarbuck إلى خادم SQL، ومكان المنزل/السوق إلى الموقع البعيد، وأخيرًا الشبكة الخلوية إلى بروتوكول TCP/IP.

ملاحظات من مكتب التكوين/التثبيت:

  • في SQL Management Studio - للاتصال عبر TCP\IP، يجب أن يكون خيار "اسم الخادم" هو "Machine\Instance of the server".
  • يستخدم خادم SQL المنفذ 1433 في TCP/IP.

TCP / IP

الأنابيب المسماة

الآن أخيرًا في الليل، أراد توم تناول الشاي الأخضر الخفيف الذي تعده جارتها سييرا جيدًا.

الأنابيب المسماة

هنا توم وله الجيران، سييرا، في نفس مادي الموقع، كوننا جيران بعضنا البعض. إنهم يتواصلون عبر الشبكة الداخلية. وبالمثل، خادم MS SQL يوفر القدرة على التفاعل عبر الأنابيب المسماة بروتوكول. هنا العميل و خادم MS SQL هم على اتصال عبر LAN.

تشبيه: يتيح تعيين الكيانات في السيناريوهين أعلاه. يمكننا بسهولة تعيين Tom إلى Client، وSierra إلى SQL server، وNeighbor إلى LAN، وأخيرًا شبكة Intra إلى بروتوكول توجيه الإخراج المسمى.

ملاحظات من مكتب التكوين/التثبيت:

  • للاتصال عبر توجيه الإخراج المسمى. يتم تعطيل هذا الخيار افتراضيًا ويجب تمكينه بواسطة مدير تكوين SQL.

ما هو TDS؟

الآن بعد أن عرفنا أن هناك ثلاثة أنواع من خادم العميل Architecture، دعونا نلقي نظرة سريعة على TDS:

  • TDS لتقف على تدفق البيانات الجدولية.
  • تستخدم جميع البروتوكولات الثلاثة حزم TDS. يتم تغليف TDS في حزم الشبكة. يتيح ذلك نقل البيانات من جهاز العميل إلى جهاز الخادم.
  • تم تطوير TDS لأول مرة بواسطة Sybase وهي الآن مملوكة لشركة Microsoft

المحرك العلائقي

يُعرف المحرك العلائقي أيضًا باسم معالج الاستعلام. لديها ملقم SQL المكونات التي تحدد بالضبط ما يجب أن يفعله الاستعلام وكيف يمكن القيام به بشكل أفضل. وهو مسؤول عن تنفيذ استعلامات المستخدم عن طريق طلب البيانات من محرك التخزين ومعالجة النتائج التي يتم إرجاعها.

كما هو مبين في Archiالمخطط الفني هناك 3 مكونات رئيسية للمحرك العلائقي. دعونا ندرس المكونات بالتفصيل:

محلل كمد

يتم بعد ذلك تمرير البيانات بمجرد استلامها من طبقة البروتوكول إلى المحرك العلائقي. "محلل CMD" هو المكون الأول للمحرك العلائقي الذي يتلقى بيانات الاستعلام. المهمة الرئيسية لـ CMD Parser هي التحقق من الاستعلام خطأ نحوي ودلالي. أخيرا ، هو يولد شجرة الاستعلام. دعونا نناقش بالتفصيل.

محلل كمد

التدقيق النحوي:

  • مثل كل لغة برمجة أخرى، يحتوي MS SQL أيضًا على مجموعة محددة مسبقًا من الكلمات الرئيسية. أيضًا، يحتوي SQL Server على قواعده النحوية الخاصة التي يفهمها خادم SQL.
  • SELECT، INSERT، UPDATE، والعديد من الآخرين ينتمون إلى قوائم الكلمات الرئيسية المحددة مسبقًا لـ MS SQL.
  • يقوم محلل CMD بإجراء فحص نحوي. إذا لم يتبع إدخال المستخدمين قواعد اللغة أو القواعد النحوية، فسيتم ذلك إرجاع خطأ.

على سبيل المثال: لنفترض أن روسيًا ذهب إلى مطعم ياباني. يطلب الوجبات السريعة باللغة الروسية. ولسوء الحظ، النادل يفهم اليابانية فقط. ماذا ستكون النتيجة الأكثر وضوحا؟

الجواب هو - النادل غير قادر على معالجة الطلب بشكل أكبر.

يجب ألا يكون هناك أي انحراف في القواعد أو اللغة التي يقبلها خادم SQL. إذا كان الأمر كذلك، فلن يتمكن خادم SQL من معالجته وبالتالي سيعرض رسالة خطأ.

سوف نتعلم المزيد عن استعلام MS SQL في البرامج التعليمية القادمة. ومع ذلك، فكر أدناه في بناء جملة الاستعلام الأساسي مثل

SELECT * from <TABLE_NAME>;

الآن، للحصول على تصور لما يفعله النحو، لنفترض أنه إذا قام المستخدم بتشغيل الاستعلام الأساسي على النحو التالي:

SELECR * from <TABLE_NAME>

لاحظ أنه بدلاً من "SELECT" كتب المستخدم "SELECR".

النتيجة: سيقوم محلل CMD بتحليل هذا البيان وسيقوم بإلقاء رسالة الخطأ. نظرًا لأن "SELECR" لا يتبع اسم الكلمة الرئيسية والقواعد النحوية المحددة مسبقًا. هنا كان CMD Parser يتوقع "SELECT".

التدقيق الدلالي:

  • يتم تنفيذ هذا بواسطة عادي.
  • في أبسط أشكاله، يتحقق مما إذا كان اسم العمود واسم الجدول الذي يتم الاستعلام عنه موجودين في المخطط. وإذا كان موجودا، قم بربطه بالاستعلام. يُعرف هذا أيضًا باسم تجليد.
  • تزداد التعقيدات عندما تحتوي استعلامات المستخدم على VIEW. يقوم Normalizer بإجراء عملية الاستبدال باستخدام تعريف view المخزن داخليًا والمزيد.

دعونا نفهم هذا بمساعدة المثال أدناه -

SELECT * from USER_ID

النتيجة: سيقوم محلل CMD بتحليل هذا البيان للتحقق من الدلالات. سيقوم المحلل اللغوي بإلقاء رسالة خطأ لأن Normalizer لن يعثر على الجدول المطلوب (USER_ID) لأنه غير موجود.

إنشاء شجرة استعلام:

  • تقوم هذه الخطوة بإنشاء شجرة تنفيذ مختلفة يمكن تشغيل الاستعلام فيها.
  • لاحظ أن جميع الأشجار المختلفة لها نفس الناتج المطلوب.

محسن

يتمثل عمل المُحسِّن في إنشاء خطة تنفيذ لاستعلام المستخدم. هذه هي الخطة التي ستحدد كيفية تنفيذ استعلام المستخدم.

لاحظ أنه لم يتم تحسين كافة الاستعلامات. يتم إجراء التحسين لأوامر DML (لغة تعديل البيانات) مثل SELECT وINSERT وDELETE وUPDATE. يتم وضع علامة على مثل هذه الاستعلامات أولاً ثم إرسالها إلى المحسن. لم يتم تحسين أوامر DDL مثل CREATE وALTER، ولكن بدلاً من ذلك يتم تجميعها في نموذج داخلي. يتم حساب تكلفة الاستعلام بناءً على عوامل مثل استخدام وحدة المعالجة المركزية واستخدام الذاكرة واحتياجات الإدخال/الإخراج.

دور المحسن هو العثور على خطة التنفيذ الأرخص، وليست الأفضل، والأكثر فعالية من حيث التكلفة.

قبل أن ننتقل إلى المزيد من التفاصيل الفنية الخاصة بـ Optimizer، فكر في المثال الواقعي أدناه:

على سبيل المثال:

لنفترض أنك تريد فتح حساب مصرفي عبر الإنترنت. أنت تعرف بالفعل عن بنك واحد يستغرق يومين كحد أقصى لفتح حساب. ولكن، لديك أيضًا قائمة تضم 2 بنكًا آخر، والتي قد تستغرق أو لا تستغرق أقل من يومين. يمكنك البدء في التعامل مع هذه البنوك لتحديد البنوك التي تستغرق أقل من يومين. الآن، قد لا تجد بنكًا يستغرق أقل من يومين، وهناك وقت إضافي ضائع بسبب نشاط البحث نفسه. كان من الأفضل فتح حساب في البنك الأول نفسه.

الخلاصة: من المهم أن تختار بحكمة. لكي نكون دقيقين، اختر أي الخيار هو الأفضل، وليس الأرخص.

وبالمثل، MS يعمل SQL Optimizer على خوارزميات شاملة/استدلالية مدمجة. والهدف هو تقليل وقت تشغيل الاستعلام. جميع خوارزميات المحسن هي ملكية Microsoft وسر. بالرغم ان, فيما يلي الخطوات عالية المستوى التي يقوم بها MS SQL Optimizer. تتبع عمليات البحث عن التحسين ثلاث مراحل كما هو موضح في الرسم البياني أدناه:

محسن

المرحلة 0: البحث عن خطة تافهة:

  • ويعرف هذا أيضا باسم مرحلة ما قبل التحسين.
  • في بعض الحالات، قد تكون هناك خطة عملية واحدة قابلة للتنفيذ، تُعرف باسم الخطة التافهة. ولا توجد حاجة لإنشاء خطة مُحسَّنة. والسبب هو أن البحث أكثر من ذلك سيؤدي إلى العثور على نفس خطة التنفيذ في وقت التشغيل. وهذا أيضًا مع التكلفة الإضافية للبحث عن خطة مُحسَّنة والتي لم تكن مطلوبة على الإطلاق.
  • إذا لم يتم العثور على خطة تافهة، ثم 1st تبدأ المرحلة.

المرحلة الأولى: البحث عن خطط معالجة المعاملات

  • وهذا يشمل البحث عن الخطة البسيطة والمعقدة.
  • خطة بحث بسيطة: سيتم استخدام البيانات السابقة للعمود والفهرس المتضمن في الاستعلام للتحليل الإحصائي. يتكون هذا عادةً على سبيل المثال لا الحصر من فهرس واحد لكل جدول.
  • مع ذلك، إذا لم يتم العثور على الخطة البسيطة، فسيتم البحث عن خطة أكثر تعقيدًا. وتتضمن هذه الخطة فهرسًا متعددًا لكل جدول.

المرحلة الثانية: المعالجة المتوازية والتحسين.

  • إذا لم تنجح أي من الاستراتيجيات المذكورة أعلاه، فسيقوم Optimizer بالبحث عن إمكانيات المعالجة المتوازية. يعتمد هذا على إمكانيات المعالجة والتكوين الخاص بالجهاز.
  • إذا كان ذلك لا يزال غير ممكن، فستبدأ مرحلة التحسين النهائية. الآن، الهدف النهائي للتحسين هو العثور على جميع الخيارات الأخرى الممكنة لتنفيذ الاستعلام بأفضل طريقة. مرحلة التحسين النهائية Algorithms . Microsoft استقامة.

منفذ الاستعلام

منفذ الاستعلام

مكالمات منفذ الاستعلام طريقة الوصول. يوفر خطة تنفيذ لمنطق جلب البيانات المطلوبة للتنفيذ. بمجرد استلام البيانات من محرك التخزين، يتم نشر النتيجة على طبقة البروتوكول. وأخيرا، يتم إرسال البيانات إلى المستخدم النهائي.

محرك التخزين

عمل محرك التخزين هو تخزين البيانات في نظام تخزين مثل Disk أو SAN واسترجاع البيانات عند الحاجة. قبل أن نتعمق في محرك التخزين، دعونا نلقي نظرة على كيفية تخزين البيانات فيه قاعدة البيانات نوع الملفات المتوفرة.

ملف البيانات ومدى:

محرك التخزين

ملف البيانات، يقوم بتخزين البيانات فعليًا في شكل صفحات بيانات، حيث يبلغ حجم كل صفحة بيانات 8 كيلو بايت، مما يشكل أصغر وحدة تخزين في SQL Server. يتم تجميع صفحات البيانات هذه بشكل منطقي لتشكل نطاقات. لم يتم تعيين أي كائن لصفحة في SQL Server.

تتم صيانة الكائن عبر النطاقات. تحتوي الصفحة على قسم يسمى رأس الصفحة بحجم 96 بايت، يحمل معلومات البيانات الوصفية الخاصة بالصفحة مثل نوع الصفحة ورقم الصفحة وحجم المساحة المستخدمة وحجم المساحة الحرة والمؤشر إلى الصفحة التالية والصفحة السابقة ، إلخ.

أنواع الملفات

أنواع الملفات

  1. الملف الأساسي
  • تحتوي كل قاعدة بيانات على ملف أساسي واحد.
  • يقوم هذا بتخزين جميع البيانات المهمة المتعلقة بالجداول وطرق العرض والمشغلات وما إلى ذلك.
  • التمديد هو .يمول عادة ولكن يمكن أن يكون من أي امتداد.
  1. الملف الثانوي
  • قد تحتوي أو لا تحتوي قاعدة البيانات على ملفات ثانوية متعددة.
  • وهذا أمر اختياري ويحتوي على بيانات خاصة بالمستخدم.
  • التمديد هو .ناف عادة ولكن يمكن أن يكون من أي امتداد.
  1. ملف تسجيل
  • يُعرف أيضًا باسم سجلات الكتابة المسبقة.
  • التمديد هو .ldf
  • تستخدم لإدارة المعاملات.
  • يتم استخدام هذا للتعافي من أي حالات غير مرغوب فيها. أداء مهمة مهمة تتمثل في التراجع عن المعاملات غير الملتزم بها.

يحتوي محرك التخزين على 3 مكونات؛ دعونا ننظر فيها بالتفصيل.

طريقة الوصول

يعمل كواجهة بين منفذ الاستعلام و Buffer مدير/سجلات المعاملات.

أسلوب الوصول نفسه لا يقوم بأي تنفيذ.

الإجراء الأول هو تحديد ما إذا كان الاستعلام:

  1. حدد البيان (DDL)
  2. بيان عدم التحديد (DDL وDML)

اعتمادًا على النتيجة، تتخذ طريقة الوصول الخطوات التالية:

  1. إذا كان الاستعلام DDL، عبارة SELECT، يتم تمرير الاستعلام إلى Buffer كلمة المدير لمزيد من المعالجة.
  2. وإذا استفسر إذا DDL، بيان غير محدد، يتم تمرير الاستعلام إلى مدير المعاملات. يتضمن هذا في الغالب عبارة UPDATE.

طريقة الوصول

Buffer كلمة المدير

Buffer يدير المدير الوظائف الأساسية للوحدات أدناه:

  • خطة ذاكرة التخزين المؤقت
  • تحليل البيانات: Buffer ذاكرة التخزين المؤقت وتخزين البيانات
  • الصفحة القذرة

سوف نتعلم الخطة Buffer وذاكرة التخزين المؤقت للبيانات في هذا القسم. سنقوم بتغطية الصفحات القذرة في قسم المعاملات.

Buffer كلمة المدير

خطة ذاكرة التخزين المؤقت

  • خطة الاستعلام الموجودة: يتحقق مدير المخزن المؤقت من وجود خطة التنفيذ في ذاكرة التخزين المؤقت للخطة المخزنة. إذا كانت الإجابة بنعم، فسيتم استخدام ذاكرة التخزين المؤقت لخطة الاستعلام وذاكرة التخزين المؤقت للبيانات المرتبطة بها.
  • خطة التخزين المؤقت لأول مرة: من أين تأتي ذاكرة التخزين المؤقتة للخطة الموجودة؟ إذا تم تشغيل خطة تنفيذ الاستعلام لأول مرة وكانت معقدة، فمن المنطقي تخزينها في ذاكرة التخزين المؤقتة للخطة. سيضمن هذا توفرًا أسرع عندما يتلقى خادم SQL نفس الاستعلام في المرة التالية. لذا، فإن الأمر لا يعدو كونه الاستعلام نفسه الذي يتم تخزين تنفيذ الخطة فيه إذا تم تشغيله لأول مرة.

تحليل البيانات: Buffer ذاكرة التخزين المؤقت وتخزين البيانات

Buffer يوفر المدير الوصول إلى البيانات المطلوبة. فيما يلي طريقتان ممكنتان اعتمادًا على ما إذا كانت البيانات موجودة في ذاكرة التخزين المؤقت للبيانات أم لا:

Buffer ذاكرة التخزين المؤقت - التحليل الناعم:

Buffer ذاكرة التخزين المؤقت - تحليل ناعم

Buffer يبحث المدير عن البيانات في Buffer في ذاكرة التخزين المؤقت للبيانات. إذا كانت موجودة، فسيتم استخدام هذه البيانات بواسطة مُنفِّذ الاستعلام. يؤدي هذا إلى تحسين الأداء حيث يتم تقليل عدد عمليات الإدخال/الإخراج عند جلب البيانات من ذاكرة التخزين المؤقت مقارنة بجلب البيانات من تخزين البيانات.

تخزين البيانات – التحليل الصعب:

تخزين البيانات - التحليل الصعب

إذا لم تكن البيانات موجودة في Buffer يتم البحث عن مدير البيانات المطلوبة في تخزين البيانات. إذا قام أيضًا بتخزين البيانات في ذاكرة التخزين المؤقت للبيانات لاستخدامها في المستقبل.

الصفحة القذرة

يتم تخزينه كمنطق معالجة لإدارة المعاملات. سنتعلم بالتفصيل في قسم مدير المعاملات.

مدير المعاملات

مدير المعاملات

يتم استدعاء إدارة المعاملات عندما تحدد طريقة الوصول أن الاستعلام عبارة عن عبارة غير محددة.

مدير السجل

  • يقوم Log Manager بتتبع كافة التحديثات التي تتم في النظام عبر السجلات الموجودة في سجلات المعاملات.
  • سجلات لديها يسجل الرقم التسلسلي مع معرف المعاملة وسجل تعديل البيانات.
  • يستخدم هذا لتتبع الالتزام بالمعاملة والتراجع عن المعاملة.

مدير القفل

  • أثناء المعاملة، تكون البيانات المرتبطة في مخزن البيانات في حالة القفل. تتم معالجة هذه العملية بواسطة Lock Manager.
  • تضمن هذه العملية اتساق البيانات وعزلها. المعروف أيضا باسم خصائص ACID.

عملية التنفيذ

  • يبدأ Log Manager في التسجيل ويقوم Lock Manager بتأمين البيانات المرتبطة.
  • يتم الاحتفاظ بنسخة البيانات في Buffer مخبأ.
  • يتم الاحتفاظ بنسخة من البيانات المفترض تحديثها في مخزن السجل وتقوم جميع الأحداث بتحديث البيانات في مخزن البيانات.
  • تُعرف الصفحات التي تخزن البيانات أيضًا باسم الصفحات القذرة.
  • نقطة التفتيش وتسجيل الكتابة المسبقة: يتم تشغيل هذه العملية ووضع علامة على كل الصفحة من الصفحات المتسخة إلى القرص، ولكن تظل الصفحة في ذاكرة التخزين المؤقت. التردد حوالي 1 تشغيل في الدقيقة. ولكن يتم دفع الصفحة أولاً إلى صفحة البيانات الخاصة بملف السجل من Buffer سجل. ويعرف هذا باسم كتابة التسجيل المسبق.
  • الكاتب الكسول: يمكن أن تبقى الصفحة القذرة في الذاكرة. عندما يلاحظ خادم SQL حمولة ضخمة و Buffer هناك حاجة إلى الذاكرة لإجراء معاملة جديدة، فهي تحرر الصفحات المتسخة من ذاكرة التخزين المؤقت. وهي تعمل على LRU - أقل الخوارزميات استخدامًا مؤخرًا لتنظيف الصفحة من مجموعة المخازن المؤقتة إلى القرص.

الملخص

  • ثلاثة أنواع من خادم العميل Archiالبنية موجودة: 1) الذاكرة المشتركة 2) TCP/IP 3) الأنابيب المسماة
  • TDS، تم تطويره بواسطة Sybase وهو الآن مملوك لشركة Microsoft، عبارة عن حزمة مغلفة في حزم الشبكة لنقل البيانات من جهاز العميل إلى جهاز الخادم.
  • يحتوي المحرك العلائقي على ثلاثة مكونات رئيسية:محلل CMD: هذا هو المسؤول عن الأخطاء النحوية والدلالية ويقوم في النهاية بإنشاء شجرة استعلام.محسن: يتمثل دور المُحسِّن في العثور على خطة التنفيذ الأرخص، وليس الأفضل، والأكثر فعالية من حيث التكلفة.

    منفذ الاستعلام: يقوم منفذ الاستعلام باستدعاء طريقة الوصول ويوفر خطة تنفيذ لمنطق جلب البيانات المطلوب للتنفيذ.

  • يوجد ثلاثة أنواع من الملفات: الملف الأساسي والملف الثانوي وملفات السجل.
  • محرك التخزين: يحتوي على المكونات المهمة التاليةطريقة الوصول: يحدد هذا المكون ما إذا كان الاستعلام عبارة عن بيان تحديد أو عدم تحديد. يستدعي Buffer ومدير النقل وفقا لذلك.Buffer مدير: Buffer يدير المدير الوظائف الأساسية لذاكرة التخزين المؤقت للخطة وتحليل البيانات والصفحة المتسخة.

    مدير المعاملات: يقوم بإدارة المعاملات غير المحددة بمساعدة مديري السجل والقفل. كما أنه يسهل التنفيذ المهم لتسجيل الدخول للكتابة المسبقة والكتاب الكسالى.