广告
返回顶部
首页 > 资讯 > 数据库 >查看性能差的sql语句
  • 102
分享到

查看性能差的sql语句

2024-04-02 19:04:59 102人浏览 泡泡鱼
摘要

查询出性能最差的10条sqlSELECT * FROM (select PARSING_USER_ID,EXECUTioNS,SORTS, COMMAND_TYPE,DISK_R

查询出性能最差的10条sql

SELECT * FROM (select PARSING_USER_ID,EXECUTioNS,SORTS, 

COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea 

order BY disk_reads DESC )where ROWNUM<10 ; 

HASH_VALUE:SQL语句的Hash值。

ADDRESS:SQL语句在SGA中的地址。

这两列被用于鉴别SQL语句,有时,两条不同的语句可能hash值相同。这时候,必须连同ADDRESS一同使用来确认SQL语句。



HASH_VALUE:SQL语句的Hash值。

ADDRESS:SQL语句在SGA中的地址。

这两列被用于鉴别SQL语句,有时,两条不同的语句可能hash值相同。这时候,必须连同ADDRESS一同使用来确认SQL语句。

PARSING_USER_ID:为语句解析第一条CURSOR的用户

VERSION_COUNT:语句cursor的数量

KEPT_VERSIONS:

SHARABLE_MEMORY:cursor使用的共享内存总数

PERSISTENT_MEMORY:cursor使用的常驻内存总数

RUNTIME_MEMORY:cursor使用的运行时内存总数。

SQL_TEXT:SQL语句的文本(最大只能保存该语句的前1000个字符)。

MODULE,ACTION:使用了DBMS_APPLICATION_INFO时session解析第一条cursor时的信息

SORTS: 表示排序的次数

CPU_TIME: 语句被解析和执行的CPU时间

ELAPSED_TIME: 语句被解析和执行的共用时间

PARSE_CALLS: 语句的解析调用(软、硬)次数

EXECUTIONS: 表示同一条SQL语句一共执行了多少次

INVALIDATIONS: 语句的cursor失效次数

LOADS: 语句载入(载出)数量

ROWS_PROCESSED: 语句返回的列总数


查看最消耗资源的sql

SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls  

FROM V$SQLAREA  

WHERE buffer_gets > 10000000 OR disk_reads > 1000000  

ORDER BY buffer_gets + 100 * disk_reads DESC;


DISK_READS:表示物理读的数量。


分析性能差的sql

SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,   

ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,   

ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,   

SQL_TEXT   

FROM V$SQLAREA   

WHERE EXECUTIONS>0   

AND BUFFER_GETS >0   

AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8  



查询共享池中已经解析过的SQL语句及其相关信息

--EXECUTIONS 所有子游标的执行这条语句次数

--DISK_READS 所有子游标运行这条语句导致的读磁盘次数

--BUFFER_GETS 所有子游标运行这条语句导致的读内存次数

--Hit_radio 命中率

--Reads_per_run 每次执行读写磁盘数

笼统的说EXECUTIONS,BUFFER_GETS,Hit_radio越高表示读内存多,磁盘少是比较理想的状态,因此越高越好

另外两个越高读磁盘次数越多,因此低点好



获取执行次数最多的10个SQL

select sql_text,executions

from (

select sql_text,executions,rank() over(order by executions desc) exec_rank

from v$sql

)

where exec_rank <=10;



获取单次执行时间最长的10个SQL

select sql_id,sql_text,round(exec_time/1000000,0) exec_time

from(

select sql_id,sql_text,exec_time,rank() over (order by exec_time desc) exec_rank

from

(

select sql_id,sql_text,cpu_time,elapsed_time,executions,round(elapsed_time/executions,0) exec_time

from v$sql

where executions>1

)

)

where exec_rank <=10;



CPU和IO占用最多:

select sql_text,executions,buffer_gets,disk_reads from v$sql 

where buffer_gets > 100000

or disk_reads > 100000

order by buffer_gets+100*disk_reads desc

前5个花费最多CPU和时间:


select sql_text,executions,

round(elapsed_time/1000000,2) elapsed_seconds,

round(cpu_time/1000000,2) cpu_secs from 

(select * from v$sql order by elapsed_time desc)

where rownum<6

因为V$SQL是动态性能图,只能保留一些频繁执行的SQL。

查看最耗费资源的会话 

select to_char(m.END_TIME,'DD-MON-YYYY HH24:MI:SS') e_dttm, m.INTSIZE_CSEC/100 ints, s.USERNAME usr, m.SESSION_ID sid, m.SESSION_SERIAL_NUM ssn, ROUND (m.CPU) cpu100, m.PHYSICAL_READS prds, m.LOGICAL_READS lrds, m.PGA_MEMORY, m.HARD_PARSES hp, m.SOFT_PARSES sp, m.PHYSICAL_READ_PCT prp, m.LOGICAL_READ_PCT lrp, s.SQL_ID from v$seSSMetric m,v$session s where (m.PHYSICAL_READS>100 or m.CPU>100 or m.LOGICAL_READS>100) and m.session_id=s.SID and m.SESSION_SERIAL_NUM=s.SERIAL# order by m.PHYSICAL_READS DESC,m.CPU desc,m.LOGICAL_READS desc;  



查询使用频率最高的5个查询:  

select sql_text,executions from (select sql_text,executions, rank() over (order by executions desc) exec_rank from v$sql) where exec_rank <=5;


消耗磁盘读取最多的sql top5: 

select disk_reads,sql_text from (select sql_text,disk_reads, dense_rank() over (order by disk_reads desc) disk_reads_rank from v$sql) where disk_reads_rank <=5; 


找出需要大量缓冲读取(逻辑读)操作的查询: 

select buffer_gets,sql_text from (select sql_text,buffer_gets, dense_rank() over (order by buffer_gets desc) buffer_gets_rank from v$sql) where buffer_gets_rank<=5;

您可能感兴趣的文档:

--结束END--

本文标题: 查看性能差的sql语句

本文链接: https://www.lsjlt.com/news/48929.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 查看性能差的sql语句
    查询出性能最差的10条sqlSELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS, COMMAND_TYPE,DISK_R...
    99+
    2022-10-18
  • navicat查看sql语句的方法
    小编给大家分享一下navicat查看sql语句的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!右键数据库里要查看的表,选择【...
    99+
    2022-10-18
  • navicat查看sql语句的示例
    这篇文章给大家分享的是有关navicat查看sql语句的示例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。右键数据里要查看的表,选择【对象信息】;点击【DDL】便可以看到sql语...
    99+
    2022-10-18
  • C# 查看EF生成的SQL语句
    用sqlsever追踪最后的sql语句。 返回IQueryable类型, 里面封装的就是生成的SQL脚本,设置断点queryable = DataContext.Set().Where(whereLambda).AsQu...
    99+
    2019-12-28
    C# 查看EF生成的SQL语句 数据库入门 数据库基础教程 数据库 mysql
  • phpMyAdmin查看创建表SQL语句
    这篇文章将为大家详细讲解有关phpMyAdmin查看创建表SQL语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法一:在 phpMyAdmin 管理工具中,在左边的某...
    99+
    2022-10-18
  • plsql怎么查看sql源码语句
    在PL/SQL中,您可以使用以下方法来查看SQL源码语句:1. 使用DBMS_OUTPUT.PUT_LINE函数:您可以在PL/SQ...
    99+
    2023-10-11
    plsql sql
  • Sql server语句执行时间查看
    declare @begin_date datetimedeclare @end_date datetimeselect @begin_date = getdate()SELECT COUNT(*) AS CNT FROM Stu...
    99+
    2019-01-11
    Sql server语句执行时间查看 数据库入门 数据库基础教程 数据库 mysql
  • SqlServer性能优化,查看CPU、内存占用大的会话及SQL语句
    1,查看CPU占用量最高的会话及SQL语句   select spid,cmd,cpu,physical_io,memusage, (select top 1 [text] from ::fn_get_sql(sql_handle...
    99+
    2019-07-24
    SqlServer性能优化,查看CPU 内存占用大的会话及SQL语句
  • 查看表结构的sql语句怎么写
    小编给大家分享一下查看表结构的sql语句怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!查看表结构的sql语句的方法是:Or...
    99+
    2022-10-18
  • sql的基础语句-sql的查询语句select
     SQL查询语句介绍--select语句1.简单的select查询语句1.1 查行SQL> select * from emp;1.2 查列SQL> select ...
    99+
    2022-10-18
  • 怎么用sql语句查看表结构
    怎么用sql语句查看表结构?针对这个问题,这篇文章给出了相对应的分析和解答,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。第一步,我们打开mysql命令行编辑器。第二步,我们输入密码,登录Mys...
    99+
    2022-10-18
  • MySQL 语句分析及sql进程查看
    在 my.cnf 文件中配置好:slow_query_log=1slow_query_log_file=mysql.slowlong_query_time=10即可记录超过默认的 10s 执行时间的 SQL...
    99+
    2022-10-18
  • SQL Server中怎么查看对象定义的SQL语句
    这篇文章将为大家详细讲解有关SQL Server中怎么查看对象定义的SQL语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。除了在SSMS中查看view,存...
    99+
    2022-10-18
  • 怎么用SQL语句查看SQL Server的结构信息
    这篇文章主要介绍“怎么用SQL语句查看SQL Server的结构信息”,在日常操作中,相信很多人在怎么用SQL语句查看SQL Server的结构信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-18
  • 怎么查看mysql正在执行的SQL语句
    本篇内容介绍了“怎么查看mysql正在执行的SQL语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&nb...
    99+
    2022-10-18
  • MySQL如何快速查看原始SQL语句
    这篇文章主要讲解了“MySQL如何快速查看原始SQL语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL如何快速查看原始SQL语句”吧!准备工作启用...
    99+
    2022-10-18
  • oracle数据库查看锁表的sql语句整理
    目录关键表查看锁表的SIDsql1sql2查看锁表执行语句用sid查询单个查询所有加锁的sql查询未提交事务的SQL杀死锁总结 关键表 V$LOCKED_OBJECT :记录锁信息的表v$sessio...
    99+
    2023-10-26
    oracle查看锁表sql语句 oracle 锁表如何查看 oracle查找锁表语句
  • MySQL中常用查看锁和事务的SQL语句
    MySQL中常用查看锁和事务的SQL语句 当我们在使用MySQL数据库时,了解如何查看锁和事务的状态是非常重要的。这些信息可以帮助我们调试和优化数据库性能,以及解决并发访问的问题。在本博客中,我将介...
    99+
    2023-09-08
    mysql sql 数据库
  • 如何提高SQL语句的性能
    小编给大家分享一下如何提高SQL语句的性能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  1, 从 INSERT 返回 IDE...
    99+
    2022-10-19
  • sql语句查询性能的优化思想(个人理解)
    我对sql语句优化的理解,从以下四个方面入手:1.改写SQL;2.调整数据库或者系统的参数。3.调整表结构;4.建索引。 后续会继续完善的^-^ ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作