分库分表

  生产环境Oracle数据库大表性能出现瓶颈:该表用于事务申请、检验和销毁业务,每天千万级请求量,16个应用节点,均操作单数据库单表,当请求量短时间飙升时数据库性能出现扛不住的迹象。考虑进行分库分表优化:

1、单数据库扩展为多数据库。新增两个数据库,用来分担原来的主库压力。主库原来其他表不动,大表数据割接到分库中。在主库新增路由表,保存分库映射分表关系,通过分表定位分库,供程序识别数据源。

2、单表扩展为多表。分表均衡分布在两个新增数据库中。大表分16张表,原t_wlf分为t_wlf_0至t_wlf_15,两个分库各负责8张分表。分库1对应分表0到7,分库2对应分表8到15,映射关系保存到路由表。大表割接算法:取大表中的关键字段手机号码最后两位跟16取模,得到对应的分表后缀数值。大表数据的增删改查均使用该算法找到对应分表。

3、数据割接:分库1建立到主库DBLINK,将大表备份到分库1的t_wlf_bak1,使用上述割接算法导入到分表0到7中,删除备份表;重复该过程,分库2建立到主库DBLINK,将大表备份到分库2的t_wlf_bak2,使用割接算法导入到分库7到15中,删除备份表。

4、分库分表支持扩容,但需要数据迁移,因为取模基数变化了。

  数据库操作完了还得注意修改其他地方。原来只有单一数据源,现在需要将新增分库的数据源和数据实例配置到对应的容器和ORM中。

posted on 2017-02-17 19:20  不想下火车的人  阅读(314)  评论(0编辑  收藏  举报

导航