image.png
    前置知识点:
    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计算天数时准确,当处于特定条件下,银行类的可以使用
    其实两者不存在计算错误,错误一般都是来源于逻辑和算法中
    参考资料:
    image.png