# <center>merge表不可用的问题</center>
最近碰到了个很有意思的问题,值得一写
给merge表和基础表添加索引时发生了一个问题,不管是先给merge表加索引还是基础表加索引,如果表数据量大都会导致加索引期间对merge表的查询不可用,因为使用merge表必须保证merge表和基础表的表结构一致。因此需要给merge表加索引时,必须坐好评估,确定merge表和基础表的数据量,先给基础表加索引,再给merge表加索引,在加索引期间使业务避免访问merge表即可,等merge表加完索引即可使用merge表查询。4000w条数据一个表加完索引大约4个小时
关于merge表和基表的一些坑需要注意
删除索引
问题:
若先删除了基表的索引,再去删除merge表的索引会有如下报错,因为此时merge表和基表的表结构已经不一致了,merge表完全不可用了。

解决方法:
1、删除merge表,重建
2、把基表的索引重新加回来,然后再删除merge表的索引
产生影响:
如果数据量大的话一旦你删除索引顺序搞错,会导致线上严重的故障。使用第一种方法肯定会把原表删除,删除重建期间业务无法查询merge表,这种方法比较推荐,因为drop表再建表时间相对短一点;第二种方法给基表加索引的时间视数据量而定,4000w条数据4个小时,要是merge表引用的基表有几十个的话,基表重加索引需要几天,显然不可取。
要点:
先删merge索引再删基表索引添加索引
问题:
不管先给merge加索引还是先给基表加索引,在所有的表加索引期间都会导致对merge表的查询不可用
解决方法:
在加索引前对整个表进行评估,数据量大则通知开发加索引期间其他业务对merge表的查询不可用,让他们修改这方面的代码。等到基表和merge表的索引都添加完毕再恢复对merge表的查询。
mysql的文档写的更全
MERGE Table Problems
其中关于索引的一段

已经告诉你了必须保证基表和merge的表结构一致,因此添加索引导致不一致的解决方法也就很容易想到了,要么保持一致,要么删了重建
# <center>merge表不可用的问题</center>的更多相关文章
- mysql merge表介绍
在Mysql数据库中,Mysql Merge表有点类似于视图.下面就让我们来一起了解一下Mysql Merge表都有哪些优点,希望对您能有所帮助. Mysql Merge表的优点: A: 分离静态的和 ...
- mysql 创建merge表方便查询
SELECT COUNT(*) FROM `comment` SHOW CREATE TABLE `comment` CREATE TABLE `comment1` ( `id` ) NOT NULL ...
- face recognition[Euclidean-distance-based loss][Center Face]
本文来自<A Discriminative Feature Learning Approach for Deep Face Recognition>,时间线为2016年.采用的loss是C ...
- 通过merge语句完成表数据同步
此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下: merge into tb_sys_sqlscripe@branch b using tb_s ...
- UVA 10585 Center of symmetry
题意:给出一个点集,问这个集合有没有中心点使点集对称,这个点可以是点集中的点也可以不是点集的点. 解法:一开始我枚举每两个点连线的中点……结果T了orz当时也不知道怎么想的…… 将点按横坐标排序,如果 ...
- 使用 Windows Media Center 远程控制
http://windows.microsoft.com/en-us/windows/getting-started-windows-media-center#getting-started-wind ...
- 使用 Media Center 遥控器(Windows Vista Premium)
本文适用于安装了 Windows Vista Premium 并附带遥控器的 HP 和 Compaq 台式电脑. 本文简要介绍了三种Windows Media Center 遥控器上每个按钮的功能. ...
- angular表单验证实例----可用的代码
前段时间,公司做一个单页面,就是一个表单验证,早开始在菜鸟教程上关注了angular,所以下派上用场了 angular里面对于表单验证,设置了很多指令. 也就是说不用自己写一些逻辑,直接绑定指令就行. ...
- [WPF] 使用 Visual Studio App Center 持续监视应用使用情况和问题
1. 什么是AppCenter Visual Studio App Center 是几个常见移动开发和云集成服务(如持续集成.持续交付和自动 UI 测试等服务)的集合. 这些 App Center 服 ...
随机推荐
- 洛谷——P1220 关路灯
P1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉 ...
- about乘法逆元
本博客部分摘自 hwim 定义 乘法逆元的定义:若存在正整数a,b,p, 满足ab = 1(mod p), 则称a 是b 的乘法逆元, 或称b 是a 的乘法逆元.b ≡ a-1 (mod p),a ...
- AC自动机(加强版)
题目描述 有NN个由小写字母组成的模式串以及一个文本串TT.每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串TT中出现的次数最多. 输入输出格式 输入格式: 输入含多组数据. 每组数据 ...
- nodeJS一些事儿
node-webkit:开发桌面+WEB混合型应用的神器[大漠穷秋] 展望未来 其实这条路老早就有人在走 网上有很多人在争论,未来究竟是原生的应用会胜出,还是WEB APP会胜出,实际上这两者并不是你 ...
- Unable to connect to the MKS : Failed to connect to server XXXXXX:903
Issue : 通过 vSphere 连接VM控制台的时候, 报错 Unable to connect to the MKS : Failed to connect to server X ...
- LeetCode – Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point t ...
- Android 学习之逐帧动画(Frame)
帧动画就是将一些列图片.依次播放. 利用肉眼的"视觉暂留"的原理,给用户的感觉是动画的错觉,逐帧动画的原理和早期的电影原理是一样的. a:须要定义逐帧动画,能够通过代码定义.也能够 ...
- AVL平衡树的插入例程
/* **AVL平衡树插入例程 **2014-5-30 11:44:50 */ avlTree insert(elementType X, avlTree T){ if(T == NULL){ T = ...
- hdu5296(2015多校1)--Annoying problem(lca+一个公式)
Annoying problem Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- Django-form组件补充
首先来看一个用户登录的实例 from django.forms import Form from django.forms import fields from django.forms import ...