zoukankan      html  css  js  c++  java
  • 你为什么会决定进行分库分表,分库分表过程中遇到什么难题,如何解决的?

    你为什么会决定进行分库分表,分库分表过程中遇到什么难题,如何解决的?
    
    
    一、为什么决定进行分库分表?
        1、根据业务类型,和业务容量的评估,来选择和判断是否使用分库分表。
        2、当前数据库本事具有的能力,压力的评估。
        3、数据库的物理隔离,例如减少锁的争用、资源的消耗和隔离等。
        4、热点表较多,并且数据量大,可能会导致锁争抢,性能下降。
        5、数据库的高并发,数据库的读写压力过大,可能会导致数据库或系统宕机。
        6、数据库(MySQL5.7以下)连接数过高,会增加系统压力。
        7、单表数据量大,如SQL使用不当,会导致io随机读写比例高。查询慢(大表上的B+树太大,扫描太慢,甚至可能需要4层B+树)。
        8、备份和恢复时间比较长。
    
    
    二、都遇到什么问题?
        1、全局pk(主键和唯一索引)的冲突检测不准确,全局的自增主键支持不够好。
        2、分片键的选择。如没有选择好,可能会影响SQL执行效率。
        3、分布式事务,中间价产品对分布式事务的支持力度。
        4、对于开发来说,需要进行业务的拆分。
        5、对于开发来说,部分SQL不兼容则需要代码重构,工作量的评估。
        6、对于开发来说,跨库join,跨库查询。
    
    
    三、如何解决?
        1、使用全局分号器。或者使用全局唯一id,(应用生成顺序唯一int类型做为全局主键)。
        2、应用层来判断唯一索引。
        3、配合应用选择合适的分片键,并加上索引。
        4、配合应用,配合开发,对不兼容SQL的进行整改。
  • 相关阅读:
    [bzoj4197][Noi2015]寿司晚宴
    [bzoj3531][Sdoi2014]旅行
    [洛谷P1430]序列取数
    [洛谷P2044][NOI2012]随机数生成器
    [洛谷P2839][国家集训队]middle
    [洛谷P3937]Changing
    [bzoj3532][Sdoi2014]Lis
    [洛谷P2590][ZJOI2008]树的统计
    [洛谷P4311]士兵占领
    [洛谷P1879][USACO06NOV]玉米田Corn Fields
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13159136.html
Copyright © 2011-2022 走看看