optimize table、analyze table、alter table、gh-ost
MySQL系列
第一章:sql_mode模式
第二章:optimize table、analyze table、alter table、gh-ost
文章目录
- MySQL系列
- 一、alter table
- 二、analyze table
- 三、optimize table
- 四、gh-ost
一、alter table
从 MySQL 5.6 版本开始,alter table t engine = InnoDB(也就是 recreate)默认流程如下所示:
- 建立一个临时文件,扫描表 A 主键的所有数据页;
- 用数据页中表 A 的记录生成 B+ 树,存储到临时文件中;
- 生成临时文件的过程中,将所有对 A 的操作记录在一个日志文件(row log)中,对应的是图中 state2 的状态;
- 临时文件生成后,将日志文件中的操作应用到临时文件,得到一个逻辑数据上与表 A 相同的数据文件,对应的就是图中 state3 的状态;用临时文件替换表 A 的数据文件。
二、analyze table
analyze table t 其实不是重建表,只是对表的索引信息做重新统计,没有修改数据,这个过程中加了 MDL 读锁
三、optimize table
optimize table t 等于 recreate+analyze
四、gh-ost
- gh-ost 首先连接到主库上,根据 alter 语句创建幽灵表,
- 然后作为一个备库连接到其中一个真正的备库或者主库上(根据具体的参数来定),一边在主库上拷贝已有的数据到幽灵表,一边从备库上拉取增量数据的 binlog,然后不断的把 binlog 应用回主库。
- 等待全部数据同步完成,进行 cut-over 幽灵表和原表切换。图中 cut-over 是最后一步,锁住主库的源表,等待 binlog 应用完毕,然后替换 gh-ost 表为源表。gh-ost 在执行中,会在原本的 binlog event 里面增加以下 hint 和心跳包,用来控制整个流程的进度,检测状态等。
optimize table、analyze table、alter table、gh-ost相关推荐
- hive、pg库:新增字段、修改字段类型 alter table
hive新增字段: alter table dwa.A_DS_INACTIVE_MODEL_D add columns (model5lr_prob double COMMENT 'model5lr_ ...
- mysql alter table 速度慢_MySQL中ALTER TABLE时的性能问题
当对于一个大表进行ALTER TABLE的时候,性能问题就产生了.MySQL大部分改动的步骤如下:根据新的表结构创建一个空表,从旧表中把数据取出来插入到新表中,在删除旧表.这是个非常漫长的过程.许多人 ...
- 关于MySQL : CREATE TABLE if not exists xxx/ALTER TABLE xxx ADD COLUMN IF NOT EXISTS xxx语法使用注意
背景 在测试程序时,对于你新建的表,并且额外插入了其他新的列字段.当你再次插入时,报错,表名或者列名重复. 导致的结果 导致的结果就是你的程序运行不下去,因为在你周期调度,或者再次调度时,逻辑上需要再 ...
- MySQL中alter table range partition
最近在用MySQL开发新功能时,使用到了alter table range partition的功能,在此总结下mysql innodb支持的alter table range partition相关 ...
- TABLE 以及 CONSTRAINT(创建TABLE以及CONSTRAINT、修改TABLE结构、建表后添加CONSTRAINT、删除TABLE和CONSTRAINT)
文章目录 TABLE 以及 CONSTRAINT 创建 TABLE 以及 CONSTRAINT 修改 TABLE 结构 建表后添加 CONSTRAINT 删除 TABLE 和 CONSTRAINT T ...
- MySQL使用ALTER TABLE创建索引
在已经存在的表中创建索引,除了使用CREATE INDEX,还可以使用ALTER TABLE语句,语法格式 ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] I ...
- mysql更改数据语句6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句(1)
ALTER TABLE 语句 ALTER TABLE更改表的结构.例如,可以添加或删除列.创建或销毁索引.更改现有列的类型.重命名列或表本身.还可以更改表特性,例如用于表或表注释的存储引擎. ●要使用 ...
- alter table move与shrink space
http://www.xifenfei.com/1051.html 都知道alter table move 或shrink space可以收缩段,用来消除部分行迁移,消除空间碎片,使数据更紧密,但mo ...
- 加快ALTER TABLE 操作速度
mysql的alter table操作的性能对于大表来说是个大问题.mysql大部分修改表结构操作的方法都是用新的结构创建一个 新表,从旧表中查出数据插入新表,然后在删除旧表.这样的操作很耗费时间,而 ...
- MODIFY STRUCTURE和ALTER TABLE的区别?
modify 是vfp的命令,alter是 sql的命令. alter 是针对表整体,modify是对表中的某一项字段进行修改. 修改表结构包括:增加字段.删除字段.增加约束.删除约束.修改缺省值.修 ...
最新文章
- TensorFlow(9)(项目)人马图像分类(卷积神经网络)
- C# WINFORM 自定义窗体 皮肤[转]
- 买笔记本的10大愚蠢表现
- 稚晖君自制机械臂,能给葡萄缝针的那种,成本1万块,网友:能把脑子开源一下?...
- 20180525小测
- Git 常用命令速查表(图文+表格)【转】
- 自动化运维平台中的统一认证接入与单点登录实现
- es6 使用修饰器实现Mixin模式
- 1688API接口,item_get_app - 获取1688app上原数据
- python绘图代码大全_python绘图代码总结
- 农业银行计算机类笔试题库,中国农业银行笔试题库含答案
- codeforces-703(好题)
- 苦练基本功《如何阅读看懂一篇Datasheet》
- 黃綜翰:我的風羽路-新團隊新夢想
- 微信小程序识别二维码参数
- FDC2214学习笔记
- 假如自家APP被苹果下架了 你会怎么处理?
- 知识付费领域市场格局与投资观察
- 自学编程到底需要多长时间?
- electron学习