关于oracle数据库的优化后记-数据表的创建及新增数据的关联

优化主要涉及的都是大数据表

大数据表的优化除了本身的sql语句等效的高效替换,然后才会涉及到索引的使用。

大数据表的新增字段频繁怎么办

数据表的创建需要注意什么

如果大数据表设计得足够完善,且有后期预留含默认值的非空字段【最好不只一列】,可能在设计上就比较好维护:

  1. 通用的基本流水表最初就要设计好,无论是系统间和系统内子服务间的交易流水放在一起字段区分还是分别用不同的表做记录,是没有太大的区别,只需要保留主要的唯一流水,来源系统,目标系统,请求时间,请求交易码,特定交易的主要关键数据【可列出最多3-5列项来存储】,响应状态,响应结果码,响应时间,如有必要可以加上请求和响应的完整数据加密大字段存储;
  2. 特征性的基本信息【用户信息,签约信息,账务信息】,至少要保证有主键信息【单一序列号主键或者序列号与多类型/子序列组合主键】,这是表创建初始就要考虑好的;
  3. 其他的非经常性的维护数据,一般数据比较稳定,有点百十条,上千,一般不会超过上万条;

数据表的后期维护新增字段怎么办

可能出现的需要维护变更的情况有哪些

  1. 通用的基本流水表最设计比较完善的话,后续如果没有系统层优化的要求,不推荐做新增列项;
  2. 特征性的基本信息【用户信息,签约信息,账务信息】这一类表因为需求变动经常会有信息属性或者控制属性的新增,在依据原有主键信息的情况下,如果是可以复用主键,不需要新增字段控制,只需要新增主键中的一组新的值来新增新类型数据,而且在业务上是完全说得通的,那么这样就完全不必要新增;但是有时候复用主键信息无法在业务合理上通过,如果新增的属性对于现有属性来说,只是部分增量数据都需要判断的,那么为了表不至于存在太多无用的空值,可以在创建或者现有的额外信息表(类似的,一个用户信息假设有用户编号【主键】,姓名,证件号,需要加一个白名单用户的控制,白名单用户信息不会太多)来储存,然后额外信息表可以没有主键但必须有基本信息的主要字段索引,如果有必要也可以创建主键,主要字段和额外属性类型,其他的类似增改关相关用户和时间,额外信息的附加信息;而如果新增列项必须适用于全量数据(特别是类型相当的体量的数据,没有数据拆分或者拆分后数据量依然不少),那就需要新增可空列,建立判空函数索引优化,后续此种情况出现比较多的话,最后一定要考虑表的垂直拆分++和水平拆分的大型优化;
  3. 其他的非经常性的维护数据,一般数据比较稳定,新增非空含默认值的字段比较快;

如果考虑到后期维护可能存在的严重性,新建或者设计数据表有什么规则吗

大数据表的设计,除了基本的字段考虑全面,之外,多考虑下下面的内容:

  1. 通用的基本流水表不做经常性维护,只作为交易记录的留存;
  2. 特征性的基本信息【用户信息,签约信息,账务信息】,在设计上可能很难考虑到后续需求的需要,特别是账务信息,因为数据量比用户信息高出很多个指数级别,有必要做数据拆分转移,最基本的是按照时间去分割数据到历史表,最初的设计要预留一定的非空默认值字段(初始字段有20个,按照30%的比例的话预留6个字段),账户信息新增的字段通常是在全量数据起作用,或者是增量数据起作用,但因为数据量一直不低,在sql优化的考虑下尽量复用现有类型字段,或者用长字段的一个单位做标记,这个同样是需要创建子字符串的函数索引;
  3. 如果有其他测试的需求,至少还需要给所有的表添加测试特有字段,例如是否模拟数据标记等;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值