👩💻 Join our community of thousands of amazing developers!
分库分表理论什么情况下需要分库分表?MySQL单表容量大于1000万(BTREE索引树在3-5层之间)。垂直切分垂直分库根据业务耦合性,将业务关联度低的不同表存储在不同的数据库。类似于”微服务”。垂直分表把一个表的多个字段拆分成多个表,一般按字段的冷热拆分,热字段一个表,冷字段一个表。优点同时解决了业务层面的耦合;一定程度提升IO、数据库连接数、单机硬件的资源瓶颈。缺点无法使用sql join,需要编码进行聚合操作,开发复杂度增加;分布式事务处理复杂;依然存在单表数据量大的问题。水平切分水平分库水平分表优点解决单表数据量过大的问题;业务编码改造相对较小。缺点跨分片的事务一致性难以保证;跨库的join关联查询性能差。数据分片规则Hash取模按照数据的某一特征(key)来计算哈希值,并将哈希值与系统中的节点建立映射关系,从而将哈希值不同的数据分布到不同的节点上。如选择id作为数据分片的key,n台实例,则取id的hash值 % n得到的结果就是数据所在实例。优点实现简单缺点加入或者删除一个节点的时候,需要迁移大量的数据;很难解决数据不均衡的问题;如果查询条件中不带用于分片的key,那么需要...