"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا تكون استعلامات \"SELECT COUNT(*)\" الخاصة بي في جدول Change_event بطيئة جدًا؟

لماذا تكون استعلامات \"SELECT COUNT(*)\" الخاصة بي في جدول Change_event بطيئة جدًا؟

تم النشر بتاريخ 2024-11-18
تصفح:924

Why are my \

معالجة الاستعلامات البطيئة "SELECT COUNT(*)" في MySQL

استعلامك في جدول Change_event، مع حساب الصفوف التي تتجاوز Change_event_id محددًا ، تشهد تأخيرات كبيرة. لكن لماذا؟ دعونا نتعمق في الأسباب المحتملة.

الكشف عن سلوك InnoDB

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

إستراتيجيات التحسين

لتسريع الاستعلام، هناك طريقتان تستحقان النظر فيهما. :

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

نصيحة إضافية:

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

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3