分库分表讨论

举报
互联网老辛 发表于 2021/06/09 00:36:55 2021/06/09
【摘要】 你为什么会决定进行分库分表,分库分表过程中遇到什么难题,如何解决的 a. 为什么决定进行分库分表 1. 根据业务类型,和业务容量的评估,来选择和判断是否使用分库分表。 2. 当前数据库本事具有的能力,压力的评估。 3. 数据库的物理隔离,例如减少锁的争用、资源的消耗和隔离等。 4. 热点表较多,并且数据量大,可能会导致锁争抢,性能下降。 5. 数据库的高并发...

你为什么会决定进行分库分表,分库分表过程中遇到什么难题,如何解决的

a. 为什么决定进行分库分表
1. 根据业务类型,和业务容量的评估,来选择和判断是否使用分库分表。
2. 当前数据库本事具有的能力,压力的评估。
3. 数据库的物理隔离,例如减少锁的争用、资源的消耗和隔离等。
4. 热点表较多,并且数据量大,可能会导致锁争抢,性能下降。
5. 数据库的高并发,数据库的读写压力过大,可能会导致数据库或系统宕机。
6. 数据库(MySQL5.7以下)连接数过高,会增加系统压力。
7. 单表数据量大,如SQL使用不当,会导致io随机读写比例高。查询慢(大表上的B+树太大,扫描太慢,甚至可能需要4层B+树)
8. 备份和恢复时间比较长。

b. 遇到什么问题
1. 全局pk(主键和唯一索引)的冲突检测不准确,全局的自增主键支持不够好。
2. 分片键的选择。如没有选择好,可能会影响SQL执行效率。
3. 分布式事物,中间价产品对分布式事物的支持力度。
4. 对于开发来说,需要进行业务的拆分
5. 对于开发来说,部分SQL不兼容则需要代码重构,工作量的评估
6. 对于开发来说,跨库join,跨库查询

c. 如何解决
1. 使用全局分号器。或者使用全局唯一id,(应用生成顺序唯一int类型做为全局主键)。
2. 应用层来判断唯一索引。
3. 配合应用选择合适的分片键,并加上索引。
4. 配合应用,配合开发,对不兼容SQL的进行整改。

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/80659105

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。