通常情况下,MySQL想要限制单个连接的内存,只能小心翼翼设置各种SESSION变量,防止执行某些SQL导致单个连接内存溢出!能不能直接在MySQL服务端包含这样一个功能,简化数据库的运维工作?
MySQL 8.0.28与此功能有关的几个新参数如下,
connection_memory_limit:核心参数!用来限制单用户连接的内存上限值,默认为BIGINT UNSIGNED的最大值: 18446744073709551615字节,最小为2MB。 global_connection_memory_tracking:设置是否开启对连接内存功能的追踪,并且把连接内存数据存入状态变量Global_connection_memory。为了性能考虑,默认关闭。 connection_memory_chunk_size: 在参数global_connection_memory_tracking开启的场景下,设置状态变量Global_connection_memory的更新频率。
接下来我们体验下这个新特性。
管理员端设置内存限制参数上限:为了尽快看到效果,设置为最小值。
localhost:(none)>set global connection_memory_limit=2097152;
Query OK, 0 rows affected (0.00 sec)复制
创建一个新用户tt1,并赋予基于库ytt的只读权限。
localhost:(none)>create user tt1 identified by 'tt';
Query OK, 0 rows affected (0.03 sec)
localhost:(none)>grant select on ytt.* to tt1;
Query OK, 0 rows affected (0.02 sec)复制
创建一张表,插入一行记录:这里使用longtext数据类型能让查询结果更快内存溢出。
localhost:ytt>create table t(id int primary key, r1 longtext);
Query OK, 0 rows affected (2.39 sec)
localhost:ytt>insert t values (1,lpad('mysql',6000000,'database'));
Query OK, 1 row affected (0.63 sec)复制
用户tt1登录验证:对字段r1进行简单GROUP BY检索 ,报连接内存超出设定限制错误,连接关闭。
debian-ytt1:ytt>select count(r1) from t group by r1;
ERROR 4082 (HY000): Connection closed. Connection memory limit 2097152 bytes exceeded. Consumed 7094928 bytes.复制
不过这个新功能对管理员和内置用户不生效。用ROOT用户重新登录MySQL执行刚才那条SQL,
root@debian-ytt1:~# mysql -S tmp/mysqld_3306.sock
...
localhost:(none)>use ytt
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
localhost:ytt>select count(r1) from t group by r1;
+-----------+
| count(r1) |
+-----------+
| 1 |
+-----------+
1 row in set (0.03 sec)复制
可以看到,管理员可以正常执行这条SQL。所以我们DBA给开发用户赋予权限时,为了避免不必要的运维工作,禁止赋SUPER权限。
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
676次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
500次阅读
2025-04-25 15:30:58
墨天轮个人数说知识点合集
JiekeXu
449次阅读
2025-04-01 15:56:03
MySQL数据库当前和历史事务分析
听见风的声音
428次阅读
2025-04-01 08:47:17
MySQL 生产实践-Update 二级索引导致的性能问题排查
chengang
391次阅读
2025-03-28 16:28:31
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
371次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
358次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
334次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
306次阅读
2025-04-07 12:14:29
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
203次阅读
2025-04-15 15:27:53