为什么我的数据库查询越来越慢

最新事件项目要交给运维了,但是运维反馈的是数据查询显示太慢,这可真是愁坏我了,这可怎么解决,从前面看到我发的文章大家也可以看得出来,我约到的问题就是数据量太大,导致我操作很困难,今天我问了一下相关方面的师傅,他告诉我是不是数据在进行删除的时候产生了大量碎片,这些碎片主要是在进行插入或者删除时候产生的碎片,在删除时候它并不能很快的将碎片进行释放甚至永久不能被使用,就这样月积压越多导致查询速率越来越慢与会我就用相关的语句进行查询着实把我吓了一跳,有的表竟然浪费奖金1G的空间

1.先进性碎片查询 sql

SELECT table_name,
ROUND ( (blocks * 8), 2) "高水位空间 k",
ROUND ( (num_rows * avg_row_len / 1024), 2) "真实使用空间 k",
ROUND ( (blocks * 10/100)*8, 2) "预留空间(pctfree) k",
((blocks * 8)-(num_rows * avg_row_len)/1024-((blocks * 8 * 10) / 100))/1024 "浪费空间 M"
FROM USER_tables

查询结果:

为什么我的数据库查询越来越慢

 

 因为这仅仅只是一个表可想而知 如果要是我这700多张表多多少少也是要占了很大内存的了,

2.处理方式

我在网上进行查询的时间得到了三个解决方式

1.删除表进行表重建,

2.进行alter而操作

alter table BF1_HISTRIAN_HALFYEAR_NEW shrink space(进行的就是这个操作);

3.在10G版本后可以用rebuild 这是个很好的方式

上一篇:【DB笔试面试668】在Oracle中,什么是高水位?如何回收表的高水位?


下一篇:GCD实现和ARC、Blocks、GCD使用范例