Oracle 性能慢排查脚本

Posted oioele

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 性能慢排查脚本相关的知识,希望对你有一定的参考价值。

查看总消耗时间最多的前100条SQL语句

select * from ( select v.sql_id,v.child_number,
v.sql_text,last_load_time,v.PARSING_USER_ID,
ROUND(v.ELAPSED_TIME / 1000000 / (CASE
 WHEN (EXECUTIONS = 0 OR NVL(EXECUTIONS, 1 ) = 1) THEN 1
 ELSE EXECUTIONS
 END),
 2) "执行时间\'S\'",
 v.SQL_FULLTEXT,v.cpu_time,v.disk_reads,
rank() over(order by v.elapsed_time desc) elapsed_rank
from v$sql v ) a
where elapsed_rank <= 100 and last_load_time > to_char(sysdate - 1/24, \'YYYY-MM-DD/HH:MI:SS\') order by "执行时间\'S\'" desc

查询最近一小时内最慢的SQL

select executions, cpu_time/1e6 as cpu_sec, elapsed_time/1e6 as elapsed_sec, round(elapsed_time/sqrt(executions)) as important, v.* 
from v$sql v where executions > 10 and last_load_time > to_char(sysdate - 1/24, \'YYYY-MM-DD/HH:MI:SS\') 
order by important desc

查看CPU消耗时间最多的前10条SQL语句

select * from 
( select v.sql_id,v.child_number,v.sql_text,v.elapsed_time,v.cpu_time,v.disk_reads,rank() over(order by v.cpu_time desc) elapsed_rank from v$sql v ) a
where elapsed_rank <= 10 

查看消耗磁盘读取最多的前10条SQL语句

select * from 
( select v.sql_id,v.child_number,v.sql_text,v.elapsed_time,v.cpu_time,v.disk_reads,rank() over(order by v.disk_reads desc) elapsed_rank from v$sql v ) a
where elapsed_rank <= 10

 

mysql问题排查与性能优化

 MySQL 问题排查都有哪些手段?

  • 使用 show processlist 命令查看当前所有连接信息。
  • 使用 explain 命令查询 SQL 语句执行计划。
  • 开启慢查询日志,查看慢查询的 SQL。

如何做 MySQL 的性能优化?

  • 为搜索字段创建索引。
  • 避免使用 select *,列出需要查询的字段。
  • 垂直分割分表。
  • 选择正确的存储引擎。

以上是关于Oracle 性能慢排查脚本的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据库执行慢问题排查

20MySQL性能慢排查

MySql性能优化(排查慢查询SQL)

mysql问题排查与性能优化

Nginx 日志分析及性能排查

Nginx 日志分析及性能排查