文档

分库分表

更新时间:

数据库访问代理在后端将数据量较大的数据表水平拆分到各个 RDS 数据库中,后端的这些 RDS 数据库被称为分库,分库中的表被称为分表。

拆分后,每个分库负责一份数据的读写操作,从而有效的分散了整体访问压力。在系统扩容时,只需要水平增加分库的数量,并且迁移相关数据,就可以提高数据库访问代理系统的总体容量。

数据拆分

数据库访问代理支持库级拆分,表级拆分和分库分表拆分,通过数据库访问代理 DDL 语句指定,具体操作参见 DDL 语法

数据访问代理根据指定拆分键的值,采用特定的算法进行计算,然后根据计算结果将数据存储到对应的分库/分表中。拆分键即分库/分表字段,因此分为分库键和分表键。目前,拆分键只支持单个字段。

  • 分库键:数据库访问代理根据分库键的值将数据水平拆分到后端的各个 RDS 分库里。键值相同的数据一定位于同一个 RDS 数据库。

  • 分表键:每一张逻辑表都可以定义自己的分表键,键值相同的数据一定位于同一个 RDS 数据表。

拆分键
说明

在执行带有 WHERE 条件的 UPDATE、DELETE、SELECT 语句时,如果 SQL 语句中没有使用拆分键,或者虽然指定了拆分键但是范围太广,会导致 SQL 语句被分发到所有分库上执行(即全表扫描),且执行结果会在数据库访问代理中进行合并。全表扫描响应较慢,在高并发业务场景中应尽量避免使用。