mysql的分库分表

Posted phoenix tree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的分库分表相关的知识,希望对你有一定的参考价值。

1 什么是分库分表

这里讨论的情况是一台机器上对应一个数据库。

分库的对象是表,分表的对象是行。分库是说把属于同一个模块的相关性很高的表放在同一个数据库中。分表是说把同一个表的的行分成多个子表,把各个子表放在各自的数据库中。

2 分库分表的例子

2.1 垂直划分

现在订单数据库里面有订单表和订单售后表,前者是事实性的,后者不需要实时性,因此将它们放在两个数据库中,一个数据库中放订单表,另外一个数据库中放订单售后表。

2.2 水平划分

例如用户订单数据库,每个用户有一个唯一的user id。

假如我们现在把用户订单数据库水平划分为10个数据库,那么就是把user id%10,这样,模为0的行放在第一数据库中,模为1的行放在第二个数据库中,依次类推。

3 如何实现分库分表的事务

 

4 如何实现跨分片排序分页

在分片前,按照id进行排序,分片之后,也想要按照id排序返回,如何实现?

 

5 跨节点join

6 mysql的分裤分片中间件

mycat

在mycat上,用户使用sql时可以像对待单个数据库来使用。

比如mycat支持跨节点join等,mycat支持事务,实现了acid。

mycat不适用的场景:

分页排序等

https://blog.csdn.net/u013235478/article/details/53178657

 

以上是关于mysql的分库分表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:互联网公司常用分库分表方案汇总

mysql分库分表,而且要保证每条数据唯一

分库分表MySQL分库分表方案

分库分表和一致性hash

分库分表最佳实践

浅谈mysql数据库分库分表那些事-亿级数据存储方案