淘票票
2025/12/3大约 1 分钟
说一说你在这个项目中是如何进行分库分表的,为什么要这样做?
回答:
在这个项目中,我使用 ShardingSphere 来实现分库分表。用户表、手机号表、邮箱表等核心数据表都做了分库分表处理,例如:
用户表
t_user- 分库键:
id,分表键:id - 分片算法:MOD 取模
- 实际表:
ds_0.t_user_0、ds_1.t_user_1 - 根据用户 ID 自动路由到对应数据库和表
- 分库键:
手机号表
t_user_mobile/ 邮箱表t_user_email- 分库键 / 分表键:
mobile/email - 分片算法:HASH_MOD
- 自动计算落到具体的数据库和表,保证唯一性和高并发查询性能
- 分库键 / 分表键:
为什么要这样做:
- 提升性能:单表数据量大时,查询和写入会成为瓶颈,分库分表可以分散压力。
- 支持高并发:多个库和表可以并行处理请求,减少数据库负载。
- 可扩展性强:随着业务增长,可增加数据库节点或表数量,轻松扩容。
- 运维效率高:单库备份和恢复更快,避免单点性能问题。
在业务代码里依然使用逻辑表(如 t_user)进行操作,ShardingSphere 会自动处理路由和加密字段,业务代码无需关心具体的物理表,实现透明分库分表。