Mariadb
僅增加單個查詢的鎖定超時?
有沒有辦法增加單個查詢的鎖定超時,或者只是那個連接,而不影響整個數據庫?
我有一個有問題的查詢,有時會因 1 秒超時而失敗。
所以我想到了這樣的事情:
set innodb_lock_wait_timeout=100; query; set innodb_lock_wait_timeout=1;
但這適用於整個數據庫,對吧?我想要的可能嗎?使用 mariadb 10.5
innodb_lock_wait_timeout也是一個會話和全域變數,因此預設情況下
SET
只更改會話。應用設置並避免重置它的更簡單方法是使用 可應用於任何會話變數的SET STATEMENT 。
所以:
set statement innodb_lock_wait_timeout=100 for {query}
由於您使用的是 MariaDB,也許您想要
max_statement_time
如果設置了 max_statement_time 變數,則執行時間超過 max_statement_time(以秒為單位指定)的值的任何查詢(不包括儲存過程)都將被中止。這可以按會話以及按使用者和按查詢全域設置。請參閱中止執行時間超過特定時間的語句。
建議使用慢日誌查找導致超時的其他查詢。然後看看你是否可以加快速度和/或避免衝突。