亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文再通過修改數(shù)據(jù)庫(kù)參數(shù)的方式達(dá)到阻斷長(zhǎng)時(shí)間運(yùn)行的SQL的目的。

之前(MySQL自我保護(hù)工具--pt-kill ) 提到用pt-kill工具來(lái)kill相關(guān)的會(huì)話,來(lái)達(dá)到保護(hù)數(shù)據(jù)庫(kù)的目的,本文再通過修改數(shù)據(jù)庫(kù)參數(shù)的方式達(dá)到阻斷長(zhǎng)時(shí)間運(yùn)行的SQL的目的。

1、參數(shù)介紹

mysql5.6及以后,數(shù)據(jù)庫(kù)端新增了新變量來(lái)限制語(yǔ)句最大執(zhí)行時(shí)間,用于在服務(wù)端對(duì)select語(yǔ)句進(jìn)行超時(shí)時(shí)間限制,能有效控制在數(shù)據(jù)庫(kù)(建議在主庫(kù))的慢查詢情況,以達(dá)到保護(hù)數(shù)據(jù)庫(kù)穩(wěn)定性的目的。

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

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

另外,該參數(shù)有g(shù)lobal 及session 2種級(jí)別,即可在部分會(huì)話中動(dòng)態(tài)調(diào)整本會(huì)話的超時(shí)時(shí)間。

2、操作演示

在測(cè)試環(huán)境建一張大表用來(lái)演示,該案例可查看歷史文章或批量造數(shù)據(jù)實(shí)現(xiàn)。

因當(dāng)前基本都使用5.7及以后版本,因此本次使用MySQL5.7版本數(shù)據(jù)庫(kù)進(jìn)行演示。

(1)參數(shù)默認(rèn)值

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

默認(rèn)值為0,代表不限制最大執(zhí)行時(shí)間。

例如執(zhí)行如下SQL時(shí),運(yùn)行3s+。

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

(2)修改參數(shù)演示

修改本會(huì)話的參數(shù)(session級(jí)別),演示本次會(huì)話的情況,這樣不會(huì)影響其他會(huì)話的運(yùn)行,如需整個(gè)實(shí)例調(diào)整,則修改全局變量即可。

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)

此時(shí)執(zhí)行查詢,則會(huì)因?yàn)槌^1s而被中斷。

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

PS:修改全局變量后,注意已經(jīng)連接的會(huì)話是不生效的,另外,此參數(shù),只對(duì)select起作用,對(duì)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、小結(jié)

生產(chǎn)環(huán)境較常見的情況是業(yè)務(wù)代碼已經(jīng)超時(shí)退出了與數(shù)據(jù)庫(kù)的交互,但是數(shù)據(jù)庫(kù)里依舊運(yùn)行著發(fā)起的SQL,如果頻繁發(fā)起重試,則,慢SQL會(huì)越來(lái)越多,導(dǎo)致數(shù)據(jù)庫(kù)負(fù)載高,影響穩(wěn)定性及可用性。因此,建議部署pt-kill工具或者修改最大執(zhí)行時(shí)間參數(shù),避免長(zhǎng)時(shí)間運(yùn)行select語(yǔ)句運(yùn)行。

相對(duì)于pt-kill工具,修改參數(shù)的方式較便捷,但局限性較大,因此需要根據(jù)業(yè)務(wù)需要進(jìn)行部署。

分享到:
標(biāo)簽:MySQL
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定