本文介紹了自訂SQL逾時時間HINT的文法和樣本。
本文適用於PolarDB-X 1.0 5.3及以上版本。
在PolarDB-X 1.0中,PolarDB-X 1.0節點與RDS的預設的SQL執行逾時時間是900秒(可以調整),但是對於某些特定的慢SQL,其執行時間可能超過了900秒 。針對這種慢SQL,PolarDB-X 1.0提供了調整逾時時間的自訂HINT。通過這個自訂HINT可以任意調整SQL執行時間長度。
文法
/*+TDDL:SOCKET_TIMEOUT(time)*/
其中,SOCKET_TIMEOUT
的單位是毫秒。通過該HINT使用者可以根據業務需要,自由調整SQL語句的逾時時間。
注意事項
- PolarDB-X 1.0自訂HINT支援
/*+TDDL:hint_command*/
和/!+TDDL:hint_command*/
兩種格式。 - 如果使用
/*+TDDL:hint_command*/
格式,在使用MySQL官方命令列用戶端執行帶有PolarDB-X 1.0自訂HINT的SQL時,請在登入命令中加上-c
參數。否則,由於PolarDB-X 1.0自訂HINT是以 MySQL 注釋形式使用的,該用戶端會將備註陳述式刪除後再發送到服務端執行,導致PolarDB-X 1.0自訂HINT失效。具體請查看MySQL 官方用戶端命令。
樣本
設定SQL逾時時間為40秒:
/*+TDDL:SOCKET_TIMEOUT(40000)*/SELECT * FROM t_item;
說明 逾時時間設定得越長,佔用資料庫資源的時間就會越長。如果同一時間長時間執行的SQL過多,可能消耗大量的資料庫資源,從而導致無法正常使用資料庫服務。所以,對於長時間執行的SQL語句,盡量對SQL語句進行最佳化。