以下运维依据数据库版本 MYSQL 8.0.18。
1 DDL操作
MYSQL DDL 操作不当会造成锁表,以下依据常用DDL操作进行运维说明,规避锁表。
1.1 online-ddl注意事项
1.1.1 临时空间占用
inplace算法添加方式会占用—tmpdir参数所指空间。
临时排序文件会存储在这个文件夹下。
1.1.2 内存占用
DDL创建期间的DML操作产生数据会占用innodb_sort_buffer_size,最大可占用值为innodb_online_alter_log_max_size。超出这个值则会报DB_ONLINE_LOG_TOO_BIG错误。
1.1.3 copy方式临时空间占用。
copy方式临时空间占用则是在所对应表的目录下,所以要查看该目录下空间是否满足。
1.2 添加字段
添加字段方式的算法为inplace,毫米级即可加上。
1.3 varchar字段扩充
0-255字节数内扩展、256-65535内扩展会用inplace方式,毫秒级即可加上。
0-255字节数直接扩充到 256以上会用copy方式,锁表。
原因:物理存储时,字符类型 长度为0-255字节 会分配1个字节存储长度值,256-65535会用2个字节存储。所以当超过256时,需要重整物理存储结构,重建表。
1.3.1 注意事项
a) varchar中数字为字符数,需要换算成字节数,与字符集相关。
例:utf8 占3个字节,则0-85字符,86-21845字符,这两个区间内扩展使用inplace方式,跨区间为copy方式。
b) 生产上为避免误操作,则扩展字段是加上 ALGORITHM=INPLACE算法控制,如果不符合则直接报错&#x
MYSQL online ddl 运维手册
最新推荐文章于 2024-06-13 23:26:25 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)