it-swarm.asia

ما هي إحصائيات قاعدة البيانات وكيف يمكنني الاستفادة منها؟

لقد سمعت ذكر الإحصائيات التي يحتفظ بها SQL Server بشكل افتراضي. ما الذي يتتبعونه ، وكيف يمكنني استخدام هذه المعلومات لتحسين قاعدة بياناتي؟

18
goric

الإحصائيات هي ببساطة شكل من أشكال البيانات الوصفية الديناميكية التي تساعد مُحسِّن الاستعلام على اتخاذ قرارات أفضل. على سبيل المثال ، إذا كان هناك عشرة صفوف فقط في الجدول ، فلا فائدة من الذهاب إلى فهرس لإجراء بحث ؛ ستكون دائمًا أفضل حالًا بإجراء فحص جدول كامل. ولكن إذا نما هذا الجدول نفسه إلى مليون صف ، فربما تكون أفضل حالًا باستخدام الفهرس. ولكن إذا قمت بالاستعلام عن هذا الجدول في عمود يحتوي فقط على عدد قليل جدًا من القيم الفريدة (على سبيل المثال ، قد يكون عمود "الجنس" الذي يحتوي فقط على "M" أو "F") ، فقد يكون FTS أفضل في هذه الحالة لأنك تحتاج إلى استرداد الكتلة على أي حال لبناء مجموعة النتائج. لنفترض الآن أن جدولك هو 99٪ "M" و 1٪ "F" فقط ، يجب علينا FTS في حالة واحدة أو استخدام فهرس في الحالة الأخرى. نفس الجدول ، نفس الاستعلام ، يحتمل أن تكون أربع خطط استعلام مختلفة اعتمادًا على محتويات الجدول. هذه الأنواع من الأشياء هي "الإحصائيات" وهي فردية لكل قاعدة بيانات - حتى قاعدتي بيانات مع جدول متطابق وهيكل فهرس سيكون لهما إحصائيات مختلفة.

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

21
Gaius

وهي مستخدمة بواسطة مُحسِّن الاستعلام (ورقة عمل على MSDN) لتتبع توزيع القيم في الفهارس و/أو الأعمدة.

يجب أن يكون همك فقط هو التحديث بانتظام : فقط اترك محرك DB للقيام بمهامه

5
gbn