分库分表讨论
【摘要】 你为什么会决定进行分库分表,分库分表过程中遇到什么难题,如何解决的
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)