一条运行了3天的"简单"的sql(r2笔记82天)
早上刚到公司,查看系统的负载,就马上看到一个进程的执行时间已经有3天了。
而且cpu的消耗极高。
Tasks: 2374 total, 19 running, 2354 sleeping, 0 stopped, 1 zombie
Cpu(s): 21.7%us, 2.7%sy, 0.0%ni, 74.5%id, 0.0%wa, 0.1%hi, 0.9%si, 0.0%st
Mem: 371307496k total, 97308748k used, 273998748k free, 1750680k buffers
Swap: 377487328k total, 9440k used, 377477888k free, 20010856k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31330 xxxx 25 0 18.2g 30m 24m R 100.0 0.0 5557:32 oraclePRODB1 (LOCAL=NO)
马上通过process定位对应的session,看看这个session正在做什么操作。
查看锁的情况,没发现异常的锁,看来不会是大的dml操作。
以下是定位到的信息,最后发现是有人使用sqldevelopper做了一个"简单"的查询。
xxxxx 23328 20824 0 11:53 pts/4 00:00:00 ksh showpid.sh 31330
xxxxx 31330 1 99 Aug28 ? 3-20:45:06 oraclePRODB1 (LOCAL=NO)
##############################################
SID SERIAL# USERNAME OSUSER MACHINE PROCESS TERMINAL TYPE LOGIN_TIME
---------- ---------- --------------- --------------- -------------------- --------------- --------------- ---------- -------------------
3482 42183 xxxxxx xxxxxxx xxxxxxxxx 692 unknown USER 2014-08-28 14:59:29
àquery is running now.
SQL_ID SQL_TEXT
------------------------------ ------------------------------------------------------------
210ndtcx5fwgs SELECT COUNT(*) FROM SUBSCRIBER S , SERVICE_ACTIVITY SA
你没看错,sql语句就一行,而且是一个select count的语句。但是很显然在做表连接的时候就埋下了炸弹,68T行的数据,百亿的数据结果。
来看看对应的执行计划吧。
Plan hash value: 1483588918
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 24G(100)| |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | NESTED LOOPS | | 68T| 24G (1)|999:59:59 |
| 3 | INDEX FULL SCAN| SERVICE_ACTIVITY_PK | 51M| 31553 (1)| 00:06:19 |
| 4 | INDEX FULL SCAN| SUBSCRIBER_PK | 1320K| 481 (1)| 00:00:06 |
----------------------------------------------------------------------------------
所以在开发,测试,生产环境都需要注意,这种问题如果发生的话还是很郁闷的。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 什么?不使用selenium爬京东评论?你是不是在骗我
- 骚操作,Python操作PPT,你会吗?
- 用了这个jupyter插件,我已经半个月没打开过excel了
- Mística:一款支持任意协议的应用程序通信工具
- 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?
- 原创 | codefroces中的病毒,这题有很深的trick,你能解开吗?
- 原创 | git的远程分支是干啥的,和本地的有什么区别?
- 京东技术主导:全新架构的分布式事务Hmily 2.1.1发布
- iOS音视频接入-TRTC接入前期key、秘钥等准备
- 你一定不知道的 Linux 使用技巧
- 当 Python 爬虫搭配起 Bilibili 唧唧,奇怪的生产力出现了
- 一个简单的小技巧,监控网页所有动态标签创建的调用处
- SAP Spartacus storefrontapp index.html的design time和runtime
- OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识
- 一个简单易用的图标字体库和CSS框架fontawesome