مراقبة قاعدة بيانات Azure لأداء MariaDB باستخدام Query Store

هام

قاعدة بيانات Azure ل MariaDB على مسار التقاعد. نوصي بشدة بالترحيل إلى قاعدة بيانات Azure ل MySQL. لمزيد من المعلومات حول الترحيل إلى قاعدة بيانات Azure ل MySQL، راجع ما يحدث لقاعدة بيانات Azure ل MariaDB؟.

ينطبق على: قاعدة بيانات Azure ل MariaDB 10.2

توفر ميزة Query Store في قاعدة بيانات Azure ل Mariadb طريقة لتتبع أداء الاستعلام بمرور الوقت. يعمل مخزن الاستعلام على تبسيط استكشاف أخطاء الأداء وإصلاحها من خلال مساعدتك في العثور بسرعة على أطول الاستعلامات قيد التشغيل وأكثرها استهلاكًا للموارد. يسجل Query Store تلقائياً محفوظات الاستعلامات والخطط وإحصائيات وقت التشغيل، ويحتفظ بها لمراجعتك. يفصل البيانات حسب نوافذ الوقت بحيث يمكنك مشاهدة أنماط استخدام قاعدة البيانات. يتم تخزين البيانات لجميع المستخدمين وقواعد البيانات والاستعلامات في قاعدة بيانات مخطط mysql في قاعدة بيانات Azure لمثيل MariaDB.

تتضمن السيناريوهات الشائعة لاستخدام Query Store ما يلي

يمكن استخدام مخزن الاستعلام في العديد من السيناريوهات، بما في ذلك ما يلي:

  • الكشف عن الاستعلامات المتراجعة
  • تحديد عدد المرات التي تم فيها تنفيذ استعلام في نافذة زمنية معينة
  • مقارنة متوسط وقت تنفيذ استعلام عبر النوافذ الزمنية لرؤية دلتا كبيرة

تمكين مخزن الاستعلام

تعد Query Store ميزة اشتراك، لذلك فهي غير نشطة بشكل افتراضي على الخادم. يتم تمكين المتجر أو تعطيله بشكل عام لجميع قواعد البيانات على خادم معين ولا يمكن تشغيله أو إيقاف تشغيله لكل قاعدة بيانات.

تمكين Query Store باستخدام مدخل Microsoft Azure

  1. سجل الدخول إلى مدخل Microsoft Azure وحدد قاعدة بيانات Azure لخادم MariaDB.
  2. حدد Server Parameters الموجودة في قسم Settings من القائمة.
  3. ابحث عن المعلمة query_store_capture_mode.
  4. تعيين القيمة إلى ALL و Save.

لتمكين إحصائيات الانتظار في Query Store:

  1. ابحث عن المعلمة query_store_wait_sampling_capture_mode.
  2. تعيين القيمة إلى ALL و Save.

السماح لمدة تصل إلى 20 دقيقة للدفعة الأولى من البيانات على الاستمرار في قاعدة بيانات mysql.

المعلومات في Query Store

يحتوي Query Store على متجرين:

  • تخزن إحصائيات وقت التشغيل استمرار معلومات إحصائيات تنفيذ الاستعلام.
  • تخزن إحصائيات الانتظار معلومات إحصائيات الانتظار المستمرة.

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

يقوم الاستعلام التالي بإرجاع معلومات حول الاستعلامات في Query Store:

SELECT * FROM mysql.query_store;

أو هذا الاستعلام عن إحصائيات الانتظار:

SELECT * FROM mysql.query_store_wait_stats;

البحث عن استعلامات الانتظار

إشعار

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

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

فيما يلي بعض الأمثلة حول كيفية الحصول على مزيد من الرؤى حول حمل العمل باستخدام إحصائيات الانتظار في Query Store:

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

خيارات الإعداد

عند تمكين Query Store، فإنه يحفظ البيانات في نوافذ تجميع مدتها 15 دقيقة، ما يصل إلى 500 استعلام مميز لكل نافذة.

تتوفر الخيارات التالية لتكوين معلمات Query Store.

المعلمة‬ الوصف الإعداد الافتراضي نطاق
query_store_capture_mode قم بتشغيل ميزة مخزن الاستعلام ON/OFF استناداً إلى القيمة. إذا كان مخطط الأداء متوقفاً عن التشغيل، فإن تشغيل تخزين قائمة الانتظار يمكن مخطط الأداء ومجموعة فرعية من أدوات مخطط الأداء المطلوبة للميزة. ALL لا شيء، كل
query_store_capture_interval الفاصل الزمني لالتقاط مخزن الاستعلام بالدقائق. يسمح بتحديد الفاصل الزمني الذي يتم فيه تجميع مقاييس الاستعلام 15 5 - 60
query_store_capture_utility_queries تشغيل أو إيقاف التشغيل لالتقاط جميع استعلامات الأداة المساعدة التي يتم تنفيذها في النظام. لا نعم، لا
query_store_retention_period_in_days النافذة الزمنية بالأيام للاحتفاظ بالبيانات في مخزن الاستعلام. 7 1 - 30

تنطبق الخيارات التالية على إحصائيات الانتظار على وجه التحديد.

المعلمة‬ الوصف الإعداد الافتراضي نطاق
query_store_wait_sampling_capture_mode يسمح بتشغيل / إيقاف تشغيل إحصائيات الانتظار. لا لا شيء، كل
query_store_wait_sampling_frequency يغير تكرار أخذ عينات الانتظار في ثوان. من 5 إلى 300 ثانية. 30 5-300

إشعار

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

استخدم مدخل Microsoft Azure للحصول على قيمة مختلفة لمعلمة أو تعيينها.

طرق العرض والوظائف

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

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

mysql.query_store

تقوم طريقة العرض هذه بإرجاع كافة البيانات في Query Store. يوجد صف واحد لكل معرف قاعدة بيانات مميز ومعرف المستخدم ومعرف الاستعلام.

الاسم نوع البيانات IS_NULLABLE الوصف
schema_name varchar (64) لا اسم المخطط
query_id bigint(20) لا معرف فريد تم إنشاؤه للاستعلام المحدد، إذا تم تنفيذ نفس الاستعلام في مخطط مختلف، فسيتم إنشاء معرف جديد
timestamp_id الطابع الزمني لا الطابع الزمني الذي يتم فيه تنفيذ الاستعلام. يستند هذا إلى تكوين query_store_interval
query_digest_text Longtext لا نص الاستعلام الذي تمت تسويته بعد إزالة كافة القيم الحرفية
query_sample_text Longtext لا أول ظهور للاستعلام الفعلي مع القيم الحرفية
query_digest_truncated بت نعم ما إذا كان قد تم اقتطاع نص الاستعلام أم لا. ستكون القيمة نعم إذا كان الاستعلام أطول من 1 كيلوبايت
execution_count bigint(20) لا عدد المرات التي تم فيها تنفيذ الاستعلام لمعرف الطابع الزمني هذا / أثناء فترة الفاصل الزمني المكونة
warning_count bigint(20) لا عدد التحذيرات التي تم إنشاؤها من خلال هذا الاستعلام الداخلي
error_count bigint(20) لا عدد الأخطاء التي تم إنشاؤها في هذا الاستعلام أثناء الفاصل الزمني
sum_timer_wait مزدوج نعم إجمالي وقت تنفيذ هذا الاستعلام أثناء الفاصل الزمني
avg_timer_wait مزدوج نعم متوسط وقت التنفيذ لهذا الاستعلام أثناء الفترة الزمنية
min_timer_wait مزدوج نعم الحد الأدنى لوقت التنفيذ لهذا الاستعلام
max_timer_wait مزدوج نعم الحد الأقصى لوقت التنفيذ
sum_lock_time bigint(20) لا إجمالي مقدار الوقت المستغرق لجميع عمليات التأمين لتنفيذ هذا الاستعلام أثناء هذه النافذة الزمنية
sum_rows_affected bigint(20) لا عدد الصفوف المتأثرة بالاستعلام
sum_rows_sent bigint(20) لا عدد الصفوف المرسلة إلى العميل
sum_rows_examined bigint(20) لا عدد الصُفوف التي تم فحصها
sum_select_full_join bigint(20) لا عدد الصلات الكاملة
sum_select_scan bigint(20) لا عدد عمليات الفحص المحددة
sum_sort_rows bigint(20) لا عدد الصفوف التي تم فرزها
sum_no_index_used bigint(20) لا عدد المرات التي لم يستخدم فيها الاستعلام أي فهارس
sum_no_good_index_used bigint(20) لا عدد المرات التي لم يستخدم فيها محرك تنفيذ الاستعلام أي فهارس جيدة
sum_created_tmp_tables bigint(20) لا إجمالي عدد الجداول المؤقتة التي تم إنشاؤها
sum_created_tmp_disk_tables bigint(20) لا إجمالي عدد الجداول المؤقتة التي تم إنشاؤها في القرص (ينشئ الإدخال/الإخراج)
first_seen الطابع الزمني لا التكرار الأول (UTC) للاستعلام أثناء نافذة التجميع
last_seen الطابع الزمني لا آخر تكرار (UTC) الاستعلام أثناء إطار التجميع هذا

mysql.query_store_wait_stats

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

الاسم نوع البيانات IS_NULLABLE الوصف
interval_start الطابع الزمني لا بداية الفاصل الزمني (زيادة 15 دقيقة)
interval_end الطابع الزمني لا نهاية الفاصل الزمني (زيادة 15 دقيقة)
query_id bigint(20) لا معرف فريد تم إنشاؤه على الاستعلام الذي تمت تسويته (من مخزن الاستعلام)
query_digest_id varchar (32) لا نص الاستعلام الذي تم تسويته بعد إزالة كافة القيم الحرفية (من مخزن الاستعلام)
query_digest_text Longtext لا أول ظهور للاستعلام الفعلي مع القيم الحرفية (من مخزن الاستعلام)
event_type varchar (32) لا فئة حدث الانتظار
event_name varchar (128) لا اسم حدث الانتظار
count_star bigint(20) لا عدد أحداث الانتظار التي تم أخذ عينات منها أثناء الفاصل الزمني للاستعلام
sum_timer_wait_ms مزدوج لا إجمالي وقت الانتظار (بالمللي ثانية) من هذا الاستعلام أثناء الفاصل الزمني

الوظائف

الاسم الوصف
mysql.az_purge_querystore_data(TIMESTAMP) إزالة كافة بيانات مخزن الاستعلام قبل الطابع الزمني المحدد
mysql.az_procedure_purge_querystore_event(TIMESTAMP) إزالة جميع بيانات حدث الانتظار قبل الطابع الزمني المحدد
mysql.az_procedure_purge_recommendation(TIMESTAMP) إزالة التوصيات التي يكون انتهاء صلاحيتها قبل الطابع الزمني المحدد

القيود والمشاكل المعروفة

  • إذا كان خادم MariaDB يحتوي على المعلمة default_transaction_read_only قيد التشغيل، فلن يتمكن Query Store من التقاط البيانات.
  • يمكن مقاطعة وظيفة مخزن الاستعلام إذا واجهت استعلامات Unicode طويلة (>= 6000 بايت).
  • فترة الاستبقاء لإحصائيات الانتظار هي 24 ساعة.
  • تستخدم إحصائيات الانتظار نموذج ti التقاط جزء صغير من الأحداث. يمكن تعديل التردد باستخدام المعلمة query_store_wait_sampling_frequency.
  • مخزن الاستعلام غير معتمد للإصدار 10.3.

الخطوات التالية