全部產品
Search
文件中心

PolarDB:如何自訂SQL逾時時間

更新時間:Jul 06, 2024

PolarDB-X提供了自訂HINT語句修改逾時時間。

PolarDB-X的一些查詢類SQL語句,在計算節點發往儲存節點執行時,執行逾時時間預設是900秒(SOCKET_TIMEOUT)。但是對於某些特定的慢SQL,其執行時間可能超過了900秒 。針對這種慢SQL,PolarDB-X提供了調整逾時時間的自訂HINT。通過這個自訂HINT可以任意調整SQL執行時間長度。

注意事項

  • PolarDB-X自訂HINT支援/*+TDDL:hint_command*//!+TDDL:hint_command*/兩種格式。
  • 如果使用/*+TDDL:hint_command*/格式,在使用MySQL官方命令列用戶端執行帶有PolarDB-X自訂HINT的SQL時,請在登入命令中加上-c參數。否則,由於PolarDB-X自訂HINT是以MySQL注釋形式使用的,該用戶端會將備註陳述式刪除後再發送到服務端執行,導致PolarDB-X自訂HINT失效。具體請參見MySQL官方用戶端命令

文法

PolarDB-X自訂SQL逾時時間HINT的文法如下:

/*+TDDL:SOCKET_TIMEOUT(time)*/

其中,SOCKET_TIMEOUT的單位是毫秒。通過該HINT您可以根據業務需要,自由調整SQL語句的逾時時間。

樣本

設定SQL逾時時間為40秒:

/*+TDDL:SOCKET_TIMEOUT(40000)*/SELECT * FROM t_item;
重要 逾時時間設定得越長,佔用資料庫資源的時間就會越長。如果同一時間長時間執行的SQL過多,可能消耗大量的資料庫資源,從而導致無法正常使用資料庫服務。所以,對於長時間執行的SQL語句,盡量對SQL語句進行最佳化。