MySQL在线加字段实现原理】的更多相关文章

博客已转移到腾讯DBA博客 http://tencentdba.com/ 腾讯互娱内部维护了一个MySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能,这个分支我们内部称为TMySQL.该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下介绍下其实现原理. 1. GCS行格式 需要在innodb中实现类似oracle的快速加字段功能,仅仅基于原来的行格式是不行的,必须对其进行扩展.为了保证原MySQL和innodb的兼容性,不改变原存储格式的行为,在…
mysql在线修改表结构大数据表的风险与解决办法归纳 - 王滔 - 博客园 http://www.cnblogs.com/wangtao_20/p/3504395.html MySQL 加索引 加字段 锁表问题-CSDN问答https://ask.csdn.net/questions/261051 MySQL中的锁(表锁.行锁) - 雪山飞猪 - 博客园https://www.cnblogs.com/chenqionghe/p/4845693.html MySQL 加索引 加字段 锁表问题-CS…
使用工具pt-online-schema-change #! /bin/bash stime=`date +%s` echo "增加字段开始测试时间为:`date +%H:%M:%S`" pt-online-schema-change --alter 'ADD COLUMN col11 BIGINT(20) NULL DEFAULT -1 COMMENT "字段注释1" ,ADD COLUMN col2 INT(11) NULL DEFAULT -1 \ COMME…
整理这篇文章的缘由: 互联网应用会频繁加功能,修改需求.那么表结构也会经常修改,加字段,加索引.在线直接在生产环境的表中修改表结构,对用户使用网站是有影响. 以前我一直为这个问题头痛.当然那个时候不需要我来考虑,虽然我们没专门的dba,他们数据量比我们更大,那这种问题也会存在.所以我很想看看业界是怎么做的,我想寻找有没有更高级的方案,呵呵,让我觉得每次开发一个新功能,我在线加字段都比较纠结.后来只知道,不清楚在什么时候,无意中看到一个资料介绍online-schema-change这个工具,于是…
解答你也看一下MySQL5.6在线DDL不锁表,现在我有一张1亿的表,需要增加一个字段,假如我让你去增加这个字段,你应该注意什么,具体怎么操作? 操作如下:1.注意磁盘空间(临时表目录 参数 tmpdir ,因为需要创建临时表使用 algorithm=default,inplace,copy copy是用临时表的方法 lock=default,none,shared,exclusive)2.当前内存剩余量3.当前有没有大的事务在执行4.innodb_online_alter_log_max_si…
互联网应用会频繁加功能,修改需求.那么表结构也会经常修改,加字段,加索引.在线直接在生产环境的表中修改表结构,对用户使用网站是有影响. 以前我一直为这个问题头痛.当然那个时候不需要我来考虑,虽然我们没专门的dba,他们数据量比我们更大,那这种问题也会存在.所以我很想看看业界是怎么做的,我想寻找有没有更高级的方案,呵呵,让我觉得每次开发一个新功能,我在线加字段都比较纠结.后来只知道,不清楚在什么时候,无意中看到一个资料介绍online-schema-change这个工具,于是顺便搜出了不少东西.后…
为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制.之前一直模糊不清,网上也搜不到现成的答案.经过多方资料搜集整理.写出此文供大家一起参阅.由于涉及众多非常底层的知识,我假设读者已经对操作系统和磁盘存取有一定的基础知识.文中如有疏漏,还请大佬指正. 为了探究这个问题,我们要先来回顾一下我之前的一篇文章<文件随机或顺序读写原理深入浅出>讲的文件存储的底层原理知识.如下图所示.一个文件的数据是以块为单位存储到物理磁盘的随机位置,这是由操作系统负责管理的,用户程序无权决定.所以…
概述 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持.最常使用的MYISAM与INNODB都支持表级锁定.表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁). 特点:开销小,加锁快:不会出现死锁:锁定粒度大,发出锁冲突的概率最高,并发度最低. MySQL 中表级锁有两种:一种是表锁,另一种是元数据锁(meta data lock, MDL). 表锁 表锁的语法是 lock tables...read/write.与…
MySQL学习笔记-如何安全的给小表加字段 如果要给一个大表加字段,你一般都会非常谨慎小心,以免对线上业务造成影响,但实际上给一个小表加字段不慎操作也会导致线上业务出问题,这篇文章主要学习一下MySQL中MDL锁对性能的影响,防止采坑. 1.笔记图 2.全局锁 全局锁就是对整个数据库实例加锁 命令: Flush tables with read lock (FTWRL) 全局锁现象:数据更新语句(数据的增删改).数据定义语句(包括建表.修改表结构等)和更新类事务的提交语句会被阻塞 3.数据逻辑备…
最近一个统计系统的大表需要加字段,表的引擎是myisam,表大小在3亿,物理文件在106G.想想都蛋疼.那么这种情况下怎么把字段撸上去呢? 1. 首先想到了<高性能MySQL>提到的直接更改表结构文件(frm),但是在经过测试以后,发现提示表损坏了,需要repair,只好放弃了. 2. 使用pt-online-schema-change,刚开始跑没有问题,后面在凌晨发现影响业务了,也只好放弃了. 3. 最近GitHub开源的gh-ost,属于新鲜玩意,还没有研究,只好放弃. 4. 创建新表,l…