以往 MySQL 想要限制单个连接的内存,只能小心翼翼的设置各种 SESSION 变量,防止执行某些 SQL 导致单个连接的内存溢出! 能不能直接在 MySQL 服务端包含这样一个功能,简化数据库的运维呢?
MySQL 最新版本 8.0.28 在前几天发布,其中有一项新功能就是在数据库侧来限制单个连接内存,着实有点小兴奋。
管理员端设置内存限制参数上限:为了尽快看到效果,设置为最小值。
创建一个新用户 tt1 ,并赋予基于库 ytt 的只读权限。
创建一张表,插入一行记录: 这里使用 longtext 数据类型能让查询结果更快内存溢出。
用户 tt1 登录验证:对字段 r1 进行简单 GROUP BY 检索 , 报连接内存超出设定限制错误,连接关闭。
不过这个新功能对管理员和内置用户不生效。 用 ROOT 用户重新登录 MySQL 执行刚才那条 SQL :
通常,mysql的最大连接数默认是100, 最大可以达到16384。1、查看最大连接数:
show variables like '%max_connections%'
2、修改最大连接数
方法一:修改配置文件。推荐方法一
进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MySQL即可.
方法二:命令行修改。不推荐方法二
命令行登录MySQL后。设置新的MySQL最大连接数为200:
MySQL>set global max_connections=200。
这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)