Як слід інтерпретувати "час блокування" в журналі повільного запиту mysql?


12

Я намагаюся зрозуміти, як найкраще інтерпретувати час блокування запитів, які відображаються в нашому журналі повільних запитів MySQL.

Наприклад, якщо запит UPDATE має час блокування 10 секунд. Я припускаю, що це загальний час після отримання запиту на оновлення. Навіть якщо він чекає завершення попередніх запитів вибору, але не виконує саму дію UPDATE, годинник повинен позначати, оскільки він блокує всі SELECT запити, що вишикувалися після запиту UPDATE.

А як щодо блокування запитів SELECT. Як у деяких вибраних запитах є час блокування? Це тому, що є наступний запит UPDATE, отже, вони блокують таблицю разом.

Відповіді:


19

Журнал lock_timeповільних запитів - це фактично кількість часу, який запит витратив на очікування замовлення, яке йому потрібно виконати. Наприклад, UPDATESзапити потребують блокування запису.

Блокування також залежить від двигуна зберігання, який ви використовуєте в таблиці. Під час написання InnoDB використовуватиме блокування на рівні рядків і фіксуватиме лише рядки, які змінюються. MyISAM заблокує всю таблицю до завершення оновлення / вставки / видалення.

Блокування всієї таблиці для MyISAM є великою причиною того, що SELECTзапити матимуть час блокування у вашому журналі повільних запитів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.