2017-03-01 76 views
0

我在兩個代碼片段來了:使用索引表空間?

一個...

ALTER TABLE表名
DROP CONSTRAINT constraint_name命令;
DROP INDEX index_name;
alter TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY(column,column)
USING INDEX TABLESPACE tablespace_name;

兩個...

CREATE INDEX INDEX_NAME ON表名(列)
TABLESPACE TABLESPACE_NAME;

現在,我可以理解,不是大膽,但大膽的聲明是非常難以理解的語句。爲什麼我們使用表空間,尤其是在這種情況下?這兩個陳述的含義是什麼?有人可以用例子給我一個詳細的答案嗎?
謝謝!

+0

索引[segments](https://docs.oracle.com/database/121/CNCPT/logical.htm#CNCPT89026)必須存儲在表空間;想要指定哪一個並不奇怪? –

+0

它是Oracle構建數據庫的基本組成部分。查看https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm#i5919 – BriteSponge

回答

2

表空間是一個邏輯存儲單元。實際操作系統存儲在數據文件中定義,數據文件鏈接到表空間。這意味着我們可以將數據庫對象部署到不同的服務器上,甚至不同的操作系統上,而無需知道底層的目錄結構。

至於索引表空間,索引是物理對象,需要存儲在某個地方。現在,在索引表空間和表空間之間進行區分並不常見,因爲現代服務器被突襲,條帶化等,所以沒有人需要擔心磁盤頭。

事實上,Oracle內置的表空間管理非常好,我們可以完全忽略表空間規劃。對於例如具有單獨的表空間的情況仍然存在。只讀數據,可移動表空間,分區等。