MySql 不記錄慢查詢
我為 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
幾乎抓不到任何東西;我建議降低它。