oracle占cpu100%,想请问瓶颈在哪里
最近我的oracle总是占CPU100%。查到是因select count(1)
from (select *
from abc
where qymc='中国语言中国语言中国语言')
这句SQL引起的。且如果换别的数据库语句执行并没有问题,或者把条件的中文字符减少到11个以下中文字符都可以执行。然后分析不下去了。
请问,像这样的情况我要怎么查瓶颈在哪里?怎么对数据库进行优化呢? 查看不到执行计划,因为SQL一执行CPU马上到50%,而且半天也不能返回执行结果。
新建的没有数据的表也是同样的情况。
减少where条件里面的中文字符个数到11个。查看执行计划
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------
-----------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 24 | 443 |
| 1 | SORT AGGREGATE | | 1 | 24 | |
|* 2 | TABLE ACCESS FULL | GOV_JB_GSDJZC | 1 | 24 | 443 |
-----------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------
2 - filter("GOV_JB_GSDJZC"."QYMC"='中国语言中国语言中国语') 语句:
select count(1)
from (select *
from gov_jb_gsdjzc
where qymc='中国语言中国语言中国语言')
表结构
create table GOV_JB_GSDJZC
(
NBXH VARCHAR2(16) not null,
ZCH VARCHAR2(26),
QYMC VARCHAR2(100),
QYDEMC VARCHAR2(100),
ZS VARCHAR2(100),
JYCS VARCHAR2(100),
HY VARCHAR2(10),
GXDW VARCHAR2(10),
QYDL VARCHAR2(10),
QYLX VARCHAR2(10),
ZCZB NUMBER(16,4),
JYFW VARCHAR2(1000),
DJJG VARCHAR2(20),
CLRQ DATE,
HZRQ DATE,
JYJZRQ DATE,
YZBM VARCHAR2(70),
DH VARCHAR2(50),
DZYJDZ VARCHAR2(40),
GSWZ VARCHAR2(100),
ZT VARCHAR2(2),
ZXRQ DATE,
CYRS NUMBER(10),
LRDW VARCHAR2(50),
LRR VARCHAR2(20),
LRRQ DATE,
LYDQ VARCHAR2(10)
);
alter table GOV_JB_GSDJZC
add primary key (NBXH);
create index AABDE on GOV_JB_GSDJZC (QYMC);
执行频率:
就只执行了一次.CPU50%.查询始终不能返回结果
原来不那么慢1秒多一点跟可以有返回结果.
最近啥也没做(至少本机管理员没做任何操作)
表没有分析过.
等待事件表的查询结果是:
12 SQL*Net message to client 32 0 0 0 0 90
12 SQL*Net more data to client 17 0 0 0 0 695
12 SQL*Net message from client 31 0 164944 5321 94691 1649443522 语句改写为 select count(*)
from gov_jb_gsdjzc
where qymc='中国语言中国语言中国语言'
分析表及索引 改成select count(*)
from gov_jb_gsdjzc
where qymc='中国语言中国语言中国语言'
马上就能查出来.没有任何问题.
页:
[1]