1. 程式人生 > >為什麽要將表和索引建立在不同的表空間?

為什麽要將表和索引建立在不同的表空間?

acl 應用 bsp 影響 目的 系統性能 為什麽 之一 rac

上一個隨筆引出的新問題,找到了一個參考:

“Oracle強烈建議,任何一個應用程序的庫表至少需要創建兩個表空間,其中之一用於存儲表數據,而另一個用於存儲表索引數據。因為如果將表數據和索引數據放在一起,表數據的I/O操作和索引的I/O操作將產生影響系統性能的I/O競爭,降低系統的響應效率。將表數據和索引數據存放在不同的表空間中(如一個為APP_DATA,另一個為APP_IDX),並在物理層面將這兩個表空間的數據文件放在不同的物理磁盤上,就可以避免這種競爭了。”

上面的這句話是正確的,重點在於這句“並在物理層面將這兩個表空間的數據文件放在不同的物理磁盤上”。因為如果是一塊磁盤的話,建立兩個表空間,因為物理上還是在競爭同一塊磁盤,所以沒有從根本上解決I/O競爭的問題。另外Oracle提倡這種做法,有兩個目的,其一是如果在兩個物理磁盤上創建不同的表空間來規避I/O競爭問題,其二更多的是為了管理的方便,這樣在導入、導出以及設置備份策略的時候,就可以有選擇性的只備份數據部分等。”

為什麽要將表和索引建立在不同的表空間?