【Oracle】-【建立索引】-建立索引的操作原理與一些體會
1、將index key的data讀到cache。如果之前這部分資料未讀到DB Cache,那麼此時可能有db file scatter read write的等待事件。
2、對index key的data進行排序。排序的操作,如果sort_area_size或pga_aggregate_target不大的情況下,可能就會做disk sort,我們知道,磁碟排序的效率要小於Cache不少,因此速度上肯定受影響,會有direct path read/write,同時也會消耗CPU time。
3、建立新的index segment(補充:block是最小的I/O單元,extent是最小的Oracle空間分配單元,segment又是由extent組成的,Oracle中表、索引、檢視等等的儲存都可以看做是segement),將排序的index data寫到建立的index segment中。那麼如果index很大,就會有許多的redo log相關等待,例如log file sync,log buffer space,log file parallel write等。
參考牛人的隨筆後,
關於建立索引的一點體會:
(1)、關於利用並行度建立索引,前提是多個CPU,單CPU下用並行度建立索引,可能會造成資源的爭用,dave曾經推測過可能是CPU的爭用,也可能是I/O的爭用,造成的結果就是比不用並行度消耗更多的時間才能建立索引。
(2)、在建大表的索引時,可以增大PGA,增大temp tablespace,因為排序通常是在PGA中進行的,防止因空間或記憶體不足導致需要disk排序,是最大的問題。但往往有時這些引數不讓隨意調整。那麼nologging這種方式可能還是可以做的。
關於索引利用的一點體會:
(1)、關於第二點,index data都會進行排序,那麼利用索引的這個特性,有時可以避免對錶的排序操作,例如當需要查詢max或min這種排序結果時,只要建立某個欄位的索引,就可以避免order by的使用,因為index中的資料已經排序。
(2)、同時利用索引,有時也可以避免回表,對於select某些索引欄位時,這種方式的效果更好。
關於這些方面這裡談的很少,後面找個機會單獨討論。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-768146/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 索引的建立與管理Oracle索引
- PostgreSQLCREATEINDEXCONCURRENTLY的原理以及哪些操作可能堵塞索引的建立SQLIndex索引
- oracle資料庫建立、刪除索引等操作Oracle資料庫索引
- Oracle 找出需要建立索引的表Oracle索引
- Oracle如何建立B樹索引Oracle索引
- Oracle大表快速建立索引Oracle索引
- oracle 繁忙時候建立索引Oracle索引
- oracle 建立所有分割槽索引Oracle索引
- Mysql索引的建立與刪除MySql索引
- ElasticSearch建立索引Elasticsearch索引
- DocumentDB 建立索引索引
- mysql 建立索引的方法--建立檢視MySql索引
- elasticsearch(三)----索引建立與刪除Elasticsearch索引
- oracle如何估算即將建立的索引大小Oracle索引
- 【oracle 】如何估算即將建立的索引大小Oracle索引
- MySQL建立索引、修改索引、刪除索引的命令語句MySql索引
- mysql建立字首索引MySql索引
- 【eygle】Oracle的分割槽表和Local索引建立與維護Oracle索引
- mongodb建立索引和刪除索引和背景索引backgroundMongoDB索引
- Oracle索引原理Oracle索引
- Oracle 對某列的部分資料建立索引Oracle索引
- Oracle複合索引的建立和注意事項Oracle索引
- 【轉載】oracle全文索引的建立和使用Oracle索引
- oracle索引操作Oracle索引
- 索引組織表上建立BITMAP索引(三)索引
- 索引組織表上建立BITMAP索引(二)索引
- 索引組織表上建立BITMAP索引(一)索引
- postgresql怎麼建立索引SQL索引
- Lucene建立索引流程索引
- MySQL建立複合索引MySql索引
- SqlServer 建立全文索引SQLServer索引
- MySQL索引建立原則MySql索引
- 【Mongo】MongoDB索引管理-索引的建立、檢視、刪除MongoDB索引
- Mysql索引結構與索引原理MySql索引
- Mysql多列索引建立與優化.mdMySql索引優化
- 關於 Oracle 分割槽索引的建立和維護Oracle索引
- mysql檢視錶建立的索引MySql索引
- Oracle 12c新特性之:使用高階索引壓縮建立索引Oracle索引