it-swarm.asia

كيفية تحديد ما إذا كان الفهرس مطلوبًا أو ضروريًا

لقد قمت بتشغيل أداة الفهرس التلقائي على قاعدة بيانات MS SQL الخاصة بنا (لقد قمت بتعديل نص برمجي نشأ من Microsoft والذي ينظر إلى جداول إحصائيات الفهرس - الفهرسة التلقائية التلقائية ). من الإحصائيات ، لدي الآن قائمة توصيات للفهارس التي تحتاج إلى إنشاء.

تحرير: الفهارس الموصوفة أعلاه تأخذ معلومات من DMV التي تخبرك بما سيستخدمه مشغل قاعدة البيانات للفهارس إذا كانت متوفرة و تأخذ النصوص أعلى توصيات x (من خلال البحث ، وتأثير المستخدم وما إلى ذلك) ووضعها في جدول.

(تعديل أعلاه مأخوذ جزئيًا من إجابة لاري كولمان أدناه لتوضيح ما تفعله النصوص)

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

هل أحتاج إلى تشغيل منشئ ملفات تعريف SQL ، أم من الأفضل فحص التعليمات البرمجية التي تستعلم الجداول؟ وهل لديك نصيحة أخرى؟

112
misterjaytee

يمكنني استخدام مخطوطات تحليل فهرس Jason Strate (الموقع القديم) . يخبركون بمقدار استخدام الفهارس الموجودة لديك وكذلك مقدار الفهارس المفقودة التي كان سيتم استخدامها. عادةً لا أقوم بإضافة الفهارس ما لم تشكل أكثر من 5 أو 10٪ من الاستعلامات على جدول.

الأهم من ذلك ، أنه يتعلق بالتأكد من أن التطبيق يستجيب بسرعة كافية للمستخدمين.

التحديث: مقالات مدونة تحليل فهرس Jason Strate للنصوص الجديدة (موقع جديد)

التحديث المزدوج: هذه الأيام ، أستخدم sp_BlitzIndex® عند إجراء تحليل الفهرس.

81
Jeremiah Peschka

هناك بعض المفاهيم والمصطلحات المهمة التي يجب فهمها عند التعامل مع الفهارس. البحث والمسح وعمليات البحث هي بعض الطرق التي سيتم بها استخدام الفهارس من خلال عبارات محددة. تعتبر انتقائية الأعمدة الرئيسية جزءًا لا يتجزأ من تحديد مدى فعالية المؤشر.

يحدث البحث عندما يقرر مُحسِّن استعلام SQL Server أن أفضل طريقة للعثور على البيانات التي طلبتها هي عن طريق فحص نطاق داخل فهرس. عادةً ما يتم البحث عند "تغطية" الاستعلام بفهرس ، مما يعني أن المسندات المطلوبة موجودة في مفتاح الفهرس والأعمدة المعروضة إما في المفتاح أو مضمنة. يحدث المسح عندما يقرر مُحسِّن استعلام SQL Server أن أفضل طريقة للعثور على البيانات هي مسح الفهرس بأكمله ثم تصفية النتائج. يحدث البحث عادةً عندما لا يتضمن الفهرس جميع الأعمدة المطلوبة ، سواء في مفتاح الفهرس أو في الأعمدة المضمنة. سيستخدم محسّن الاستعلام بعد ذلك إما مفتاح المجموعة (مقابل فهرس مجمع) أو RID (مقابل كومة) "للبحث" عن الأعمدة المطلوبة الأخرى.

عادةً ما تكون عمليات البحث أكثر كفاءة من عمليات المسح ، وذلك بسبب الاستعلام المادي عن مجموعة بيانات أصغر. هناك حالات لا تكون فيها هذه هي الحالة ، مثل مجموعة بيانات أولية صغيرة جدًا ، لكن ذلك يتجاوز نطاق سؤالك.

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

لتحديد مدى فعالية المؤشر ، يجب عليك تحديد انتقائية مفاتيح الفهرس. يمكن تعريف الانتقائية كنسبة مئوية من السجلات المميزة لإجمالي السجلات. إذا كان لدي جدول [شخص] يحتوي على 100 سجل إجمالي وكان عمود [first_name] يحتوي على 90 قيمة مميزة ، فيمكننا القول أن عمود [first_name] انتقائي بنسبة 90٪. كلما زادت الانتقائية ، زاد فعالية مفتاح الفهرس. مع الأخذ في الاعتبار الانتقائية ، من الأفضل وضع أعمدتك الأكثر انتقائية أولاً في مفتاح الفهرس الخاص بك. باستخدام مثال [الشخص] السابق ، ماذا لو كان لدينا عمود [last_name] انتقائي بنسبة 95٪؟ نرغب في إنشاء فهرس باستخدام [last_name] ، [first_name] كمفتاح الفهرس.

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

51
Matt M

لقد اكتشفت مؤخرًا نصًا مجانيًا رائعًا من الأشخاص في BrentOzar Unltd http://www.brentozar.com/blitzindex/

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

التوجيه جيد بشكل عام. في بعض الأحيان يكون الأمر أكثر مما يوحي بالأفكار. بشكل عام ، قمت بما يلي حتى الآن:

  • الفهارس المحذوفة التي لم تتم قراءتها مطلقًا (أو ربما أقل من 50 مرة في الشهر).
  • تمت إضافة أكثر الفهارس وضوحًا على المفاتيح والحقول الأجنبية التي أعلم أننا نستخدمها كثيرًا.

لم أضيف جميع الفهارس الموصى بها ، وعدت بعد ذلك بأسبوع لأجد أنها لم تعد موصى بها لأن محرك الاستعلام يستخدم بعض الفهارس الجديدة الأخرى بدلاً من ذلك!

بشكل عام يجب تجنب الفهارس على:

  • جداول صغيرة جدًا (أقل من 50 إلى 200 سجل): غالبًا ما يكون محرك الاستعلام أسرع إذا كان يقوم بمسح الجدول بدلاً من تحميل الفهرس وقراءته ومعالجته وما إلى ذلك.
  • تجنب الفهارس على الأعمدة ذات الأصالة المنخفضة ( http://en.wikipedia.org/wiki/Cardinality_ (SQL_statements) ) في العمود الأول المذكور. على سبيل المثال إن فهرسة حقل الجنس (M/F) غير ذي فائدة تذكر ، من العملي للغاية مسح الجدول والعثور على ~ 50٪ التي تتطابق. إذا كان مدرجًا بعد شيء أكثر تحديدًا في الفهرس (على سبيل المثال [تاريخ الميلاد ، الجنس]) فهذا أفضل - قد ترغب في أن يولد جميع الذكور في فترة زمنية معينة.

تعد المؤشرات المجمعة أمرًا جيدًا - عادةً ما تستند إلى مفتاحك الأساسي. وهي تساعد محرك قاعدة البيانات على وضع البيانات على القرص في حالة جيدة. من الضروري جدًا فهم هذا الأمر بالنسبة للجداول الأكبر ، حيث إن مؤشر التكتل الجيد يقلل غالبًا من المساحة التي يشغلها الجدول.

لقد قمت بتخفيض بعض الجداول من 900 ميجابايت إلى 400 ميجابايت ، لمجرد أنها كانت أكوامًا غير مبنية مسبقًا. http://msdn.Microsoft.com/en-us/library/aa933131 (v = sql.80) .aspx

إعادة التنظيم/إعادة البناء

يجب أن تبحث للتحقق من الفهارس المجزأة. قليل من التجزئة لا بأس به ، لا تهتم! http://technet.Microsoft.com/en-us/library/ms189858.aspx اعرف الفرق بين إعادة التنظيم وإعادة البناء!

مراجعة بانتظام

تتغير الاستعلامات ، تتغير أحجام البيانات ، تتم إضافة ميزات جديدة ، تتم إزالة الميزات القديمة. يجب أن تنظر إليها مرة واحدة في الشهر (أو في كثير من الأحيان إذا كان لديك كميات كبيرة) وتبحث عن المكان الذي يمكنك فيه مساعدة قاعدة البيانات على الخروج!

كم العدد

في مقطع فيديو حديث ، يوصي برنت (عادةً) بعدم وجود أكثر من 5 فهارس على طاولة بها الكثير من الكتابة (مثل جدول الطلبات) ، ولا يزيد عن 10 إذا تمت قراءتها أكثر من المكتوبة (أي جدول تسجيل التحليلات) http://www.youtube.com/watch؟v=gOsflkQkHjg

شاملة

هذا يعتمد!

تختلف المسافة المقطوعة وفقًا لقاعدة البيانات. قم بتغطية الاسم الواضح (اسم الموظف ، تاريخ الطلب ، إلخ) في جداولك الأكبر (الآن/المستقبلية). المراقبة والمراجعة والضبط حسب الضرورة. يجب أن يكون جزءًا من قائمة المراجعة الروتينية عند إدارة قاعدة البيانات (قواعد البيانات) :)

أتمنى أن يساعدك هذا!

29
Greg Robson

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

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

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

الإجابة الأكثر اصطناعية هي النظر إلى sys.dm_db_index_usage_stats شاهد ونرى كيف يتم استخدام المؤشرات ، ولكن هذا عادة ما يكون نهجًا لإجراء تحليل في الموقع على عبء عمل غير معروف (على سبيل المثال ، من المحتمل أن يبدأ مستشار يطلب المساعدة بهذا).

14
Remus Rusanu

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

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

انظر أيضًا: مستندات MS DMV الرسمية

8
Larry Coleman