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)默认流程如下所示:

  1. 建立一个临时文件,扫描表 A 主键的所有数据页;
  2. 用数据页中表 A 的记录生成 B+ 树,存储到临时文件中;
  3. 生成临时文件的过程中,将所有对 A 的操作记录在一个日志文件(row log)中,对应的是图中 state2 的状态;
  4. 临时文件生成后,将日志文件中的操作应用到临时文件,得到一个逻辑数据上与表 A 相同的数据文件,对应的就是图中 state3 的状态;用临时文件替换表 A 的数据文件。

二、analyze table

analyze table t 其实不是重建表,只是对表的索引信息做重新统计,没有修改数据,这个过程中加了 MDL 读锁

三、optimize table

optimize table t 等于 recreate+analyze

四、gh-ost

  1. gh-ost 首先连接到主库上,根据 alter 语句创建幽灵表,
  2. 然后作为一个备库连接到其中一个真正的备库或者主库上(根据具体的参数来定),一边在主库上拷贝已有的数据到幽灵表,一边从备库上拉取增量数据的 binlog,然后不断的把 binlog 应用回主库。
  3. 等待全部数据同步完成,进行 cut-over 幽灵表和原表切换。图中 cut-over 是最后一步,锁住主库的源表,等待 binlog 应用完毕,然后替换 gh-ost 表为源表。gh-ost 在执行中,会在原本的 binlog event 里面增加以下 hint 和心跳包,用来控制整个流程的进度,检测状态等。

optimize table、analyze table、alter table、gh-ost相关推荐

  1. hive、pg库:新增字段、修改字段类型 alter table

    hive新增字段: alter table dwa.A_DS_INACTIVE_MODEL_D add columns (model5lr_prob double COMMENT 'model5lr_ ...

  2. mysql alter table 速度慢_MySQL中ALTER TABLE时的性能问题

    当对于一个大表进行ALTER TABLE的时候,性能问题就产生了.MySQL大部分改动的步骤如下:根据新的表结构创建一个空表,从旧表中把数据取出来插入到新表中,在删除旧表.这是个非常漫长的过程.许多人 ...

  3. 关于MySQL : CREATE TABLE if not exists xxx/ALTER TABLE xxx ADD COLUMN IF NOT EXISTS xxx语法使用注意

    背景 在测试程序时,对于你新建的表,并且额外插入了其他新的列字段.当你再次插入时,报错,表名或者列名重复. 导致的结果 导致的结果就是你的程序运行不下去,因为在你周期调度,或者再次调度时,逻辑上需要再 ...

  4. MySQL中alter table range partition

    最近在用MySQL开发新功能时,使用到了alter table range partition的功能,在此总结下mysql innodb支持的alter table range partition相关 ...

  5. TABLE 以及 CONSTRAINT(创建TABLE以及CONSTRAINT、修改TABLE结构、建表后添加CONSTRAINT、删除TABLE和CONSTRAINT)

    文章目录 TABLE 以及 CONSTRAINT 创建 TABLE 以及 CONSTRAINT 修改 TABLE 结构 建表后添加 CONSTRAINT 删除 TABLE 和 CONSTRAINT T ...

  6. MySQL使用ALTER TABLE创建索引

    在已经存在的表中创建索引,除了使用CREATE INDEX,还可以使用ALTER TABLE语句,语法格式 ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] I ...

  7. mysql更改数据语句6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句(1)

    ALTER TABLE 语句 ALTER TABLE更改表的结构.例如,可以添加或删除列.创建或销毁索引.更改现有列的类型.重命名列或表本身.还可以更改表特性,例如用于表或表注释的存储引擎. ●要使用 ...

  8. alter table move与shrink space

    http://www.xifenfei.com/1051.html 都知道alter table move 或shrink space可以收缩段,用来消除部分行迁移,消除空间碎片,使数据更紧密,但mo ...

  9. 加快ALTER TABLE 操作速度

    mysql的alter table操作的性能对于大表来说是个大问题.mysql大部分修改表结构操作的方法都是用新的结构创建一个 新表,从旧表中查出数据插入新表,然后在删除旧表.这样的操作很耗费时间,而 ...

  10. MODIFY STRUCTURE和ALTER TABLE的区别?

    modify 是vfp的命令,alter是 sql的命令. alter 是针对表整体,modify是对表中的某一项字段进行修改. 修改表结构包括:增加字段.删除字段.增加约束.删除约束.修改缺省值.修 ...

最新文章

  1. TensorFlow(9)(项目)人马图像分类(卷积神经网络)
  2. C# WINFORM 自定义窗体 皮肤[转]
  3. 买笔记本的10大愚蠢表现
  4. 稚晖君自制机械臂,能给葡萄缝针的那种,成本1万块,网友:能把脑子开源一下?...
  5. 20180525小测
  6. Git 常用命令速查表(图文+表格)【转】
  7. 自动化运维平台中的统一认证接入与单点登录实现
  8. es6 使用修饰器实现Mixin模式
  9. 1688API接口,item_get_app - 获取1688app上原数据
  10. python绘图代码大全_python绘图代码总结
  11. 农业银行计算机类笔试题库,中国农业银行笔试题库含答案
  12. codeforces-703(好题)
  13. 苦练基本功《如何阅读看懂一篇Datasheet》
  14. 黃綜翰:我的風羽路-新團隊新夢想
  15. 微信小程序识别二维码参数
  16. FDC2214学习笔记
  17. 假如自家APP被苹果下架了 你会怎么处理?
  18. 知识付费领域市场格局与投资观察
  19. 自学编程到底需要多长时间?
  20. electron学习

热门文章

  1. 汽车线束检测有哪些内容?
  2. 与或非c语言是表示乘法,与 或 非 异或
  3. 文件夹备份软件的使用
  4. oracle 应收未传总账,oracleEBS应收系统中的未标识收款是什么?
  5. 如何优雅的设计一个告警系统?要点都在这了
  6. 使用linux记事本的技巧
  7. java 3gp 转mp3_java实现音频转换
  8. 手机HCI日志抓取教程
  9. HI226 HI229 6轴姿态传感器ROS串口例程说明
  10. 使用 AccessibilityService服务抢红包