سجلات الاستعلام البطيئة في قاعدة بيانات Azure ل MariaDB

هام

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

في قاعدة بيانات Azure ل MariaDB، يتوفر سجل الاستعلام البطيء للمستخدمين. الوصول إلى سجل المعاملات غير مَدعوم. يمكن استخدام سجل الاستعلام البطيء لتحديد اختناقات الأداء لاستكشاف الأخطاء وإصلاحها.

لمزيد من المعلومات حول سجل الاستعلام البطيء، راجع وثائق MariaDB لسجل الاستعلام البطيء.

عند تَمكين Query Store على الخادم، قد ترى الاستعلامات مثل "CALL mysql.az_procedure_collect_wait_stats (900, 30);" التي تم تسجيلها في سجلات الاستعلام البطيئة. من المُتوقع هذا السلوك حيث تجمع ميزة Query Store إحصائيات حول استعلاماتك.

تكوين تـسجيل الاستعلام البطيء

يتم تعطيل سجل الاستعلام البطيء بشكل افتراضي. لتمكينه، قم بتعيين slow_query_log إلى «تشغيل». يُمكن تمكين هذا باستخدام مدخل Microsoft Azure أو Azure CLI.

تتضمن المعلمات الأخرى التي يمكنك ضبطها ما يلي:

  • long_query_time: إذا استغرق الاستعلام وقتا أطول من long_query_time (بالثواني) يتم تسجيل هذا الاستعلام. المهلة الافتراضية هي 10 ثواني.
  • log_slow_admin_statements: إذا كان «التشغيل» يتضمن عبارات إدارية مثل ALTER_TABLE ANALYZE_TABLE في العبارات المكتوبة إلى slow_query_log.
  • log_queries_not_using_indexes: يُحدد ما إذا كان يتم تسجيل الاستعلامات التي لا تستخدم الفهارس إلى slow_query_log
  • log_throttle_queries_not_using_indexes: تُحدد هذه المعلمة عدد الاستعلامات غير الفهرسة التي يمكن كتابتها في سجل الاستعلام البطيء. تَسري هذه المعلمة عند تعيين log_queries_not_using_indexes إلى ON.
  • log_output: إذا كان "ملف"، يسمح بكتابة سجل الاستعلام البطيء إلى كل من تخزين الخادم المَحلي وإلى سجلات تشخيص Azure Monitor. إذا كان "بلا"، فسوف يتم كتابة سجل الاستعلام البطيء فقط إلى سجلات تشخيص Azure Monitor.

هام

إذا لم تتم فهرسة الجداول الخاصة بك، فقد يؤثر تعيين log_queries_not_using_indexes المعلمتين و log_throttle_queries_not_using_indexes إلى ON على أداء MariaDB حيث ستتم كتابة جميع الاستعلامات التي تعمل مقابل هذه الجداول غير المفهرسة إلى سجل الاستعلام البطيء.

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

راجع وثائق سجل الاستعلام البطيء MariaDB للحصول على الأوصاف الكاملة لمعلمات سجل الاستعلام البطيء.

الوصول إلى سِجلات الاستعلام البطيئة

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

بالنسبة لتخزين الخادم المحلي، يُمكنك سرد سجلات الاستعلام البطيئة وتنزيلها باستخدام مدخل Microsoft Azure أو Azure CLI. في مَدخل Microsoft Azure، انتقل إلى الخادم الخاص بك في مدخل Microsoft Azure. ضمن عنوان المراقبة، حدد صفحة سجلات الخادم. لمزيد من المعلومات حول Azure CLI، راجع تكوين سجلات الخادم والوصول إليها باستخدام Azure CLI.

تسمح لك سجلات تشخيص Azure Monitor بتوجيه سجلات الاستعلام البطيئة إلى سجلات Azure Monitor (تحليلات السجل) أو تخزين Azure أو مَراكز الأحداث. انظر أدناه لمزيد من المعلومات.

استبقاء سجل تخزين الخادم المَحلي

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

يتم تدوير السجلات كل 24 ساعة أو 7 GB، أيهما يأتي أولا.

إشعار

لا يَنطبق استبقاء السجل أعلاه على السجلات التي يتم توصيلها باستخدام سجلات تشخيص Azure Monitor. يُمكنك تغيير فترة الاستبقاء لمتلقي البيانات التي يتم إصدارها إلى (على سبيل المثال، Azure Storage).

سجلات التشخيص

تم دمج Azure Database for MariaDB مع سجلات تشخيص Azure Monitor. بمجرد تمكين سجلات الاستعلام البطيئة على خادم MariaDB، يمكنك اختيار إرسالها إلى سجلات Azure Monitor أو مراكز الأحداث أو Azure Storage. لمَعرفة المزيد حول كيفية تمكين سجلات التشخيص، راجع قسم كيفية وثائق سجلات التشخيص.

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

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [توقيت عالمي متفق عليه] الطابع الزمني عندما تم تسجيل السجل في UTC
Type نوع الـسجل. دائم AzureDiagnostics
SubscriptionId معرّف فريد للاشتراك الذي ينتمي إليه الخادم
ResourceGroup اسم مجموعة الموارد التي ينتمي إليها الخادم
ResourceProvider اسم موفر المورد. دائم MICROSOFT.DBFORMARIADB
ResourceType Servers
ResourceId URI للمورد
Resource اسم الـخادم
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s اسم الـخادم
start_time_t [توقيت عالمي متفق عليه] الوقت الذي بدأ فيه الاستعلام
query_time_s إجمالي الوقت الذي استغرقه الاستعلام لتنفيذه
lock_time_s إجمالي الوقت الذي تم فيه تأمين الاستعلام
user_host_s اسم مستخدم
rows_sent_s عَدد الصفوف المرسلة
rows_examined_s عدد الصُفوف التي تم فحصها
last_insert_id_s last_insert_id
insert_id_s إدراج معرّف
sql_text_s الاستعلام الكـامل
server_id_s المعرّف الخاص بالخادم
thread_id_s معرّف مؤشر الترابط
\_ResourceId URI للمورد

إشعار

بالنسبة إلى sql_text، سوف يتم اقتطاع السجل إذا تجاوز 2048 حرفا.

تحليل السجلات في Azure Monitor Logs

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

  • استعلامات أطول من 10 ثواني على خادم معين

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
    | where query_time_d > 10
    
  • سرد أكبر 5 استعلامات أطول على خادم مُعين

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
    | order by query_time_d desc
    | take 5
    
  • تلخيص الاستعلامات البطيئة حَسب الحد الأدنى والحد الأقصى والمتوسط ووقت استعلام الانحراف المعياري على خادم معين

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
    | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
    
  • الرسم البياني لتوزيع الاستعلام البطيء على خادم معين

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
    | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
    | render timechart
    
  • عرض الاستعلامات التي تزيد عن 10 ثوان عبر جميع خوادم MariaDB مع تمكين سجلات التشخيص

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
    | where query_time_d > 10
    

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