码迷,mamicode.com
首页 > 数据库 > 详细

记录一次数据库某表未创建索引造成的问题

时间:2017-08-05 18:50:06      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:text   测试   索引   contract   div   使用   log   min   逻辑   

现象描述:

昨天鹰网监控告知廊坊某台物理机CPU使用率接近100%,查看得知每颗逻辑CPU的使用率都接近了100%,但该数据库机器是测试机器,按理说不会造成此问题。截图如下:

技术分享

技术分享

处理步骤:

1. 查看消耗大量CPU资源和I/O等待的PID

通过TOP命令即可查看

2. 通过PID查看正在执行的SQL

SELECT sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN
       (SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
               DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
          FROM v$session b
         WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = &pid))
ORDER BY piece ASC

或者在生成AWR报告

SQL> @?/rdbms/admin/awrrpt.sql

3. 查看上述找到的影响性能的表是否创建索引或者索引失效

select count(*) from RESLTJT_ZL.TW_PSD_SERV_FEE_TOWER
select index_name from user_indexes where table_name = RESLTJT_ZL.TW_PSD_SERV_FEE_TOWER;

查询得知该表数据量为428W,但是未创建任何索引,这样多表连接查询时将是可怕的。

批注:如果说是创建了索引,查看索引是否失效,如下

select status  from user_indexes where index_name=IDX_CONTRACT_ID

如果索引失效,重建即可。

4. 处理后查看CPU使用情况,恢复正常

技术分享

记录一次数据库某表未创建索引造成的问题

标签:text   测试   索引   contract   div   使用   log   min   逻辑   

原文地址:http://www.cnblogs.com/secdata/p/7290893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!