searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MYSQL规范为什么建议对大字段分表处理?

2024-09-10 17:23:26
15
0

一、MYSQL规范对大字段的建议

一般来说,MYSQL的开发规范中,会对大字段有拆分的建议,比如:

有text字段的,最好请分表。(本质上说,不是MySQL不适合存储text,而是在太多的情况下我们期望MySQL能够更加高效的提供小数据查询/事务处理)

 

常见字段类型(一般不允许用text和blob),若必须使用则拆分到单独的表

 

WHY?我们通过实操验证看看为什么会有这条规范

二、实操验证:

1、 建表

create table cygtest9(id int primary key,age int,name text);

 

2、 插数据

 

 

Insert into cygtest9 values(1,28,'dskjdojwoejohdohdohgosjdijsdniiwwewew');

 

Insert into cygtest9 values(2,32,'dskjdojwoejohdohdohgosjdijsdniiwdswewew');

 

3、 UPDATE

Update cygtest9 set age=age+1 where id=2;

 

4、 查看BINLOG

 

 

 

三、总结

如果不分表,会有什么后果:

 

从BINLOG可以看到,BINLOW 为ROW FORMAT的时候,UPDATE一个字段要记录整行。生产环境曾经有一张大表,有TEXT大字段,而且经常有UPDATE,实际上UPDATE的并不是TEXT字段,而仅仅是4个字节的SHORT INT,但生成BINLOG时依然是整行数据记录,造成大量的磁盘IO和磁盘空间的浪费。

0条评论
0 / 1000
c****n
6文章数
0粉丝数
c****n
6 文章 | 0 粉丝
原创

MYSQL规范为什么建议对大字段分表处理?

2024-09-10 17:23:26
15
0

一、MYSQL规范对大字段的建议

一般来说,MYSQL的开发规范中,会对大字段有拆分的建议,比如:

有text字段的,最好请分表。(本质上说,不是MySQL不适合存储text,而是在太多的情况下我们期望MySQL能够更加高效的提供小数据查询/事务处理)

 

常见字段类型(一般不允许用text和blob),若必须使用则拆分到单独的表

 

WHY?我们通过实操验证看看为什么会有这条规范

二、实操验证:

1、 建表

create table cygtest9(id int primary key,age int,name text);

 

2、 插数据

 

 

Insert into cygtest9 values(1,28,'dskjdojwoejohdohdohgosjdijsdniiwwewew');

 

Insert into cygtest9 values(2,32,'dskjdojwoejohdohdohgosjdijsdniiwdswewew');

 

3、 UPDATE

Update cygtest9 set age=age+1 where id=2;

 

4、 查看BINLOG

 

 

 

三、总结

如果不分表,会有什么后果:

 

从BINLOG可以看到,BINLOW 为ROW FORMAT的时候,UPDATE一个字段要记录整行。生产环境曾经有一张大表,有TEXT大字段,而且经常有UPDATE,实际上UPDATE的并不是TEXT字段,而仅仅是4个字节的SHORT INT,但生成BINLOG时依然是整行数据记录,造成大量的磁盘IO和磁盘空间的浪费。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0