أداة تحليل أفضل الممارسات لـ Microsoft SQL Server 2000 هي أداة لإدارة قواعد البيانات تم تطويرها بواسطة فريق تطوير Microsoft SQL Server والتي تسمح لك باكتشاف ما إذا كانت قاعدة البيانات المصممة تتبع إرشادات أفضل الممارسات لتشغيل SQL Server وإدارته. تم التعرف على هذه الإرشادات للمساعدة في تحسين أداء قاعدة البيانات وكفاءتها وتسهيل صيانة التطبيقات.
2. ابدأ في استخدام محلل أفضل ممارسات SQL BPA
بعد اكتمال التثبيت، سيكون هناك مستند Word لدليل مستخدم SQL Server Best Practices Analyzer الموضح بوضوح. الخطوات الأساسية هي كما يلي:
(1) السجل في SQL BPA
(2) إضافة تحليل/مثيل SQL Server الذي تم اكتشافه
تحتاج إلى إدخال اسم مثيل SQL Server هنا يُستخدم للارتباط بمجموعة أفضل الممارسات التي تم إنشاؤها لاحقًا (فقط احتفظ به بنفس اسم مثيل SQL Server ). القيمة الافتراضية لقائمة قواعد البيانات هي *، مما يعني أنها تحتوي على كافة قواعد البيانات الخاصة بمثيل SQL Server الحالي. ومع ذلك، ستتخطى BPA اكتشاف قواعد البيانات مثل 'master'، و'tempdb'، و'msdb'، و'pubs'، و'northwind'.
(3) لإدارة مجموعات أفضل الممارسات،
تحتاج أولاً إلى إنشاء مجموعة أفضل الممارسات، والتي تجمع في الواقع بعض القواعد وتربطها بمثيل SQL Server الذي تم إدخاله مسبقًا.
(4) قم بتحليل مثيل SQL Server
وانقل مجموعة أفضل الممارسات التي تم إنشاؤها مسبقًا إلى قائمة مجموعات أفضل الممارسات المطلوب تنفيذها، بحيث يمكن تنفيذها وفقًا للقواعد المحددة مسبقًا وإنشاء تقرير لتقديم اقتراحات وإرشادات للتحسين.
3. أعتقد أن القواعد المضمنة في SQL BPA v1.0
هي النقطة الأساسية، لأنه فقط من خلال فهم إرشادات أفضل الممارسات لتشغيل SQL Server وإدارته، يمكننا محاولة اتباع هذه القواعد عند تصميم قواعد البيانات وكتابة البرامج النصية T-SQL. تحسين أداء وكفاءة SQL Server والتطبيقات.
في الواقع، جميع القواعد موجودة هنا (النسخة الإنجليزية) file:///C:/Program%20Files/Microsoft%20SQL%20Server%20Best%20Practices%20Analyzer/html/RuleInformation.html#_Rule:_Explicit_Index_Creation يرجى ملاحظة أنني استخدم SQL BPA مثبتًا في المسار الافتراضي إذا قمت بتغيير مسار التثبيت، فلن يكون موجودًا هنا.
فيما يلي بعض القواعد التي أهتم بها:
(1)
قواعد تصميم قاعدة البيانات: الجداول التي لا تحتوي على مفاتيح أساسية أو قيود فريدة
تحقق من قاعدة البيانات للتأكد من أن جميع الجداول تحتوي على مفتاح أساسي محدد أو أن العمود يحتوي على قيد فريد محدد.
القاعدة: تقوم تسمية كائنات المستخدم (تسمية كائنات المستخدم)
بالكشف عن كائنات المستخدم المسماة بالبادئة sp_ أو xp_ أو fn_ لتجنب تعارض الأسماء مع الكائنات المضمنة في SQL Server. إذا اكتشف SQL Server أن الإجراء المخزن مسبوق بـ sp_، فسيقوم أولاً بالاستعلام عن الإجراء المخزن في قاعدة البيانات الرئيسية، مما يؤثر على الأداء.
لذلك، يجب اتباع الإرشادات التالية:
لا تستخدم البادئة sp_ لتسمية الإجراءات المخزنة المعرفة من قبل المستخدم؛
لا تستخدم البادئة xp_ لتسمية الإجراءات المخزنة الموسعة المعرفة.
لا تستخدم البادئة fn_ لتسمية الوظائف المعرفة من قبل المستخدم .
في الواقع، يمكنك تسميته باستخدام البادئات مثل usp_، أو uxp_، أو ufn_، وتعني u المعرفة من قبل المستخدم.
(2)
قاعدة T-SQL: تكتشف قائمة أعمدة المؤشر للتحديث
عبارة FOR UPDATE في الإجراءات والوظائف وطرق العرض والمشغلات المخزنة. عندما يقوم المؤشر بتعريف عبارة FOR UPDATE، فمن المستحسن توفير أعمدة أعمدة صريحة. يُستخدم FOR UPDATE لتحديد الأعمدة القابلة للتحديث في المؤشر. إذا تم توفير OF column_name، يُسمح بتعديل الأعمدة المدرجة فقط. إذا لم يتم تحديد قائمة أعمدة، فيمكن تحديث كافة الأعمدة ما لم يتم تحديد خيار التزامن READ_ONLY. يمكن لـ SQL Server تحسين العمليات بناءً على أعمدة محددة.
القاعدة:
يتحقق استخدام المؤشر مما إذا كانت إمكانية تحديث المؤشر محددة بشكل صحيح في الإجراءات والوظائف وطرق العرض والمشغلات المخزنة. سيتم الإبلاغ عن الفشل في المواقف التالية:
عندما لا يقوم المؤشر بتعريف عبارة FOR UPDATE، ولكن يتم تحديثه من خلال المؤشر؛
عندما يقوم المؤشر بتعريف عبارة FOR UPDATE، ولكن لا يتم تحديثه من خلال المؤشر.
ومع ذلك، نحاول عمومًا تجنب استخدام المؤشر من جانب الخادم، لأنه يستهلك موارد ذاكرة الخادم ويؤثر على أداء SQL Server. يمكن استخدام الاستعلامات المتداخلة أو عبارات WHILE بدلاً من المؤشر. حتى لو كنت تستخدم المؤشر، يجب عليك الانتباه إلى تحديد بعض خيارات المؤشر، مثل FAST_FORWARD.
القاعدة: إنشاء فهرس صريح
يوصى باستخدام CLUSTERED أو NONCLUSTERED لإنشاء الفهرس بشكل صريح.
القاعدة:
تتطلب قائمة أعمدة INSERT أنه عند استخدام INSERT، يجب توفير قائمة الأعمدة بشكل صريح لتحسين إمكانية صيانة التعليمات البرمجية.
القاعدة: يكتشف تكوين المشغلات المتداخلة
المشغلات التي لم يتم تشغيلها بسبب مشكلات التكوين المتعلقة بالمشغلات المتداخلة. هذا نادر نسبيًا، لذا قمت بنشره مباشرةً.
عند تعيين خيار التكوين "المشغلات المتداخلة" على 0، لا يتم تشغيل أي مشغل بعد محدد في الجداول/طرق العرض المحدثة داخل المشغل بدلاً من هذه القاعدة:
1) التحقق من قيمة خيار التكوين والخروج إذا لم تكن 0.
2) يقوم بمسح جميع المشغلات بدلاً من ذلك ويقوم بإنشاء قائمة بالجداول/طريقة العرض التي تستهدف DML من داخل المشغل.
3) يتحقق مما إذا كان أي من أهداف DML المحددة يحتوي على مشغلات بعد تحديدها
4) تقارير عن عدم الامتثال لأي من هذه المشغلات قضية.
القاعدة: يكتشف خيار NOCOUNT في المشغلات المشغلات
ويضمن كتابة SET NOCOUNT ON أمام المشغلات.
سيرسل SQL Server رسالة "تم" بعد تنفيذ كل عبارة. يمكن أن تتسبب هذه المعلومات في حدوث بعض العواقب غير المقصودة للتطبيق الذي يقوم بتشغيل المشغل. ولذلك، فمن عادة التصميم الجيدة إضافة SET NOCOUNT ON أمام الزناد.
بالطبع، يوصى بإضافة SET NOCOUNT ON أمام الإجراءات والوظائف المخزنة. بهذه الطريقة، لن يتم إرسال عدد الصفوف المتأثرة بتنفيذ سلسلة من أوامر SQL مرة أخرى إلى العميل، مما يقلل من حركة مرور الشبكة ويحسن الأداء.
القاعدة:
تكتشف مقارنات NULL مقارنات المساواة أو عدم المساواة التي تتضمن ثوابت NULL في الإجراءات والوظائف وطرق العرض والمشغلات المخزنة. من المستحسن ضبط ANSI_NULLS على ON واستخدام الكلمة الأساسية IS لمقارنة الثوابت NULL.
القاعدة: النتائج في المشغلات
تتحقق من المشغلات للتأكد من أن المشغلات لا تحتوي على أي بيانات يتم إرجاعها إلى المتصل. لذلك، لا يوصى باستخدام العبارات التالية في المشغلات:
عبارة PRINT
SELECT (بدون مهمة أو جملة INTO)
FETCH (بدون مهمة)
القاعدة: يقوم تحديد نطاق المعاملات
بالكشف عن نطاق المعاملات في الإجراءات المخزنة والمشغلات، ومن المستحسن أن تكون بداية المعاملة ونهايتها ضمن نفس بنية T-SQL.
بشكل عام، حاول تضييق نطاق المعاملة قدر الإمكان لتجنب استهلاك الكثير من الموارد والتأثير على أداء SQL Server.
القاعدة: SELECT *
يكتشف استخدام SELECT * في الإجراءات والوظائف وطرق العرض والمشغلات المخزنة. على الرغم من أن SELECT * أكثر ملاءمة، إلا أنه سيقلل من قابلية صيانة البرنامج. قد تؤدي التغييرات التي يتم إجراؤها على الجدول أو طريقة العرض إلى حدوث أخطاء أو تغييرات في الأداء.
لذلك، يوصى بتحديد قائمة الحقول بشكل صريح بعد عبارة SELECT.
القاعدة:
تكتشف SET Options استخدام عبارات SET التالية في الإجراءات المخزنة والمشغلات.
يوصى بضبط الخيارات التالية على ON:
ANSI_NULLS
ANSI_PADDING
ANSI_WARNINGS
أريثابورت
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER
بضبط الخيارات التالية على OFF:
NUMERIC_ROUNDABOUT
القاعدة: يكتشف استخدام الجدول المؤقت
استخدام الجداول المؤقتة في الإجراءات والمشغلات المخزنة. عند إنشاء جدول مؤقت، يجب إنشاء CREATE INDEX، وبعد اكتمال الاستخدام، يجب تحرير الجدول المؤقت.
نظرًا لأن الجداول المؤقتة ستنشئ عددًا كبيرًا من عمليات الإدخال/الإخراج على القرص، فمن المستحسن استخدام متغيرات TABLE لتحل محل استخدام الجداول المؤقتة.
ومع ذلك، نظرًا للقيود المفروضة على التنفيذ المتزامن وصيانة المعلومات الإحصائية، لا يزال يوصى باستخدام الجداول المؤقتة عند إدراج كمية كبيرة من البيانات في الجداول المؤقتة.
القاعدة:
يكتشف TOP بدون ORDER BY نقص عبارات ORDER BY TOP في الإجراءات والوظائف وطرق العرض والمشغلات المخزنة. عند استخدام عبارة TOP، يوصى بتحديد شروط الفرز. وبخلاف ذلك، ستعتمد النتائج المنتجة على خطة تنفيذ SQL وستؤدي إلى سلوك غير متوقع.
القاعدة: يكشف استخدام الجداول/طرق العرض المؤهلة للمخطط
ما إذا كان المالك محددًا عند الإشارة إلى الجداول وطرق العرض في الإجراءات والوظائف وطرق العرض والمشغلات المخزنة. على الرغم من أنه عند الإشارة إلى كائن معين في SQL Server، فإنك لا تحتاج إلى تحديد الخادم وقاعدة البيانات والمالك (المخطط)، مما يعني أنك لا تحتاج إلى عناء server_name.database_name.owner_name.***، لكن SQL Server يوصي بذلك يتم استخدامه في الإجراء المخزن أو الوظيفة. عند الرجوع إلى جدول أو طريقة عرض في طريقة عرض أو مشغل، من الأفضل تحديد مالك الجدول أو طريقة العرض.
عندما يقوم SQL Server بالاستعلام عن كائن جدول/عرض بدون مالك محدد، فإنه يستعلم أولاً عن المالك الافتراضي، ثم dbo. سيؤدي هذا إلى تكاليف تشغيل إضافية لمنتج SQL Server. من خلال تحديد المالك، يمكنك تحسين أداء SQL Server. (أول مرة أسمع بهذا التصريح)
4. عنوان URL لتنزيل المستندات المرجعية
وأدوات الموارد ذات الصلة:
عنوان URL لتنزيل الفيديو: