MySQL行大小限制

MySQL行大小限制,第1张

https://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html

InooDB 单行最大不能超过页大小的一半,比如默认 innodb_page_size=16K,则单行不能超过 8k(要减去一些额外信息占用的大小):

如果包含可变长度类型的字段的行超过InnoDB 最大行大小,则 InnoDB 会选择吧可变长度字段存储到外部页(也叫溢出页),直到该行符合InnoDB 行大小限制:

将上述示例 char 类型改为 varchar 类型,则可以突破单行不能超过 8k的限制:

MySQL层单行最大限制(不区分存储引擎)65535 字节:

BLOB 、 TEXT 列仅对行大小限制贡献 9 到 12 个字节,因为它们的内容与行的其余部分分开存储:

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

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

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

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

创建一张表,插入一行记录: 这里使用 longtext 数据类型能让查询结果更快内存溢出。

用户 tt1 登录验证:对字段 r1 进行简单 GROUP BY 检索 , 报连接内存超出设定限制错误,连接关闭。

不过这个新功能对管理员和内置用户不生效。 用 ROOT 用户重新登录 MySQL 执行刚才那条 SQL :


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7101699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存