2017-03-01 105 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内置的表空间管理非常好,我们可以完全忽略表空间规划。对于例如具有单独的表空间的情况仍然存在。只读数据,可移动表空间,分区等。