Mariadb

僅增加單個查詢的鎖定超時?

  • April 14, 2022

有沒有辦法增加單個查詢的鎖定超時,或者只是那個連接,而不影響整個數據庫?

我有一個有問題的查詢,有時會因 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(以秒為單位指定)的值的任何查詢(不包括儲存過程)都將被中止。這可以按會話以及按使用者和按查詢全域設置。請參閱中止執行時間超過特定時間的語句。

建議使用慢日誌查找導致超時的其他查詢。然後看看你是否可以加快速度和/或避免衝突。

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