• Oracle数据库性能优化基础


     

     

     

    1.数据处理分类OLTP,OLAP

    2.Oracle特性

    3.数据库优化方法论/原则

    方法论:自顶向下优化和自底向上优化

    3.1 自顶向下优化

    3.2 自底向上优化

    对于多年的老系统出现性能问题时,就只能自底向上进行分析优化了,分析角度通常包括以下部分,

    3.3 性能优化2/8原则

    4 性能指标和监控

    4.1 指标

    例如,通常要检验一个优化是否有效,

    4.2 执行计划和执行路径

    4.3 监控和分析工具

    5常用优化方法

    5.1索引

    5.2表设计

    5.3执行计划

    5.4 排序和连接

    5.4.1 尽量不排序

     

    即,Oracle的Top-N算法,用了冒泡排序,只是从整个数据集选了10次最大值,然后就没继续下去了,

    这样就避免了对整个数据集的排序,Top-N算法复杂度仅仅10*N

    5.4.2 表连接

    5.4.2.1. 嵌套循环(即表连接)和复合索引通常同时使用

    三种连接

    需要遵循以下原则:

     5.4.2.2 大数据处理:排序合并连接技术(sort/merge)

    、、

    5.4.2.3 哈希连接:适合大数据

     5.4.3. 多表连接

     

     

     

    5.5SQL优化

     几个优化建议,

    5.5.0 减少或不排序

    注意隐含排序的操作(distinct, union,group by (10g以前)等)

    查看执行计划可知道排序

    索引本身已经排好序,可以加快速度

    5.5.1.不要轻易在字段前加函数,例如下面

     

     5.5.2.也不要将字段嵌入表达式,例如这样,

    5.5.3. 改写建议,可以使用代数等式替换,将字段前的函数去掉,不过这个需要数学基础

    5.5.5用好复合索引

    5.6 统计信息优化 (会影响索引的正常使用)

    5.6.1什么是RBO

    5.6.2什么是CBO

     5.6.3 为什么需要手机统计信息(为了支持CBO正常运转)

    参考:

    1.http://blog.csdn.net/yzsind/article/details/6059209

    2. 《品悟性能优化》

    =========================== 

    总结

    索引优化
    B*树单字索引
    尽量为约束条件字段建立索引
    如果约束条件字段不固定,尽量针对单字段建立普通B*树索引
    尽量在可选性高的字段上建立索引
    如果是多表连接,要在被驱动表的连接字段上建立索引


    SQL优化
    1.减少不必要的排序
    2.不要在字段前加函数
    3.不要将字段嵌入表达式中(可用代数等式改写)
    4.考虑复合索引的前缀性和可选性
    5.尽量不要用子查询,改用表关联,防止数据库选错执行路径
    6.尽量不用exists,二用in。 因为exists底层用子查询实现
    7.注意表连接的顺序
    8.用好top n算法


    定期采集数据库统计信息(记录数,物理块树,记录平均长度,数据分布,索引节点树,深度等)
    低版本数据库采用RBO(基于规则优化器)来创建执行计划
    新版本数据库采用CBO(基于成本优化器)来创建执行计划
    采集数据库统计信息就是为了为CBO提供依据

  • 相关阅读:
    网页中这 10 种字体的运用方式,不会让人觉得 Low
    如何估算文章阅读时长?
    如何养出一个三十几亿身家的儿子
    2018免费的隐私保护工具
    写一份好的产品说明书
    安装 Ubuntu 19.10 选用 zfs 文件系统
    ESXI常用命令
    Harbor ($docker login) Error saving credentials
    Vue中使用matomo进行访问流量统计的实现
    eslint Cannot read property 'range' of null错误
  • 原文地址:https://www.cnblogs.com/fysola/p/6416368.html
Copyright © 2020-2023  润新知