
前置知识点:
I/O:存储资源
dblink:数据库的链接
1、业务需求和技术实现
①时间范围
②其他范围控制
2、举例分析(2000年北京公交地铁卡刷卡数据测试)【取消原始架构,重塑架构】
①在X86上执行CPU的运算
②C语言写运算逻辑
③纯粹接收运算结果
3、Oracle的应用场景
几十个T以内的Oracle,几十个T到上百T的用Oracle+其他工具,上百T的基本上用其他工具
4、冗余、拆分
①有冗余不拆分,I/O问题
②有冗余就拆分,性能问题
总结:冗余量大才拆,经常在一起访问的,哪怕有冗余也不拆
5、时间调优:
①尽量用> < =
②除非连续性时间,否则between不走索引
6、oracle有隐含算法
超过6张以张的表,形成算法的时候,就不能自行优化
7、过长过复杂的sql最好拆分写(可读性、可维护性、运行性能)
①oracle在计算时分段执行会并发优化
②在一个过于复杂的sql执行时不能自行优化,只能单条跑
8、分区(范围分区、列表分区、散列分区、复合分区)
①仅在一百万左右,可以不分
②数据量达到上亿级,可以分区
③分区数多没有问题,多到一定程度会存在隐患(过万稍微有影响、过亿影响就在明面体现出来了)
a.基本性能影响
b.查询分区效率影响
c.数据泵导出有影响(在重构xml对象定义时)
以上影响均体现在时间上
9、日期类型(date、varchar2、number)
目前大型银行就是用偏移量,实际上就是number(目前已使用该类型)
讨论:date和number差异
a.date严谨性,简单说就是标准,随时代发展,一般转化都是在前台实现,js、java、python等等用类库解决
b.number计算天数时准确,当处于特定条件下,银行类的可以使用
其实两者不存在计算错误,错误一般都是来源于逻辑和算法中
参考资料:
