在现实项目中,往往是这两种情况兼而有之 , 这就需要做出权衡,甚至既需要垂直切分 , 又需要水平切分 。我们的游戏项目便综合使用了垂直与水平切分,我们首先对数据库进行垂直切分,然后 , 再针对一部分表,通常是用户数据表,进行水平切分 。
4
分库分表存在的问题 。
4.1
事务问题 。
在执行分库分表之后 , 由于数据存储到了不同的库上,数据库事务管理出现了困难 。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务 , 又会造成编程方面的负担 。
4.2
跨库跨表的join问题 。
在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联操作将受到限制,我们无法join位于不同分库的表 , 也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成 。
4.3
额外的数据管理负担和数据运算压力 。
额外的数据管理负担,最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于一个记录用户成绩的用户数据表usertable,业务要求查出成绩最好的100位,在进行分表之前,只需一个order
by语句就可以搞定,但是在进行分表之后,将需要n个order
by语句,分别查出每一个分表的前100名用户数据 , 然后再对这些数据进行合并计算,才能得出结果 。
上述整理于互联网
mysql怎么分库分页的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于关于取与舍的名人名言、mysql怎么分库分页的信息别忘了在本站进行查找喔 。
推荐阅读
- mysql用什么cpu,mysql用什么语言操作
- sap系统快捷键,sap常用快捷键
- 速来棋牌游戏的简单介绍
- 大型经营模拟游戏,经营模拟游戏排行榜
- python怎么对应函数 python对函数的定义
- 微信怎么取情侣号视频号,vx号情侣
- flutter抓查,flutter调用jni
- c语言外部函数包括 c语言内部函数和外部函数区别
- 智岸电脑怎么样,智岸电脑怎么样好用吗