数据库的表空间管理是DBA的日常管理工作之一。优炫数据库UXDB中的表空间允许DBA在文件系统中定义用来存放表示数据库对象的文件的位置。一旦被创建,表空间就可以在创建数据库对象时通过名称引用。通过使用表空间,管理员可以控制一个UXDB安装的磁盘布局。
定义表空间
使用CREATE TABLESPACE命令,如:
CREATE TABLESPACE fastspace LOCATION'/ssd1/uxsino/data';
必须是一个已有的空目录,并且属于UXDB操作系统用户,所有后续在该表空间中创建的对象都将被存放在这个目录下的文件中。如果表空间丢失,将会导致集簇无法工作,故位置不能放在可移动或者瞬时存储上。
表空间的创建必须是一个数据库超级用户完成,但在创建完之后,可以允许普通数据库用户来使用。同时给数据库普通用户授予表空间上的CREATE权限。
表、索引和整个数据库都可以被分配到特定的表空间。在给定表空间上有CREATE权限的用户,必须把表空间的名字以参数的形式传递给相关的命令。
表空间space1中创建一个表:
CREATE TABLE foo(i int) TABLESPACE space1;
另外,还可以使用default_tablespace参数:
SET default_tablespace = space1;
CREATE TABLE foo(i int);
当default_tablespace被设置为非空字符串,那么它就为没有显式TABLESPACE子句的CREATE TABLE和CREATE INDEX命令提供一个隐式TABLESPACE子句。
temp_tablespaces参数,它决定临时表和索引的位置,以及用于大数据集排序等目的的临时文件的位置。这可以是一个表空间名的列表。
因此,与临时对象有关的负载可以散布在多个表空间上。每次要创建一个临时对象时,将从列表中随机取一个成员来存放它。
此外,如果没有给出TABLESPACE子句并且没有default_tablespace或temp_tablespaces中指定其他选择,它还是在该数据库中创建表、索引和临时文件的默认表空间。
在初始化数据库集簇的时候,会自动创建两个表空间。
ux_global表空间被用于共享系统目录。
ux_default表空间是template1和template0数据库的默认表空间。
表空间一旦被创建,就可以被任何数据库使用,前提是请求的用户具有足够的权限。这也意味着,一个表空间只有在所有使用它的数据库中所有对象都被删除掉之后才可以被删掉。
删除一个空的表空间
使用DROP TABLESPACE命令。要确定现有表空间的集合,可检查ux_tablespace系统目录。
例如 SELECT spcname FROM ux_tablespace;
uxsql程序的\db元命令也可以用来列出现有的表空间。UXDB使用符号连接来简化表空间的实现。这就意味着表空间只能在支持符号连接的系统上使用。