`
wyzuomumu
  • 浏览: 108453 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通过top命令抓取cpu高消耗的sql

阅读更多

top命令在linux环境维护中很实用,虽然功能缺失不够sar那么全面。今天和大家分享一个通过top命令来抓取性能sql的案例。
通过top命令抓取了如下的信息。

 pid是3585的进程对应的sql 之前已经确定是性能问题导致的了,所以先放过,可以看看pid是8879的这个进程,出现的不是很“稳定”。
可能通过ash,awr不一定能够及时的抓住这些信息,但是通过及时的分析,可能有时候会得到一想不到的收获。
可以通过v$session,v$process,v$sql来结合查找process对应的sql.
可以看到这个进程是属于一个远程的session(LOCAL=NO),是通过一个batch的服务器上发起的请求。
执行的sql很简单。就是一个简单的查询。初步怀疑就是因为查询走了全表扫描而且那个字段可能没有索引。

 为了确认,查看表的结构来看看。可以结合user_tab_cols,user_ind_columns来查看表的属性和索引的信息。这些都是用准备好的脚本来生成的,过滤了一些不必要的信息。
可以看到,索引是存在的,在ext_account_number上,而且是唯一性索引。如果那样的话走全表扫描就有些不合常理了。

 如果观察的再仔细些,可以看到ext_account_number那个字段是varchar2(12)的。
为了验证表肯定走了全表扫描,我抓了一个awrsqrpt的报告。内容如下,可以看到的确走了全表扫描。而且buffer gets还挺大,cpu消耗比较高。

 到此为止,如果还不没明白的话,我做个简单的测试。

我从表里随机抓取10条记录。
SQL> SELECT balance ,EXT_ACCOUNT_NUMBER from ACCOUNT WHERE rownum<=10;   
                                                                         
BALANCE EXT_ACCOUNT_NUMBER
---------- ------------                                                  
         0 10257832                                                      
    772.81 10260829                                                      
    584.22 10259790                                                      
    329.03 10258781                                                      
      -.39 10263317                                                      
      -.14 10260830                                                      
    496.79 10258782                                                      
         0 10258783                                                      
      -.83 10258785                                                      
      -.91 10259791                                                      
                                                                         
10 rows selected.                                                        
然后来trace一把。看看执行的情况。
可以看到,确实走了全表扫描,没有走索引。可以看到filter部分,对于ext_account_number它是在解析的时候做了类型转换的,从varchar2转为number。
一致性读有12704.

 这样问题的根源就很清晰了。再换一个,试试走索引的情况。可以看到,效率有了极大的提升。剩下的问题就是协调来解决了。

 

select ses.sid,ses.serial#,ses.username,ses.machine,ses.osuser,pro.terminal,ses.type,ses.logon_time,sql.sql_text
from v$session ses, v$process pro, v$sql sql
 where ses.paddr = pro.addr
   and ses.SQL_HASH_VALUE = sql.HASH_VALUE
   and ses.SQL_ADDRESS = sql.address
   and  ses.sql_address = sql.address
   and pro.pid = #pid#;

 

  • 大小: 11.8 KB
  • 大小: 8.1 KB
  • 大小: 11.5 KB
  • 大小: 12.6 KB
  • 大小: 11.4 KB
  • 大小: 12.2 KB
分享到:
评论

相关推荐

    非常好用的SQL Server 抓取SQL语句工具HOOK

    非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK

    SQLTracker,抓取sql语句的工具

    5. **性能优化**:通过分析SQLTracker提供的数据,用户可以进行SQL语句的优化,例如调整索引、改进查询语句或者优化数据库架构,以提升整体系统性能。 6. **安全监控**:此外,SQLTracker还可以用于监控潜在的安全...

    [自己开发]一款非常好用的抓取Oracle数据库SQL语句的工具

    Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...

    基于Python实现豆瓣电影TOP250抓取,然后对爬取的数据进行分析

    【作品名称】:基于Python实现豆瓣电影TOP250抓取,然后对爬取的数据进行分析 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目...

    思科自动抓取cpu报文

    cpu变高后能够自动抓取到cpu的报文,并保存到本地flash卡中。

    实验:Wireshark软件在运用FTP命令时抓取TCP头结构.docx

    实验:Wireshark软件在运用FTP命令时抓取TCP头结构.docx

    使用sql server Profiler监听应用程序执行的sql

    通过 Sql Server Profiler,可以实时了解数据库的当前状态,快速定位问题所在,从而提高数据库的性能和可靠性。 二、 监听应用程序执行的 SQL 要使用 Sql Server Profiler 监听应用程序执行的 SQL,首先需要在 ...

    抓取jstack方法及解决system用户执行jstack命令权限问题

    抓取jstack方法及解决system用户执行jstack命令权限问题, 打开cmd窗口,输入命令 jstack -l 49824&gt;&gt;C:/error01.txt 其中49824为tomcat8.0 的pid ; error01.txt 这个可以自己取名字 多输出几份jstack 文件,做比对...

    系统卡顿自动抓取cpu/memory/io信息功能说明

    系统卡顿自动抓取cpu/memory/io信息功能说明

    基于python抓取豆瓣电影TOP250的数据及进行分析.pdf

    文档作者通过Python抓取豆瓣电影的TOP250电影数据,通过评分分布区间、时间分布等维度进行分析,实现对大众喜好的深入理解。 在数据分析的过程中,作者利用数据可视化技术,将复杂的数据转化为直观易懂的图表,以便...

    SQL语句实现查询SQL Server内存使用状况

    SELECT type,--Clerk的类型 sum(virtual_memory_reserved_kb)as vm_Reserved_kb,--保留的内存 sum(virtual_memory_committed_kb)as vm_Committed_kb,--提交的内存 sum(awe_allocated_kb)as awe_Allocated_kb,--开启...

    Python-使用正则表达式和requests抓取猫眼TOP100的电影信息

    总结,通过Python的requests库和正则表达式,我们可以实现对猫眼电影Top100的抓取。然而,对于更复杂的情况,建议使用如BeautifulSoup、Scrapy等专门的Web爬虫框架。在进行网络爬虫时,一定要遵守道德规范,尊重网站...

    Python爬虫抓取网页新闻数据到sqlserver数据库中

    Python爬虫抓取网页新闻数据到sqlserver数据库,按标题排除重复项,python3.7运行环境

    Oracle的SQL监视工具SQLTracker

    这是从Toad110.6提取出来的、监视使用Oracle数据库的应用程序执行时对数据库进行操作的sql的工具,包含32位版和64位版,绿色软件,解压缩后就能用。

    常用Oracle监控数据库性能的SQL

    通过这些SQL语句,我们可以获取Oracle数据库的实时和历史性能数据,从而对系统进行深入分析,找出性能瓶颈,进行优化。在实际应用中,还可以结合AWR(Automatic Workload Repository)和ASH(Active Session History...

    sqlmonitor

    在IT行业中,数据库的管理和优化是至关重要的环节,而SQLMonitor就是这样一款专为数据库开发和程序跟踪设计的SQL抓取工具。通过对SQL语句的实时监控和分析,SQLMonitor能帮助开发者更高效地定位问题,优化性能,确保...

    个人健康每日所需营养成分SQL(内含Python抓取脚本)

    它可能包含一个脚本,用于收集用户的个人信息,比如通过用户界面输入或者从外部数据源抓取,然后将这些信息与SQL数据库进行交互,执行查询并计算出结果。Python有许多库,如pandas和sqlite3,可以方便地进行数据操作...

    SQL语句基础教程

    SQL语句基础教程 SQL(Structured Query Language)是一种特殊目的语言,用于管理关系数据库管理系统...通过学习SQL指令、SQL语法、表格处理、进阶SQL等知识点,可以更好地应用SQL语言,提高工作效率和数据分析能力。

    基于Python实现豆瓣电影TOP250抓取并对爬取的数据进行分析(源码).zip

    1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做...基于Python实现豆瓣电影TOP250抓取并对爬取的数据进行分析(源码).zip

    基于Python和Flask的豆瓣电影Top 250信息抓取与展示设计源码

    该项目为基于Python和Flask的...系统通过爬虫技术从豆瓣电影Top 250页面获取电影详情,如电影URL、中英文名称、排名、导演、演员、类型等,并将数据存储于MySQL数据库中。利用Flask框架构建前端,实现数据的动态展示。

Global site tag (gtag.js) - Google Analytics