Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309063
  • 博文数量: 40
  • 博客积分: 1
  • 博客等级: 民兵
  • 技术积分: 670
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-31 11:19
个人简介

从事银行核心系统设计开发的程序猿

文章存档

2019年(1)

2018年(4)

2017年(11)

2016年(6)

2015年(18)

分类: 信息化

2018-03-30 23:56:40

分表与分区的选择:

 

         分表是表名不同,表结构一致,由应用程序自行实现访问的封装。

         分区是在同一个表内,由数据库实现记录存储的分片,对应用程序透明。此时索引可选择是分区索引还是全局索引。但有分区删除的情况时,不应建立全局索引。

         如果划分的规则未来会有变化,则应选择分表,可实现不停机修改规则。因此,按日期可分区,按hash应分表。

 

         按日期拆分的,查询时必须带日期或日期范围。历史日期数据不得更改,要进行转移。只应访问当日和昨日的数据,其余日期由历史数据提供查询。

         按稳定不变的各类ID(如账号,客户号,卡号)进行hash分表的,查询时必须带ID,如果有间接查询的情况,应建立映射转换表。Hash选择要直观和均匀。

 

 

批处理性能:

 

         批处理并发时,并发进程按照分表分区来拆分,每个进程顺序处理且只处理一个分片。因此,相同ID的其他表应保持一样的hash规则,达到进程处理的拆分一致。

 

         并发处理时有大量insert的表,要注意达到最高性能,需要做到:同一个分片只由一个进程插入数据。

 

         批处理时,对一定可以成功,并且对外无影响的部分处理,可登记异步加工。如内部账记账,补清算。

         批处理时,在一个进程内,应考虑一个事务下对频繁更新插入的表记录进行合并,一次性处理,如多笔一对一记账可以改变成多对一记账,或者设计传票和明细表结构时,能体现多合一的汇总传票,汇总明细。如果不能,还可以将一个事务中该记录的多次update在应用中暂存,commit时再进行一次update,将一个事务中多次insert暂存,commit时进行整体insert

 

阅读(3138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~