oracle堆表和MySQL_聚簇索引对比|Oracle vs MySQL
Oracle堆組織表(heap organized table)
堆(heap)是一種得到深入研究的經典數據結構,Oracle將堆作為默認表類型(Oracle主要表類型有9種)。
“堆”是一組空間,在數據存儲方面以某種隨機方式被使用,數據可以存放在任何位置上。
Oracle索引組織表(index organized table/IOT)
以B*Tree結構存儲,在組織數據時強制要求數據行有某種物理順序,數據按照索引結構存儲,通常根據主鍵有序存儲在IOT中。
如:以用戶ID為鍵將用戶多個收貨地址,安排到相鄰物理位置上。
這樣,一個用戶所有收貨地址都存儲在一起,不會被隨機安排在磁盤各個位置上。
Oracle聚簇索引
Oracle聚簇索引中聚簇是指:如果一組表有一些共同列,則將這組表存儲在相同數據塊中。
也就是說:聚簇是將一組表相關列上數據存儲在同一塊中,若一個塊不能完成存儲就用多個塊。
如此,一組表中相關聯列在物理上已經聯在一起了(“預連接”),聚簇也可用于單個表。
Oracle中聚簇不是為了有序存儲數據(這是IOT的工作),它是按某個鍵以聚簇方式存儲數據。
如:在多個表關聯查詢中,表之間在物理上已經存在關聯(“預連接”),查詢效率會得到提升。
對關聯查詢操作很有幫助。
這是Oracle索引組織表(IOT)與聚簇索引的區別。
MySQL聚簇索引(innodb)
Mysql聚簇索引通常以主鍵為索引列,Mysql聚簇索引相當于Oracle中索引組織表。
Mysql聚簇索引將數據存放在B*Tree葉節點上,直接讀取數據。
MySQL非聚簇索引B*Tree葉節點上,存放指向數據行指針。
MySQL聚簇索引不僅僅是一種索引類型,也是一種數據存儲方式。
將相關數據安排在一起減少磁盤I/O,數據與索引都存放在B-Tree結構中。
總結
以上是生活随笔為你收集整理的oracle堆表和MySQL_聚簇索引对比|Oracle vs MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态调用object php,PHP动态
- 下一篇: 随机邻域嵌入_图嵌入(Graph emb