随着时间的累积,在没有很好的规划的情况下,数据库中也许会存在大量长期不被使用的索引,如果快速的定位这些索引以便清理便摆在案头.我们可以使用"alter index ××× monitoring usage;"命令将索引至于监控状态下,经过一定的监控周期,那些不被使用到的索引便会在具体Schema下的v$object_usage视图中得以体现.展示一下这个过程,供参考.友情提示:生产数据库中的索引添加和删除一定要慎重,需要做好充分的测试. 1.环境准备 --1.创建表T SQL>…
什么时候需要重建索引 1. 删除的空间没有重用,导致 索引出现碎片 2. 删除大量的表数据后,空间没有重用,导致 索引"虚高" 3.索引的 clustering_facto 和表不一致 也有人认为当索引树高度超过4的时候需要进行重建,但是如果表数量级较大,自然就不会有较高的树,而且重建不会改变索引树高度,除非是由于大量引起的索引树“虚高”,重建才会改善性能,当然这又回到了索引碎片的问题上了. 关于索引是否需要重建,Oracle有这么一句话: Generally speaking, th…
原文:[SQL Server DBA]日常巡检语句3:特定监控(阻塞.top语句.索引.作业) 1.查询阻塞信息.锁定了哪些资源 --1.查看阻塞信息 select spid,loginame,waitresource from master..sysprocesses where blocked <> 0 /* spid loginame waitresource 53 ggg-PC\Administrator RID:1:1:1385:0 */ --2.查看语句 dbcc inputbuf…
其实之前做过类型的验证,不过影响不是特别深,只是记得不会改变DATA COMPRESSION,那今天再次遇到这个问题就再拿出来验证一下.随便写个脚本验证下.ALTER INDEX ... REBUILD没有改变例子中表的PARTITION SCHEME和DATA COMPRESSION. CREATE PARTITION FUNCTION myRangePF1 (int) , , ); GO CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRa…
Oracle提供一个监控索引的方法,来确定索引是否被使用.如果索引没有被使用,就可以删除它们以减少不必要的语句的开销.因为表上的大量不必要的索引可能会降低DML语句的性能,给数据库性能产生压力.所以生产环境上,以根据业务增长情况定期监控.分析数据库索引的使用,特别是一些大表上的索引,提升数据库事务提交的性能. --查看表上的索引 SQL> Selectindex_name,table_name,num_rows From dba_indexes i Where i.table_name ='WE…
在ITPUB 论坛上看到的一个帖子,很不错.根据论坛的帖子重做整理了一下. 原文链接如下: alter index rebuild online引发的血案 http://www.itpub.net/thread-1445427-1-1.html 一. 官网说明 在MOS 上的一篇文章讲到了rebuild online 和offline的区别: Index Rebuild Is Hanging Or Taking Too Long [ID 272762.1] Symptoms:========= …
oracle index build online与offline测试环境为oracle 11.2.0.4 --sql test SQL> conn test/test )); begin .. loop insert into test.rb_test values(i,'ok'); commit; end loop; end; / SQL> select count(*) from test.rb_test; COUNT(*) ---------- SQL> create index…
语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100 GO USE 库名GO IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除--创建索引CREATE NONCLUSTERED INDEX IX_TEST_TNAME -…
Mysql语句优化--索引 一.开始优化前的准备 一)explain语句 当MySql要执行一个查询语句的时候,它首先会对语句进行语法检查,然后生成一个QEP(Query Execution Plan) QEP决定了MySql从底层存储引擎获取信息的方式. 语法:explain [extended | partitions] select ...... 或者:explain tableName (此时相当与desc语句) explain select * from artist where na…
[详细解析]MySQL索引详解( 索引概念.6大索引类型.key 和 index 的区别.其他索引方式) MySQL索引的概念: 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 索引分为:聚簇索引.非聚簇索引.聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了:聚簇索引:能提高多行检索的速度,非聚簇索引:单行的检索很快. 要注意的是,建立太多的索…