Mysql

MySql 不記錄慢查詢

  • January 26, 2019

我為 MySQL 5.7 設置了慢查詢日誌記錄:

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow_query_log.log
long_query_time = 10
log_queries_not_using_indexes = 0

然後為了測試它,我使用了 MySQL Workbench 並執行select sleep(12);並驗證vim /var/log/mysql/slow_query_log.log了該查詢。

所以我認為一切都很棒。但是,我的 slow_query_log 似乎適用於我的測試查詢,例如select sleep(12);,不適用於真實查詢。

下面是一個例子。在我的 Laravel PHP 應用程序的某些地方,我呼叫\DB::enableQueryLog();然後Log::debug(\DB::getQueryLog());在執行查詢後,在這些日誌中我看到查詢非常慢(241 秒!?),但我從未在slow_query_log.log.

array (
'query' => 'select * from `automations` where (`contact_id` = ? and `job_class_name` = ? and `execute_at` = ?) and `automations`.`deleted_at` is null limit 1',
'bindings' =>
array (
 0 => 23030,
 1 => 'App\\Jobs\\SubscribeToWebinarFollowupEmailSeries',
 2 => '2018-12-30 19:13:00',
),
'time' => 241.37,
),

我怎樣才能解決這個問題?

PS 我不認為我的問題與這個問題重複,因為在我的測試中,日誌記錄確實有效。

我認為需要 352 秒的查詢實際上只用了 0.352 秒!🤦‍♂️

https://laravel.io/forum/03-04-2014-what-time-format-does-dbgetquerylog-return向我展示了 Laravel 將DB::getQueryLog()“時間”顯示為毫秒(微秒乘以 1000),而不是秒。

多麼令人尷尬的錯誤(糟糕的假設)。所以我需要編輯我的 500 分賞金問題:https ://stackoverflow.com/questions/53469793/e-warning-error-while-sending-stmt-prepare-packet-pid/54374937?noredirect=1#comment95579631_53469793

的價值是log_output多少?應該是"FILE""FILE,TABLE"

對於該特定查詢,您是否對這些有復合索引:

INDEX(contract_id, job_class_name, execute_at, deleted_at)

(任何訂單都可以。)

long_query_time = 10幾乎抓不到任何東西;我建議降低它。

引用自:https://dba.stackexchange.com/questions/226119