分库分表概述:分库分表可以分为只分库、只分表和既分库又分表三种情况。分库是把一个数据库分成多个小数据库,分表则是将一张大表拆分成多张小表,无论是横向还是纵向拆分。
分区:分区是形成分区表的一种方式,每个分区都是独立的逻辑表,但实际上是由多个物理子表组成。分区能够单表存储更多数据并提高维护便利性,同时部分查询可以因落在少数分区上而速度更快。
垂直拆分:垂直拆分是将一个大表中不常用的或者长度较大的字段拆分出去放到扩展表中,有助于解决字段过多的大表问题,并且可以避免"跨页"问题导致的性能开销。
水平拆分:水平拆分是将表中不同的数据行按照一定规律分布到不同的表中,通常是通过主键或者时间等字段进行Hash和取模后拆分,这样可以降低单表数据量,优化查询性能。
分布式数据库中间件:分布式数据库中间件如ShardingSphere、MyCAT、TDDL和Vitess提供了分库分表的功能,支持多种分片策略并提供分片、分布式事务、读写分离等功能,方便了分库分表的实现。