MYSQL online ddl 运维手册

本文详细介绍了MYSQL 8.0.18中如何进行online DDL操作,包括添加字段、varchar字段扩充、创建索引等,并强调了避免锁表的重要性。在添加字段时,注意varchar字段的字节数与字符集的关系,以及ALGORITHM参数的使用。创建索引分为主键和辅助索引,辅助索引不影响DML操作。
摘要由CSDN通过智能技术生成

以下运维依据数据库版本 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值