IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Oracle sql性能优化案例 -> 正文阅读

[大数据]Oracle sql性能优化案例

v$sql? 表字段说明:

sql_id:唯一性标识;

sql_fulltext:SQL执行内容;

elapsed_time:消逝时间,即自然耗费的时间,单位是微妙,10的-6次方秒;

cpu_time:cpu花费时间,和cpu核数有关,单位是微妙,10的-6次方秒;

案例一:

? ? ? ? 新上线程序,表进行初始化1千万数据初始化完毕后,发现查询很卡。

执行的SQL:

SELECT *
  FROM (SELECT tmp.*, rownum row_id
          FROM (SELECT line_id
                      ,header_id
                      ,code_company
                      ,code_cc
                      ,expense_nature
                      ,natural_account
                      ,sub_account 
                      /**
                        省略
                        */
                  FROM tml_je_lines
                 WHERE (header_id = :1)
                 ORDER BY line_id ASC) tmp
         WHERE rownum <= :2)
 WHERE row_id > :3

查询 v$sql表和AWR报告,这个SQL大概每次执行时间耗费83s。tml_je_lines.header_id是有索引的,这个耗费时间有点不理解。?

重新收集这张表的信息

begin
  -- Call the procedure
  sys.dbms_stats.gather_table_stats(ownname => 'HDM',
                                    tabname => 'TML_DMS_JE');
end;

查看sql_id:axj7d5gsay79n 的SQL执行路线,发现是系统还是对tml_je_lines做了全表扫描。

SELECT sys.dbms_xplan.display_cursor(sql_id          => 'axj7d5gsay79n'
                                    ,cursor_child_no => 0
                                    ,format          => 'TYPICAL')
  FROM dual;

tml_je_lines.header_id对应的索引是OK,为什么它还是不走索引了。可能是以下原因:

? ? ?SQL查询需要分析耗费时间成本,生成最佳执行计划(根据索引和数据分布),?在执行相同的SQL时,在v$sql表中已经由该SQL,程序还是用走相同的执行计划,哪怕执行计划错误。所以我们需要去掉缓存里面sql_id:axj7d5gsay79n这条SQL的缓存,让它重新生成最佳执行计划。

在这里插入图片描述

清除缓存池的v$sql 该条数据。重新查询,发现每次耗费的时间就很短了。

SELECT 'begin  sys.dbms_shared_pool.purge(''' || t.address || ',' ||
       t.hash_value || ''',''c'');end;' sql_text
      ,sql_id
      ,address
      ,hash_value
      ,executions
      ,loads
      ,parse_calls
      ,invalidations
  FROM v$sql t
 WHERE t.sql_id = 'axj7d5gsay79n'

BEGIN
  sys.dbms_shared_pool.purge('000000039E18DC28,4038008116', 'c');
END;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:16:02  更:2022-12-25 11:18:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 8:23:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码