MySQL自我保护参数
上文(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版本数据库进行演示。
2.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.2 修改参数演示
修改
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)
本会话的参数(session级别),演示本次会话的情况,这样不会影响其他会话的运行,如需整个实例调整,则修改全局变量即可。
mysql> select count(*) from test1;
ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
此时执行查询,则会因为超过1s而被中断
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自我保护参数的更多相关文章
- 1201MySQL配置文件mysql.ini参数详解
转自http://www.cnblogs.com/feichexia/archive/2012/11/27/mysqlconf.html my.ini(Linux系统下是my.cnf),当mysql服 ...
- (转)MySQL配置文件mysql.ini参数详解、MySQL性能优化
本文转自:http://www.cr173.com/html/18331_1.html my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数 ...
- MySQL配置文件mysql.ini参数详解、MySQL性能优化
my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section. ...
- MySQL配置文件mysql.ini参数详解
my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section. ...
- 在Linux最大打开文件数限制下 MySQL 对参数的调整
http://www.actionsky.com/docs/archives/78 2016年4月7日 周文雅 目录 1 起因 2 说明 3 MySQL调整参数的方式 3.1 计算 request ...
- skip-grant-tables:非常有用的mysql启动参数
skip-grant-tables:非常有用的mysql启动参数 介绍一个非常有用的mysql启动参数—— --skip-grant-tables.顾名思义,就是在启动mysql时不启动grant ...
- MySql配置参数很全的Mysql配置参数说明
MySql配置参数 很全的Mysql配置参数说明 1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很 ...
- mysql dump 参数
mysql dump 参数: -R, --routines Dump stored routines (functions and procedures). 备份 函数和存储过程: -E, --eve ...
- Ubuntu下面MySQL的参数文件my.cnf浅析
前几天刚接手一个MySQL数据,操作系统为Ubuntu 16.04.5 LTS, 数据库版本为5.7.23-0ubuntu0.16.04.1(APT方式安装的MySQL).这个操作系统下的MySQL ...
随机推荐
- (1)Zookeeper在linux环境中搭建集群
1.简介 ZooKeeper是Apache软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册.ZooKeeper的架构通过冗余服务实现高可用性.Zookeeper ...
- SpringCloud升级之路2020.0.x版-30. FeignClient 实现重试
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 需要重试的场景 微服务系统中,会遇到在线发布,一般的发布更新策略是:启动一个新的,启动成功 ...
- uni-app APP端隐藏导航栏自定义按钮
话不多说,上代码 // #ifdef APP-PLUS var webView = this.$mp.page.$getAppWebview(); // 修改buttons webView.setTi ...
- git push超过100M文件处理方法
git push超过100M文件处理方法 github 会在你上传文件大于50M的时候,给予警告 ; 大于100M的时候给出 server reject(拒绝上传) 解决方法 保持单个文件在 100 ...
- PAT甲级1074 Reversing Linked List (25分)
[程序思路] 先根据地址按顺序读入节点,入栈,当栈里的元素个数等于k时全部出栈,并按出栈顺序保存,最后若栈不为空,则全部出栈并按出栈的稀饭顺序保存,最后输出各节点 注意:输入的节点中有可能存在无用节点 ...
- js 实现匀速移动
js 实现匀速移动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- PowerDotNet平台化软件架构设计与实现系列(03):系统应用平台
为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的"系统"和"应用"进行更高级的提取和抽象. 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别 ...
- [luogu5654]基础函数练习题
答案即区间$[l,r]$的笛卡尔树上,左右子树有一个为空的点到根路径和(定义此为的该点答案)的max, 对求区间笛卡尔树复杂度为$o(n)$,无法通过,因此在全局笛卡尔树中考虑此问题 设$k$为$l$ ...
- 使用idea创建Kotlin项目
1.打开idea 2.选择项目方式: 3.nest 4.创建文件名 4.finish 看这目录结构和java没什么区别 5.在src目录下新建一个Kotlin文件 fun main(args:} fu ...
- C# 将Excel转为PDF时自定义表格纸张大小
通过后端程序将Excel表格转为PDF格式时,直接转换后的PDF效果可能出现表格页面过小或者过大,导致页面内容分布不均.要改善转换后的文档效果,只需在转换前自定义表格纸张大小,即可调整转换后的PDF页 ...