设为首页 - 加入收藏 通辽站长网 (http://www.0475zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2019 泄露 redis 芯片
当前位置: 首页 > 站长学院 > MySql教程 > 正文

记一次生产数据库优化--定期归档大表

发布时间:2019-08-19 17:32 所属栏目:[MySql教程] 来源:波波说运维
导读:最近系统总是卡顿,因为老系统,也看不到代码,所以只能从数据库层面去分析了,下面记录下问题排查过程。 1. 查看超过10s的sql SELECT'kill-9'||p.spid,/*p.spid,p.pid,*/s.sid,s.username,s.machine,s.sql_hash_value,s.last_call_et秒,s.last_call_et/60

最近系统总是卡顿,因为老系统,也看不到代码,所以只能从数据库层面去分析了,下面记录下问题排查过程。

记一次生产数据库优化--定期归档大表

1. 查看超过10s的sql

  1. SELECT?'kill?-9?'||p.spid,/*p.spid,p.pid,*/s.sid,s.username,s.machine,s.sql_hash_value,s.last_call_et?秒,s.last_call_et/?60?运行时间,s.client_info,p.program?"OSProgram",?
  2. 'alter?system?kill?session?'''?||s.SID||','||s.SERIAL#||?''';'?
  3. FROM?v$session?s,?v$process?p?
  4. WHERE?(s.status?=?'ACTIVE'?)?AND?((s.username?IS?NOT?NULL)?
  5. AND?(NVL?(s.osuser,?'x')?<>?'SYSTEM')?AND?(s.TYPE?<>?'BACKGROUND'))?AND?(p.addr(+)?=?s.paddr)?
  6. --and?s.username?in?('CRMDB')??
  7. and?s.last_call_et?>?10?
  8. /*and?s.sql_hash_value=880766746*/?
  9. ORDER?BY?s.last_call_et/60?desc,"USERNAME"?ASC?,?ownerid,?"USERNAME"?ASC;?

记一次生产数据库优化--定期归档大表

2. 获取具体sql

  1. select?sql_id?from?v$session?where?sid=1016?
  2. --ats0x10k9m619?
  3. select?listagg(sql_text,'?')?within?group?(order?by?piece)?
  4. ?from?v$sqltext?
  5. ?where?sql_id?=?'ats0x10k9m619'?
  6. ?group?by?sql_id?

记一次生产数据库优化--定期归档大表

3. 问题sql

  1. select?o.order_release_gid,?o.order_release_gid?
  2. ?from?ORDER_RELEASE?o,?ORDER_RELEASE_TYPE?ort?
  3. ?where?(o.order_release_type_gid?=?ort.order_release_type_gid)?
  4. ?and?(o.order_release_gid?in?
  5. ?(select?ors2.order_release_gid?
  6. ?from?STATUS_VALUE?sv2,?ORDER_RELEASE_STATUS?ors2?
  7. ?where?(sv2.status_value_xid?in?(:1,?:2,?:3))?
  8. ?and?(ors2.status_value_gid?=?sv2.status_value_gid)))?
  9. ?and?(o.order_release_gid?in?
  10. ?(select?ors1.ord?er_release_gid?
  11. ?from?STATUS_VALUE?sv1,?ORDER_RELEASE_STATUS?ors1?
  12. ?where?(sv1.status_value_xid?=?:4)?
  13. ?and?(ors1.status_value_gid?=?sv1.status_value_gid)))?
  14. ?and?(ort.order_release_type_xid?in?(:5))?
  15. ?order?by?o.insert_date?desc?

4. 获取sql详细信息

  1. SQL>?@/home/oracle/sql/spoolsql.sql?

注:两个sqlid其实都是同一条sql。

记一次生产数据库优化--定期归档大表

结果如下:

记一次生产数据库优化--定期归档大表

记一次生产数据库优化--定期归档大表

5. 执行计划

执行计划没什么好入手的。

记一次生产数据库优化--定期归档大表

6. 各表数据量情况

观察一下表的数据量,发现有一张表达到4千万的数据,而ORDER_RELEASE_STATUS表只是记录订单状态,业务确认是可以只保留2个月内数据

记一次生产数据库优化--定期归档大表

7. 大表索引情况

检查下索引情况:

  1. select?SEGMENT_NAME,?BYTES?/?1024?/?1024?
  2. ?from?dba_segments?
  3. ?where?segment_name?IN?('IX_ORS_STSVALGID',?'ORS_ORGID',?'IX_ORS_STSVGID',?
  4. ?'PK_ORDER_RELEASE_STATUS');?

记一次生产数据库优化--定期归档大表

记一次生产数据库优化--定期归档大表

8. 定期归档ORDER_RELEASE_STATUS大表

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章