加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

几万万记录,数据库表布局怎样滑腻改观?

发布时间:2019-09-23 03:30:22 所属栏目:编程 来源:58沈剑
导读:继承答复常识星球水友提问。 题目域:数据量大、并发量高场景,如安在流量低峰期,滑腻实验表布局改观? 画外音,一样平常来说,是指增进表的属性,由于: 假如是减column,进级措施不行使即可; 假如是修改column,措施兼容性轻易出题目; 起首,一路看下有哪些

几万万记录,数据库表布局怎样滑腻改观?


继承答复常识星球水友提问。

题目域:数据量大、并发量高场景,如安在流量低峰期,滑腻实验表布局改观?

画外音,一样平常来说,是指增进表的属性,由于:

  • 假如是减column,进级措施不行使即可;
  • 假如是修改column,措施兼容性轻易出题目;

起首,一路看下有哪些常见方案。

(1) 方案一:在线修改表布局。

画外音:alter table add column

数据量大的环境下,锁表时刻会较长,造成拒绝处事,一样平常不行行。

(2) 方案二:通过增进表的方法扩展属性,通过外键join来查询。

举个例子,对:

  1. t_user(uid, c1, c2, c3) 

想要扩展属性,可以通过增进一个表实现:

  1. t_user_ex(uid, c4, c5, c6) 

数据量大的环境下,join机能较差,一样平常不行行。

(3) 方案三,通过增进表的方法扩展,通过视图来屏障底层伟大性。

同上,视图服从较低,一样平常不行使视图。

画外音:至少58抵家榨取行使视图。

(4) 方案四,揍产物司理,阻止她修改需求。...

(5) 方案五,提前预留一些reserved字段,加列可复用这些字段。

这个方案可行,但假如预留过多,会造成空间挥霍。

(6) 方案六,pt-online-schema-change

对付MySQL而言,这是今朝较量成熟的方案,被宽大公司所行使。

画外音:我呆过的互联网公司,数据库均行使MySQL。

下面仍以用户表扩展为例,说下这个器材内部的道理与步调。

假设:

  1. user(uid, name, passwd) 

要扩展到:

  1. user(uid, name, passwd, age, sex) 

第一步,先建设一个扩充字段后的新表:

  1. user_new(uid, name, passwd, age, sex) 

画外音:就是被扩展后的表。

第二步,在原表user上建设三个触发器,对原表user举办的全部insert/delete/update操纵,城市对新表user_new举办沟通的操纵;

第三步,分批将原表user中的数据insert到新表user_new,直至数据迁徙完成;

第四步,删掉触发器,把原表移走(默认是drop掉);

第五步,把新表user_new重定名(rename)成原表user;

扩充字段完成,整个进程不必要锁表,可以一连对外提供处事。

操纵进程中必要留意:

  • 改观进程中,最重要的是斗嘴的处理赏罚,一条原则,以触发器的新数据为准,这就要求被迁徙的表必需有主键(这个要求根基都满意);
  • 改观进程中,写操纵必要成立触发器,以是假如原表已经有许多触发器,方案就不可(互联网大数据高并发的在线营业,一样平常都榨取行使触发器);
  • 触发器的成立,会影响原表的机能,以是这个操纵必需在流量低峰期举办;

pt-online-schema-change是DBA必备的利器,较量成熟,在互联网公司行使普及,要相识更具体的细节,亦可以Google一下。

任何离开营业的架构计划都是耍混混。

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请接洽原作者】

几万万记录,数据库表布局怎样滑腻改观?

戳这里,看该作者更多好文

【编辑保举】

  1. 数据库应承空值(null),每每是悲剧的开始(1分钟系列)
  2. 通过自研数据库画像器材支持“去O”评估
  3. 数据库软件架构,到底要计划些什么?
  4. 内存KV缓存/数据库,可以选择它? | 1分钟系列
  5. 亿级流量高并发下,缓存与数据库纷歧致,咋办?
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读