日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文再通過修改數據庫參數的方式達到阻斷長時間運行的SQL的目的。

之前(MySQL自我保護工具--pt-kill ) 提到用pt-kill工具來kill相關的會話,來達到保護數據庫的目的,本文再通過修改數據庫參數的方式達到阻斷長時間運行的SQL的目的。

1、參數介紹

mysql5.6及以后,數據庫端新增了新變量來限制語句最大執行時間,用于在服務端對select語句進行超時時間限制,能有效控制在數據庫(建議在主庫)的慢查詢情況,以達到保護數據庫穩定性的目的。

不過mysql5.7.8版本前后參數名有變更,例如:

mysql5.6 - mysql5.7.8前的版本中,參數名為:max_statement_time (毫秒) 
mysql5.7.8及以后,參數改成:max_execution_time (毫秒)

另外,該參數有global 及session 2種級別,即可在部分會話中動態調整本會話的超時時間。

2、操作演示

在測試環境建一張大表用來演示,該案例可查看歷史文章或批量造數據實現。

因當前基本都使用5.7及以后版本,因此本次使用MySQL5.7版本數據庫進行演示。

(1)參數默認值

mysql> show global variables like 'max_execution_time';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_execution_time | 0     |
+--------------------+-------+
1 row in set (0.01 sec)

默認值為0,代表不限制最大執行時間。

例如執行如下SQL時,運行3s+。

mysql> select  count(*) from  test1;
+----------+
| count(*) |
+----------+
| 21991575 |
+----------+
1 row in set (3.89 sec)

(2)修改參數演示

修改本會話的參數(session級別),演示本次會話的情況,這樣不會影響其他會話的運行,如需整個實例調整,則修改全局變量即可。

mysql> set session   max_execution_time=1000;
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'max_execution_time';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_execution_time | 0     |
+--------------------+-------+
1 row in set (0.01 sec)
mysql> show  variables like 'max_execution_time';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_execution_time | 1000  |
+--------------------+-------+
1 row in set (0.00 sec)

此時執行查詢,則會因為超過1s而被中斷。

mysql> select  count(*) from  test1;
ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded

PS:修改全局變量后,注意已經連接的會話是不生效的,另外,此參數,只對select起作用,對DDL及UPDATE、delete操作不生效,例如:

mysql> set session   max_execution_time=1000;
Query OK, 0 rows affected (0.00 sec)
mysql> alter table test1 add tt int ;
Query OK, 0 rows affected (25.65 sec)
Records: 0  Duplicates: 0  Warnings: 0

3、小結

生產環境較常見的情況是業務代碼已經超時退出了與數據庫的交互,但是數據庫里依舊運行著發起的SQL,如果頻繁發起重試,則,慢SQL會越來越多,導致數據庫負載高,影響穩定性及可用性。因此,建議部署pt-kill工具或者修改最大執行時間參數,避免長時間運行select語句運行。

相對于pt-kill工具,修改參數的方式較便捷,但局限性較大,因此需要根據業務需要進行部署。

分享到:
標簽:MySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定