首页 数据库 mysql教程 Mysql水平分表_MySQL

Mysql水平分表_MySQL

Jun 01, 2016 pm 01:43 PM
业务

bitsCN.com Mysql在数据量大的情况下,会遇到水平分表的情况。
 
1.       根据业务属性拆表
 
这种分表方式的算法大致是取模,hash,md5等。
 
用业务属性拆表,业务关系复杂的情况下,如果要根据其他条件查询,其他的条件都必须和这个属性关联起来,查询条件必须带有这个属性。
 
例子:
 
用户profile表根据用户ID取模进行水平拆分。
 
社区里有群组,群组里有应用,应用有各种类型。可以用群组ID,应用ID拆表。
 
问题:
 
根据某个条件查询时无法获取拆表的属性
 
1)         条件中含有分表的信息
 
比如用户在某网站下了订单,我们根据用户ID对订单进行了分表,这样用户可以方便地查询他所关联的订单。但用户投诉时,客服需要根据订单号查询订单,订单号中可以含有分表的信息,比如订单拆分成100张表,订单号中可以有两位用来表明该订单处于哪张表中
 
2)         用key-value store存储对应关联
 
原理是用key value store做索引表
 
3)         数据冗余
 
需要关联的表可以进行数据冗余。避免了查询。
 
例子:
 
购买礼品。购买虚拟礼品时,我们根据了购买者的ID进行了拆表,同时订单号中也含有了分表信息。但是用户还可能根据被赠送方进行查询,这时我们可以在购买成功后为被赠送方冗余生成一条记录。
 
4)         缓存,NOSQL
 
和数据冗余类似。例子中提到的群组应用的拆表例子,我们已经按照群组ID和应用类型进行了分表。但是当我要查询最近所有类型的应用时,就遇到困难了。我们需要把该群组的所有应用类型都查询一遍,而且还要再进行排序,分页等等。其实,可以用缓存的方式存储最近几百条应用。
 
2.       根据时间拆表
 
当表的关系比较复杂时,无法根据某个维度进行分表。但是有明显的时效性。
 
例子:
 
想必大家都用微薄,某人发的微薄,会被推送到千家万户。所以某条微薄是无法根据用户ID进行分表查询。而微薄是有很强的时效性的。一年前的默认的动态信息是不会再关心的。我们把微薄按时间分表,三个月一张表。而行级缓存(memcached)只存储了一个月。用户微薄收件箱(微薄ID列表)一般都是限长的。当缓存服务器重启或不命中时,需要查询Mysql,mysql按时间分表,缓存不命中的情况下,大部分情况下都是查近三个月的微薄。所以近1年的微薄我们可以存储在物理资源比较好的数据库服务器上。
 
3.       根据自增长ID拆表
 
这种分割法不是取模分,而是每张表存指定量的数据。如果数据量到了,就存放到新表中。这样可以完全控制每张表的数据量。关系非常简单并且有时效性的情况下可以用。
 
4.       数据迁移的方式
 
当一些很久之前的数据,很少再查询。比如员工工资表,我们可以只存今年的工资情况。而历史数据我们可以迁移到一张salary_old表中,保证数据不会丢失。但也可以用来查询。
 
分库的原理也类似。
 
 by 第零空间 bitsCN.com

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MySQL vs. TiDB:谁更适合你的业务? MySQL vs. TiDB:谁更适合你的业务? Jul 13, 2023 pm 03:09 PM

MySQL vs. TiDB:谁更适合你的业务?

天啊,ChatGPT真的要代替我们工作了吗? 天啊,ChatGPT真的要代替我们工作了吗? Apr 13, 2023 am 08:19 AM

天啊,ChatGPT真的要代替我们工作了吗?

融合通信业务是什么 融合通信业务是什么 Oct 21, 2022 pm 03:11 PM

融合通信业务是什么

图计算的学习与思考 图计算的学习与思考 Apr 11, 2023 pm 12:10 PM

图计算的学习与思考

业务指数级增长,可用性建设也可以如此稳当? 业务指数级增长,可用性建设也可以如此稳当? Jun 09, 2023 am 12:17 AM

业务指数级增长,可用性建设也可以如此稳当?

"半数美国企业在使用ChatGPT,近一半员工可能被AI取代" "半数美国企业在使用ChatGPT,近一半员工可能被AI取代" Apr 22, 2023 am 11:25 AM

"半数美国企业在使用ChatGPT,近一半员工可能被AI取代"

字节跳动在业务中是否使用Golang? 字节跳动在业务中是否使用Golang? Mar 19, 2024 pm 05:33 PM

字节跳动在业务中是否使用Golang?

ChatGPT老板撒钱救难:百万美元帮硅谷银行受害公司,不要借条不用承诺,能还时再还 ChatGPT老板撒钱救难:百万美元帮硅谷银行受害公司,不要借条不用承诺,能还时再还 Apr 12, 2023 pm 04:07 PM

ChatGPT老板撒钱救难:百万美元帮硅谷银行受害公司,不要借条不用承诺,能还时再还

See all articles