تحديد الاستعلام البطيء بدون سجلات الاستعلام البطيئة في خادم MySQL
-
26-09-2020 - |
سؤال
أتساءل هل هناك أي طريقة أخرى للتحقق من استعلاماتنا البطيئة دون تسجيل استعلام بطيء.لنفترض أن لدي خادمًا مشغولًا للغاية ولا يمكنه تحمل تسجيل الكثير لتوفير الذاكرة وعمليات الإدخال/الإخراج.إذن، هل هناك أي طريقة أخرى متاحة للتحقق مما إذا كان لدي استعلام بطيء؟أعلم أنه يمكننا عمل ملفات تعريف للاستعلام ولكننا لا نزال غير متأكدين مما يجب فعله بالضبط لتحديد الاستعلام الذي يستغرق معظم الوقت والذاكرة.
لقد بدأت للتو إدارة MySQL ولست متأكدًا من كيفية التعامل مع هذا.أي توجيه سيكون موضع تقدير كبير.
المحلول
إذا كنت لا ترغب في تمكين سجل الاستعلام البطيء على الإطلاق، لدي اقتراح
يمكنك استخدام pt-query-digest على مدى فترة من الزمن.
لقد اقترحت هذا عدة مرات في DBA StackExchange
Nov 24, 2011
: تأثيرات أداء سجل استعلام MySQL العامApr 24, 2012
: التحقق من الذروة في إنتاجية MySQLJul 26, 2012
: ما الذي يجري الآن؟
إذا نظرت إلى بلدي Nov 24, 2011
وصلة, لقد قدمت برنامج نصي شل يمكنك تشغيله باستخدام crontab pt-query-digest.
جربها !!!
نصائح أخرى
يمكنك تشغيل العبارة التالية في حلقة في برنامج نصي يقوم بتشغيل العبارة كل 10 ثوانٍ على سبيل المثال.
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
يمكنك تخصيصه لتزويدك بمعلومات أكثر أو أقل اعتمادًا على الاستعلام الذي تصدره.
mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(64) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| TIME_MS | bigint(21) | NO | | 0 | |
| ROWS_SENT | bigint(21) unsigned | NO | | 0 | |
| ROWS_EXAMINED | bigint(21) unsigned | NO | | 0 | |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
لكي لا يتم حفظ نفس الاستعلام عدة مرات، يمكنك استخدام تجزئة الاستعلام كمفتاح فريد.