一直听同事说分表分库,可是不明白分开了还怎么操作,不都乱套了吗……
无论是分库还是分表,其实最重要的一点是,在代码吧建立一种通过数据映射到某个库或者某个表的逻辑——无论是读,还是写的时候,都按同样的规则确定操作的表和库。
分库,最简单的,你指定所有的用户信息,存到某一个库,而操作日志,记入另外的库。而分表,最简单的,比如,按用户id的奇偶数来确定存储到哪个表。
当然,这个规则,可以写得更复杂,也更符合实际需求。像,按数据量,按用户活跃度来实现多个库之间的负载和压力的均衡。
几乎市面上所有的数据库系统都会带有分库分表功能,这也就是说,你没有必要手动去用代码实现分库分表的功能,只要按照数据库的规定配置好数据库的分库分表功能,数据库会自动帮你完成分库分表过程。在数据库分库分表后,你无须管数据库到底是怎么做到分库分表的,在你的项目中跟平时正常操作数据库一样去写sql语句进行curd就行了,其他的交给数据库系统去解决就好了
当数据量异常庞大的时候,都存在一张表里面,会大幅度降低对这张表的读写性能,这时候就可以考虑下分表了。根据你的业务,制定好分表的规则,就很重要。举个简单的例子来说明:这部分数据有5000w的数据量,对这些数据的查询只需要根据字段A等于某个值来查询,A是一个正整数。那么可以考虑这么分:根据对A的值对10取模,那么数据就被分到10张表里面,table_0, table_1 ... table_9,那么根据A查询的时候,先对A取模,确定要查询的是数据在哪张表里面,然后再去对应的表查询。上面只是一个很简单的例子来说明问题,你的业务逻辑可能还要复杂的多,也可以参考更加复杂的逻辑,类似oracle的表分区什么的。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
无论是分库还是分表,其实最重要的一点是,在代码吧建立一种通过数据映射到某个库或者某个表的逻辑——无论是读,还是写的时候,都按同样的规则确定操作的表和库。
分库,最简单的,你指定所有的用户信息,存到某一个库,而操作日志,记入另外的库。
而分表,最简单的,比如,按用户id的奇偶数来确定存储到哪个表。
当然,这个规则,可以写得更复杂,也更符合实际需求。像,按数据量,按用户活跃度来实现多个库之间的负载和压力的均衡。
几乎市面上所有的数据库系统都会带有分库分表功能,这也就是说,你没有必要手动去用代码实现分库分表的功能,只要按照数据库的规定配置好数据库的分库分表功能,数据库会自动帮你完成分库分表过程。在数据库分库分表后,你无须管数据库到底是怎么做到分库分表的,在你的项目中跟平时正常操作数据库一样去写sql语句进行curd就行了,其他的交给数据库系统去解决就好了
当数据量异常庞大的时候,都存在一张表里面,会大幅度降低对这张表的读写性能,这时候就可以考虑下分表了。
根据你的业务,制定好分表的规则,就很重要。
举个简单的例子来说明:
这部分数据有5000w的数据量,对这些数据的查询只需要根据字段A等于某个值来查询,A是一个正整数。
那么可以考虑这么分:根据对A的值对10取模,那么数据就被分到10张表里面,table_0, table_1 ... table_9,那么根据A查询的时候,先对A取模,确定要查询的是数据在哪张表里面,然后再去对应的表查询。
上面只是一个很简单的例子来说明问题,你的业务逻辑可能还要复杂的多,也可以参考更加复杂的逻辑,类似oracle的表分区什么的。