سجلات الاستعلام البطيئة في قاعدة بيانات Azure ل MySQL - خادم مرن

ينطبق على: قاعدة بيانات Azure لـMySQL - خادم مرن

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

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

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

كما يتم تعطيل سجل الاستعلام البطيء بشكل افتراضي. لتمكين تسجيل التدقيق، عين ⁧slow_query_log⁩ معلمة خادم إلى ⁧⁩ON⁧⁩. يمكن تكوين هذا باستخدام مدخل Azure أو Azure CLI.

تتضمن المعلمات الأخرى التي يمكنك ضبطها للتحكم في سلوك تسجيل الاستعلام البطيء ما يلي:

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

هام

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

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

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

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

إشعار

حسابات التخزين Premium غير مَدعومة إذا قمت بإرسال السجلات إلى تخزين Azure عبر التشخيصات والإعدادات

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

الخاصية الوصف
TenantId معرف المستأجر
SourceSystem Azure
TimeGenerated [توقيت عالمي متفق عليه] الطابع الزمني عندما تم تسجيل السجل في UTC
Type نوع الـسجل. دائم AzureDiagnostics
SubscriptionId معرّف فريد للاشتراك الذي ينتمي إليه الخادم
ResourceGroup اسم مجموعة الموارد التي ينتمي إليها الخادم
ResourceProvider اسم موفر المورد. دائم MICROSOFT.DBFORMYSQL
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_s، سوف يتم اقتطاع السجل إذا تجاوز 2048 حرفا.

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

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

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

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

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

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , 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 Resource 
    
  • الرسم البياني لتوزيع الاستعلام البطيء على خادم معين

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

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

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