معلمات الخادم في قاعدة البيانات الخاصة بـ Azure لـ MySQL

تُطبق على: قاعدة بيانات Azure للخادم الوحيد الخاص بـ MySQL

هام

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

توفر هذه المقالة اعتبارات وإرشادات لتكوين معلمات الخادم في قاعدة البيانات الخاصة بـ Azure لـ MySQL.

ما هي المعلمات المتعلقة بالخادم؟

يوفر محرك MySQL العديد من متغيرات الخادم المختلفة والمعلمات التي تستخدمها لتكوين وضبط سلوك المحرك . يمكن تعيين بعض المعلمات ديناميكيًا أثناء وقت التشغيل، في حين أن البعض الآخر ثابت، ويتطلب إعادة تشغيل الخادم من أجل التطبيق.

تكشف قاعدة البيانات الخاصة بـ Azure لـ MySQL القدرة على تغيير قيمة معلمات خادم MySQL المتنوعة باستخدام مدخل Azure وAzure CLI و PowerShell لمطابقة احتياجات حمل العمل الخاصة بك.

معلمات الخادم القابلة للتكوين

قائمة معلمات الخادم المدعومة تتزايد باستمرار. في بوابة Azure، استخدم علامة تبويب معلمات الخادم لعرض القائمة الكاملة وتكوين قيم معلمات الخادم.

راجع الأقسام التالية لمعرفة المزيد حول حدود العديد من معلمات الخادم التي تُحدث بشكل شائع. يتم تحديد الحدود حسب فئة التسعير و vCores للخادم.

التجمعات المتعلقة بمؤشرات الترابط

تقوم MySQL تقليديًا بتعيين مؤشر ترابط لكل اتصال عميل. مع زيادة عدد المستخدمين المتزامنين، هناك انخفاض مطابق في الأداء. يمكن أن تؤثر العديد من مؤشرات الترابط النشطة على الأداء بشكل كبير، وذلك بسبب زيادة تبديل السياق منافسة على الاتصال فيما يتعلق بمؤشر الترابط والمواقع غير الصحيحة لذاكرة التخزين المؤقت لـ CPU.

تعمل تجمعات مؤشرات الترابط، وهي ميزة من جانب الخادم ومتميزة عن تجميع الاتصال، على زيادة الأداء إلى الحد الأقصى من خلال تقديم مجموعة ديناميكية من مؤشرات ترابط العاملين. يمكنك استخدام هذه الميزة للحد من عدد مؤشرات الترابط النشطة التي يتم تشغيلها على الخادم وتقليل فقدان مؤشرات الترابط. يساعد هذا في التأكد من أن اندفاع الاتصالات لا يتسبب في نفاد الموارد أو الذاكرة للخادم. تعد تجمعات مؤشرات الترابط أكثر فاعلية للاستعلامات القصيرة وأحمال العمل المكثفة لـ CPU، مثل أحمال عمل OLTP.

لمزيد من المعلومات، راجع تقديم تجمعات مؤشرات الترابط في قاعدة البيانات الخاصة بـ Azure لـ MySQL.

إشعار

لا يتم دعم مجمعات مؤشرات الترابط لـ MySQL 5.6.

التكوين الخاص بتجمع مؤشر الترابط

لتمكين تجمع مؤشرات الترابط، قم بتحديث thread_handlingمعلمة الخادم إلى.pool-of-threads بشكل افتراضي، يتم ضبط هذه المعلمة إلى one-thread-per-connection، مما يعني أن MySQL ينشئ مؤشر ترابط جديد لكل اتصال جديد. هذه معلمة ثابتة، وتتطلب إعادة تشغيل الخادم للتطبيق.

يمكنك أيضًا تكوين الحد الأقصى والحد الأدنى لعدد مؤشرات التراب طفي التجمع من خلال تعيين معلمات الخادم التالية:

  • thread_pool_max_threads: تحد هذه القيمة من عدد مؤشرات الترابط في التجمع.
  • thread_pool_min_threads: تحدد هذه القيمة عدد مؤشرات الترابط المحجوزة، حتى بعد إغلاق الاتصالات.

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

ثم يصبح بإمكانك تحديد سلوك تنفيذ الدفعة باستخدام معلمات الخادم التالية:

  • thread_pool_batch_wait_timeout: : تحدد هذه القيمة الوقت الذي ينتظره مؤشر الترابط حتى تتم معالجة استعلام آخر.
  • thread_pool_batch_max_time: تحدد هذه القيمة الحد الأقصى للوقت الذي يكرر فيه مؤشر الترابط دورة تنفيذ الاستعلام وانتظار الاستعلام التالي.

هام

لا تقم بتشغيل تجمع مؤشر الترابط في الإنتاج حتى تختبرها.

log_bin_trust_function_creators

في قاعدة البيانات الخاصة بـ Azure لـ MySQL، يتم دائمًا تمكين السجلات الثنائية (يتمlog_bin ضبط المعلمة إلى ON). إذا كنت ترغب في استخدام المشغلات، فستتلقى خطأ مشابها للخطأ التالي: ليس لديك امتياز SUPER ويتم تمكين التسجيل الثنائي (قد ترغب في استخدام المتغير الأقل أمانا log_bin_trust_function_creators ).

دائمًا ما يكون تنسيق التسجيل الثنائي هو ROW ، وكافة الاتصالات بالخادم تستخدم دائمًا التسجيل الثنائي المستند إلى السجل. يساعد التسجيل الثنائي المستند إلى السجل في الحفاظ على الأمان، ولا يمكن قطع التسجيل الثنائي، لذلك يمكنك الضبط log_bin_trust_function_creatorsبأمانTRUE.

innodb_buffer_pool_size

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

خوادم التخزين للأغراض العامة v1 (تدعم حتى 4 تيرابايت)

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) أقصى قيمة (بايت)
أساسي 1 872415232 134217728 872415232
أساسي 2 2684354560 134217728 2684354560
General Purpose 2 3758096384 134217728 3758096384
General Purpose 4 8053063680 134217728 8053063680
General Purpose 8 16106127360 134217728 16106127360
General Purpose 16 32749125632 134217728 32749125632
General Purpose 32 66035122176 134217728 66035122176
General Purpose 64 132070244352 134217728 132070244352
مُحسّن للذاكرة 2 7516192768 134217728 7516192768
مُحسّن للذاكرة 4 16106127360 134217728 16106127360
مُحسّن للذاكرة 8 32212254720 134217728 32212254720
مُحسّن للذاكرة 16 65498251264 134217728 65498251264
مُحسّن للذاكرة 32 132070244352 134217728 132070244352

خوادم التخزين للأغراض العامة v2 (تدعم حتى 16 تيرابايت)

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) أقصى قيمة (بايت)
أساسي 1 872415232 134217728 872415232
أساسي 2 2684354560 134217728 2684354560
General Purpose 2 7516192768 134217728 7516192768
General Purpose 4 16106127360 134217728 16106127360
General Purpose 8 32212254720 134217728 32212254720
General Purpose 16 65498251264 134217728 65498251264
General Purpose 32 132070244352 134217728 132070244352
General Purpose 64 264140488704 134217728 264140488704
مُحسّن للذاكرة 2 15032385536 134217728 15032385536
مُحسّن للذاكرة 4 32212254720 134217728 32212254720
مُحسّن للذاكرة 8 64424509440 134217728 64424509440
مُحسّن للذاكرة 16 130996502528 134217728 130996502528
مُحسّن للذاكرة 32 264140488704 134217728 264140488704

innodb_file_per_table

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

ويصبح بإمكانك التحكم في هذا السلوك باستخدام innodb_file_per_tableمعلمة الخادم. يؤدي innodb_file_per_tableالضبط إلىOFF إنشاء جداولInnoDB في مساحة جداول النظام. بخلاف ذلك ، InnoDBيتم إنشاء جداول في مساحات جداول ملف لكل جدول.

إشعار

يمكنك فقط تحديثinnodb_file_per_table مستويات التسعير للأغراض العامة والذاكرة المحسّنة على التخزين للأغراض العامة v2 والتخزين للأغراض العامة v1.

تدعم قاعدة البيانات الخاصة بـ Azure لـ MySQL 4 تيرابايت (كحد أقصى) في ملف بيانات واحد على مساحة تخزين للأغراض العامة الإصدار 2. إذا كان حجم قاعدة البيانات الخاصة بك أكبر من 4 تيرابايت، يجب عليك إنشاء الجدول في جداول innodb_file_per_tablespace. إذا كان لديك حجم جدول واحد أكبر من 4 تيرابايت، فيجب عليك استخدام جدول الأقسام.

join_buffer_size

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) أقصى قيمة (بايت)
أساسي 1 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
أساسي 2 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
General Purpose 2 262144 128 268435455
General Purpose 4 262144 128 536870912
General Purpose 8 262144 128 1073741824
General Purpose 16 262144 128 2147483648
General Purpose 32 262144 128 4294967295
General Purpose 64 262144 128 4294967295
مُحسّن للذاكرة 2 262144 128 536870912
مُحسّن للذاكرة 4 262144 128 1073741824
مُحسّن للذاكرة 8 262144 128 2147483648
مُحسّن للذاكرة 16 262144 128 4294967295
مُحسّن للذاكرة 32 262144 128 4294967295

max_connections

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية الحد الأدنى للقيمة القيمة القصوى
أساسي 1 50 10 50
أساسي 2 100 10 100
General Purpose 2 300 10 600
General Purpose 4 625 10 1250
General Purpose 8 1250 10 2500
General Purpose 16 2500 10 5000
General Purpose 32 5000 10 10000
General Purpose 64 10000 10 20000
مُحسّن للذاكرة 2 625 10 1250
مُحسّن للذاكرة 4 1250 10 2500
مُحسّن للذاكرة 8 2500 10 5000
مُحسّن للذاكرة 16 5000 10 10000
مُحسّن للذاكرة 32 10000 10 20000

عندما يتجاوز عدد الاتصالات الحد، تقوم بتلقى خطأ.

تلميح

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

max_heap_table_size

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) أقصى قيمة (بايت)
أساسي 1 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
أساسي 2 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
General Purpose 2 16777216 16384 268435455
General Purpose 4 16777216 16384 536870912
General Purpose 8 16777216 16384 1073741824
General Purpose 16 16777216 16384 2147483648
General Purpose 32 16777216 16384 4294967295
General Purpose 64 16777216 16384 4294967295
مُحسّن للذاكرة 2 16777216 16384 536870912
مُحسّن للذاكرة 4 16777216 16384 1073741824
مُحسّن للذاكرة 8 16777216 16384 2147483648
مُحسّن للذاكرة 16 16777216 16384 4294967295
مُحسّن للذاكرة 32 16777216 16384 4294967295

query_cache_size

يتم إيقاف تشغيل ذاكرة التخزين المؤقت المخصصة للاستعلام افتراضيًا. لتمكين ذاكرة التخزين المؤقت للاستعلام، يجب تكوين المعلمة query_cache_type .

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

إشعار

تم إهمال ذاكرة التخزين المؤقت المخصصة للاستعلام اعتبارًا من MySQL 5.7.20 وتمت إزالتها في MySQL 8.0.

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) القيمة القصوى
أساسي 1 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
أساسي 2 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
General Purpose 2 1 1 16777216
General Purpose 4 0 1 33554432
General Purpose 8 1 1 67108864
General Purpose 16 1 1 134217728
General Purpose 32 1 1 134217728
General Purpose 64 1 1 134217728
مُحسّن للذاكرة 2 1 1 33554432
مُحسّن للذاكرة 4 0 1 67108864
مُحسّن للذاكرة 8 1 1 134217728
مُحسّن للذاكرة 16 1 1 134217728
مُحسّن للذاكرة 32 1 1 134217728

lower_case_table_names

يتم تعيينlower_case_table_name المعلمة على 1 افتراضيًا، ويصبح بإمكانك تحديث هذه المعلمة في MySQL 5.6 وMySQL 5.7.

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

إشعار

في MySQL 8.0، lower_case_table_name يتم ضبطه إلى 1 بشكل افتراضي، ولا يمكنك تغييره.

innodb_strict_mode

إذا تلقيت خطأً مشابهًا لـ Row size too large (> 8126)، يجب التفكير في إيقاف تشغيل المعلمة innodb_strict_mode. وتصبح إمكانية التعديل غير سارية المفعول innodb_strict_mode بشكل عام على مستوى الخادم. إذا كان حجم بيانات الصف أكبر من 8 كيلو بايت، يتم اقتطاع البيانات، بدون إعلام بالخطأ، مما يؤدي إلى فقدان البيانات المحتمل. من الجيد تعديل المخطط ليلائم حد حجم الصفحة.

يمكنك تعيين هذه المعلمة على مستوى الجلسة، باستخدام init_connect. لضبط innodb_strict_mode على مستوى الجلسة قم بمراجعة معلمة الإعداد غير المدرجة.

إشعار

إذا كان لديك خادم نسخة متماثلة للقراءة، يؤدي الضبطinnodb_strict_mode إلىOFF مستوى الجلسة على خادم المصدر إلى قطع النسخ المتماثل. نقترح الاحتفاظ بالمعامل بشكل مضبوط على ONإذا كنت قد قرأت النسخ المتماثلة.

sort_buffer_size

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) أقصى قيمة (بايت)
أساسي 1 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
أساسي 2 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
General Purpose 2 524288 32768 4194304
General Purpose 4 524288 32768 8388608
General Purpose 8 524288 32768 16777216
General Purpose 16 524288 32768 33554432
General Purpose 32 524288 32768 33554432
General Purpose 64 524288 32768 33554432
مُحسّن للذاكرة 2 524288 32768 8388608
مُحسّن للذاكرة 4 524288 32768 16777216
مُحسّن للذاكرة 8 524288 32768 33554432
مُحسّن للذاكرة 16 524288 32768 33554432
مُحسّن للذاكرة 32 524288 32768 33554432

tmp_table_size

راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

مستوى الأسعار الذاكرة (الذاكرات) الأساسية الظاهرية القيمة الافتراضية (بايت) قيمة الحد الأدنى (بايت) أقصى قيمة (بايت)
أساسي 1 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
أساسي 2 تُعتبر غير قابلة للتكوين في المستوى الأساسي ‏‫غير متوفر‬ ‏‫غير متوفر‬
General Purpose 2 16777216 1024 67108864
General Purpose 4 16777216 1024 134217728
General Purpose 8 16777216 1024 268435456
General Purpose 16 16777216 1024 536870912
General Purpose 32 16777216 1024 1073741824
General Purpose 64 16777216 1024 1073741824
مُحسّن للذاكرة 2 16777216 1024 134217728
مُحسّن للذاكرة 4 16777216 1024 268435456
مُحسّن للذاكرة 8 16777216 1024 536870912
مُحسّن للذاكرة 16 16777216 1024 1073741824
مُحسّن للذاكرة 32 16777216 1024 1073741824

innodb_buffer_pool_size

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

يمكنك استخدام InnoDB تجهيز مجموعة المخزن المؤقت لتقصير فترة التجهيز. تعيد هذه العملية تحميل صفحات القرص التي كانت موجودة في تجمع المخزن المؤقت قبل إعادة التشغيل، بدلاً من انتظار عمليات DML أو SELECT للوصول إلى الصفوف المقابلة. لمزيد من المعلومات، قم بمراجعة معلمات خادم تجمع المخزن المؤقت InnoDB.

ومع ذلك، يأتي الأداء المحسن على حساب وقت بدء تشغيل أطول للخادم. عند تمكين هذه المعلمة، من المتوقع أن تزيد أوقات بدء تشغيل الخادم وإعادة تشغيله، اعتمادا على IOPS المتوفر على الخادم. من الجيد اختبار ومراقبة وقت عملية إعادة التشغيل، للتأكد من أن أداء عملية بدء التشغيل أو إعادة التشغيل مقبول، لأن الخادم غير متاح خلال ذلك الوقت. لا تستخدم هذه المعلمة عندما يكون عدد IOPS المقدم أقل من 1000 IOPS (بمعنى آخر، عندما يكون التخزين المقدم أقل من 335 غيغابايت).

فيما يتعلق بحفظ حالة تجمع المخزن المؤقت عند إيقاف تشغيل الخادم، قم بضبط معلمة innodb_buffer_pool_dump_at_shutdown الخادم إلى ON. وبالمثل، قم بضبط معلمة innodb_buffer_pool_load_at_startup الخادم لاستعادة ON حالة تجمع المخزن المؤقت عند بدء تشغيل الخادم. يمكنك التحكم في التأثير على بدء التشغيل أو إعادة التشغيل عن طريق خفض وضبط قيمة معلمة innodb_buffer_pool_dump_pctالخادم. بشكلٍ افتراضي، يتم ضبط هذه المعلمة على 25.

إشعار

InnoDB يتم دعم معلمات تجهيز مجموعة المخزن المؤقت فقط في خوادم التخزين للأغراض العامة مع تخزين يصل إلى 16 تيرابايت. لمزيد من المعلومات، راجع قاعدة البيانات الخاصة بـ Azure لـ MySQL.

time_zone

فيما يتعلق بعملية التوزيع الأولي ، يشتمل الخادم الذي يقوم بتشغيل قاعدة البيانات الخاصة بـ Azure لـ MySQL على جداول أنظمة لمعلومات المنطقة الزمنية، ولكن لا يتم ملء هذه الجداول. يمكنك ملء الجداول عن طريق استدعاء اmysql.az_load_timezoneلإجراء المخزن من أدوات مثل سطر أوامر MySQL أوMySQL Workbench. للحصول على معلومات حول كيفية استدعاء الإجراءات المخزنة وتعيين المناطق الزمنية العامة أو على مستوى الجلسة، قم بمراجعة العمل باستخدام معلمة المنطقة الزمنية (مدخل Azure) أو العمل باستخدام معلمة المنطقة الزمنية (Azure CLI).

binlog_expire_logs_seconds

فيما يتعلق بقاعدة البيانات الخاصة بـ Azure لـ MySQL، تحدد هذه المعلمة عدد الثواني التي تنتظرها الخدمة قبل مسح ملف السجل الثنائي.

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

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

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

event_scheduler

في قاعدة بيانات Azure ل MySQL، event_schedule تدير معلمة الخادم إنشاء الأحداث وجدولتها وتشغيلها، أي المهام التي يتم تشغيلها وفقا لجدول زمني، ويتم تشغيلها بواسطة مؤشر ترابط مجدول أحداث خاص. عند تعيين المعلمة event_scheduler إلى ON، يتم سرد مؤشر ترابط جدولة الأحداث كعملية خفي في إخراج SHOW PROCESSLIST. يمكنك إنشاء الأحداث وجدولتها باستخدام بناء جملة SQL التالي:

CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;

إشعار

لمزيد من المعلومات حول إنشاء حدث، راجع وثائق MySQL Event Scheduler هنا:

تكوين معلمة خادم event_scheduler

يوضح السيناريو التالي إحدى الطرق لاستخدام المعلمة event_scheduler في قاعدة بيانات Azure ل MySQL. لتوضيح السيناريو، ضع في اعتبارك المثال التالي، جدول بسيط:

mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| CreatedAt | timestamp   | YES  |     | NULL    |                |
| CreatedBy | varchar(16) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)

لتكوين معلمة event_scheduler الخادم في قاعدة بيانات Azure ل MySQL، قم بتنفيذ الخطوات التالية:

  1. في مدخل Microsoft Azure، انتقل إلى الخادم الخاص بك، ثم ضمن الإعدادات، حدد معلمات الخادم.

  2. في جزء Server parameters ، ابحث event_schedulerعن ، في القائمة المنسدلة VALUE ، وحدد ON، ثم حدد Save.

    إشعار

    سيتم نشر تغيير تكوين معلمة الخادم الديناميكي دون إعادة تشغيل.

  3. ثم لإنشاء حدث، اتصل بخادم MySQL، وقم بتشغيل أمر SQL التالي:

    CREATE EVENT test_event_01
    ON SCHEDULE EVERY 1 MINUTE
    STARTS CURRENT_TIMESTAMP
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    COMMENT ‘Inserting record into the table tab1 with current timestamp’
    DO
    INSERT INTO tab1(id,createdAt,createdBy)
    VALUES('',NOW(),CURRENT_USER());
    
  4. لعرض تفاصيل جدولة الأحداث، قم بتشغيل عبارة SQL التالية:

    SHOW EVENTS;
    

    يظهر الإخراج التالي:

    mysql> show events;
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    | Db  | Name          | Definer     | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends                | Status  | Originator | character_set_client | collation_connection | Database Collation |
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    | db1 | test_event_01 | azureuser@% | SYSTEM    | RECURRING | NULL       | 1              | MINUTE         | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    1 row in set (0.23 sec)
    
  5. بعد بضع دقائق، استعلم عن الصفوف من الجدول لبدء عرض الصفوف المدرجة كل دقيقة وفقا للمعلمة التي event_scheduler قمت بتكوينها:

    mysql> select * from tab1;
    +----+---------------------+-------------+
    | id | CreatedAt           | CreatedBy   |
    +----+---------------------+-------------+
    |  1 | 2023-04-05 14:47:04 | azureuser@% |
    |  2 | 2023-04-05 14:48:04 | azureuser@% |
    |  3 | 2023-04-05 14:49:04 | azureuser@% |
    |  4 | 2023-04-05 14:50:04 | azureuser@% |
    +----+---------------------+-------------+
    4 rows in set (0.23 sec)
    
  6. بعد ساعة، قم بتشغيل عبارة Select على الجدول لعرض النتيجة الكاملة للقيم المدرجة في الجدول كل دقيقة لمدة ساعة كما event_scheduler تم تكوينها في حالتنا.

    mysql> select * from tab1;
    +----+---------------------+-------------+
    | id | CreatedAt           | CreatedBy   |
    +----+---------------------+-------------+
    |  1 | 2023-04-05 14:47:04 | azureuser@% |
    |  2 | 2023-04-05 14:48:04 | azureuser@% |
    |  3 | 2023-04-05 14:49:04 | azureuser@% |
    |  4 | 2023-04-05 14:50:04 | azureuser@% |
    |  5 | 2023-04-05 14:51:04 | azureuser@% |
    |  6 | 2023-04-05 14:52:04 | azureuser@% |
    ..< 50 lines trimmed to compact output >..
    | 56 | 2023-04-05 15:42:04 | azureuser@% |
    | 57 | 2023-04-05 15:43:04 | azureuser@% |
    | 58 | 2023-04-05 15:44:04 | azureuser@% |
    | 59 | 2023-04-05 15:45:04 | azureuser@% |
    | 60 | 2023-04-05 15:46:04 | azureuser@% |
    | 61 | 2023-04-05 15:47:04 | azureuser@% |
    +----+---------------------+-------------+
    61 rows in set (0.23 sec)
    

السيناريوهات الأخرى

يمكنك إعداد حدث استنادا إلى متطلبات السيناريو المحدد. تتبع بعض الأمثلة المماثلة لجدولة عبارات SQL للتشغيل على فترات زمنية مختلفة.

تشغيل عبارة SQL الآن وتكرارها مرة واحدة في اليوم دون نهاية

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;

تشغيل عبارة SQL كل ساعة دون نهاية

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;

تشغيل عبارة SQL كل يوم بدون نهاية

CREATE EVENT <event name>
ON SCHEDULE 
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;

معلمات الخادم غير القابلة للتكوين

معلمات الخادم التالية غير قابلة للتكوين فيما يتعلق بالخدمة:

المعلمة‬ القيمة الثابتة
innodb_file_per_table في المستوى الأساسي إيقاف التشغيل
innodb_flush_log_at_trx_commit 1
sync_binlog 1
innodb_log_file_size 256 ميغابايت
innodb_log_files_in_group 2

يتم ضبط المتغيرات الأخرى غير المدرجة هنا على قيم MySQL الافتراضية. راجع مستندات MySQL فيما يتعلق بالإصدارات8.0و5.7و5.6.

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