تحديد الاستعلام البطيء بدون سجلات الاستعلام البطيئة في خادم MySQL

dba.stackexchange https://dba.stackexchange.com/questions/101623

  •  26-09-2020
  •  | 
  •  

سؤال

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

لقد بدأت للتو إدارة MySQL ولست متأكدًا من كيفية التعامل مع هذا.أي توجيه سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

إذا كنت لا ترغب في تمكين سجل الاستعلام البطيء على الإطلاق، لدي اقتراح

يمكنك استخدام pt-query-digest على مدى فترة من الزمن.

لقد اقترحت هذا عدة مرات في DBA StackExchange

إذا نظرت إلى بلدي 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)

لكي لا يتم حفظ نفس الاستعلام عدة مرات، يمكنك استخدام تجزئة الاستعلام كمفتاح فريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى dba.stackexchange
scroll top