前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新特性解读 | MySQL 8.0.28 用户连接内存限制

新特性解读 | MySQL 8.0.28 用户连接内存限制

作者头像
爱可生开源社区
发布2022-04-06 21:18:23
1.5K0
发布2022-04-06 21:18:23
举报
文章被收录于专栏:爱可生开源社区

作者:杨涛涛

资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。

本文来源:原创投稿

* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


以往 MySQL 想要限制单个连接的内存,只能小心翼翼的设置各种 SESSION 变量,防止执行某些 SQL 导致单个连接内存溢出!能不能直接在 MySQL 服务端包含这样一个功能,简化数据库的运维呢?

MySQL 最新版本 8.0.28 在前几天发布,其中有一项新功能就是在数据库侧来限制单个连接的内存,着实有点小兴奋。

MySQL 8.0.28 与此功能有关的几个新参数如下:
  1. connection_memory_limit:核心参数!用来限制单用户连接的内存上限值,默认为 BIGINT UNSIGNED 的最大值:18446744073709551615 字节,最小为2MB。
  2. global_connection_memory_tracking:设置是否开启对连接内存功能的追踪,并且把连接内存数据存入状态变量 Global_connection_memory 。为了性能考虑,默认关闭。
  3. connection_memory_chunk_size: 在参数 global_connection_memory_tracking 开启的场景下,设置状态变量 Global_connection_memory 的更新频率。
接下来我们体验下这个新特性。

管理员端设置内存限制参数上限:为了尽快看到效果,设置为最小值。

代码语言:javascript
复制
localhost:(none)>set global connection_memory_limit=2097152;
Query OK, 0 rows affected (0.00 sec)

创建一个新用户 tt1 ,并赋予基于库 ytt 的只读权限。

代码语言:javascript
复制
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 数据类型能让查询结果更快内存溢出。

代码语言:javascript
复制
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 检索 ,报连接内存超出设定限制错误,连接关闭。

代码语言:javascript
复制
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 :

代码语言:javascript
复制
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 权限。

本文关键字:#MySQL# #连接内存限制#


关于SQLE

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

如何获取

类型

地址

版本库

https://github.com/actiontech/sqle

文档

https://actiontech.github.io/sqle-docs-cn/

发布信息

https://github.com/actiontech/sqle/releases

数据审核插件开发文档

https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL 8.0.28 与此功能有关的几个新参数如下:
  • 接下来我们体验下这个新特性。
  • 可以看到,管理员可以正常执行这条SQL。所以我们 DBA 给开发用户赋予权限时,为了避免不必要的运维工作,禁止赋 SUPER 权限。
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档