1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MySQL自我保護參數(shù)

        共 2420字,需瀏覽 5分鐘

         ·

        2021-12-11 19:24

        點擊上方藍字關(guān)注我

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

        1、參數(shù)介紹

        mysql5.6及以后,數(shù)據(jù)庫端新增了新變量來限制語句最大執(zhí)行時間,用于在服務(wù)端對select語句進行超時時間限制,能有效控制在數(shù)據(jù)庫(建議在主庫)的慢查詢情況,以達到保護數(shù)據(jù)庫穩(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種級別,即可在部分會話中動態(tài)調(diào)整本會話的超時時間。

        2. 操作演示

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

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

        2.1 參數(shù)默認值

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

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

        例如執(zhí)行如下SQL時,運行3s+

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

        2.2 修改參數(shù)演示

        修改本會話的參數(shù)(session級別),演示本次會話的情況,這樣不會影響其他會話的運行,如需整個實例調(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)

        此時執(zhí)行查詢,則會因為超過1s而被中斷

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

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

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

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

        往期精彩回顧

        1.??MySQL高可用之MHA集群部署

        2.??mysql8.0新增用戶及加密規(guī)則修改的那些事

        3.? 比hive快10倍的大數(shù)據(jù)查詢利器-- presto

        4. ?監(jiān)控利器出鞘:Prometheus+Grafana監(jiān)控MySQL、Redis數(shù)據(jù)庫

        5.? PostgreSQL主從復(fù)制--物理復(fù)制

        6.??MySQL傳統(tǒng)點位復(fù)制在線轉(zhuǎn)為GTID模式復(fù)制

        7.??MySQL敏感數(shù)據(jù)加密及解密

        8.??MySQL數(shù)據(jù)備份及還原(一)

        9.??MySQL數(shù)據(jù)備份及還原(二)

        掃碼關(guān)注?????

        瀏覽 74
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            快操我视频 | 天天撸天天日 | 色图15p | 日韩黄色电影网 | 国产a视频 | 黑人日逼 | 夜噜噜久久国产欧美日韩精品 | 亚州操逼视频 | 亚洲熟妇无码 | 丰满少妇被猛烈进入高清在线观看 |