ALTER TABLESPACE

功能描述

修改表空间的属性。

注意事项

相比于原始的openGauss,dolphin对于ALTER TABLESPACE语法的修改主要为:

  1. 新增WAIT可选项,无实际意义,仅作语法兼容。
  2. 新增ENGINE [=] engine_name可选项,无实际意义,仅作语法兼容。

语法格式

  • 重命名表空间的语法。

1. ALTER TABLESPACE tablespace_name 2. RENAME TO new_tablespace_name [ alter_option_list [ ... ] ]; - 设置表空间所有者的语法。

1. ALTER TABLESPACE tablespace_name 2. OWNER TO new_owner [ alter_option_list [ ... ] ]; - 设置表空间属性的语法。

1. ALTER TABLESPACE tablespace_name 2. SET ( {tablespace_option = value} [, ... ] ) 3. [ alter_option_list [ ... ] ]; - 重置表空间属性的语法。

1. ALTER TABLESPACE tablespace_name 2. RESET ( { tablespace_option } [, ...] ) 3. [ alter_option_list [ ... ] ]; - 设置表空间限额的语法。

1. ALTER TABLESPACE tablespace_name 2. RESIZE MAXSIZE { UNLIMITED | 'space_size'} 3. [ alter_option_list [ ... ] ];

1. 其中 alter_option_list 为: 2. WAIT 3. | ENGINE [=] engine_name

参数说明

  • tablespace_name

要修改的表空间。

取值范围:已存在的表空间名。 - new_tablespace_name

表空间的新名称。

新名称不能以“PG_”开头。

取值范围:字符串,符合标识符命名规范。 - new_owner

表空间的新所有者。

取值范围:已存在的用户名。 - tablespace_option

设置或者重置表空间的参数。

取值范围:

  • seq_page_cost:设置优化器计算一次顺序获取磁盘页面的开销。缺省为1.0。
  • random_page_cost:设置优化器计算一次非顺序获取磁盘页面的开销。缺省为4.0。

    ALTER TABLESPACE - 图1 说明:

    • random_page_cost是相对于seq_page_cost的取值,等于或者小于seq_page_cost时毫无意义。
    • 默认值为4.0的前提条件是,优化器采用索引来扫描表数据,并且表数据在cache中命中率可以90%左右。
    • 如果表数据空间要比物理内存小,那么减小该值到一个适当水平;相反地,如果表数据在cache中命中率要低于90%,那么适当增大该值。
    • 如果采用了类似于SSD的随机访问代价较小的存储器,可以适当减小该值,以反映真正的随机扫描代价。

value的取值范围:正的浮点类型。 - RESIZE MAXSIZE

重新设置表空间限额的数值。

取值范围:

  • UNLIMITED,该表空间不设置限额。
  • 由space_size来确定,其格式参考CREATE TABLESPACE。

    ALTER TABLESPACE - 图2 说明:

    • 若调整后的限额值比当前表空间实际使用的值要小,调整操作可以执行成功,后续用户需要将该表空间的使用值降低到新限额值之下,才能继续往该表空间中写入数据。
    • 修改参数MAXSIZE时也可使用:

    1. ALTER TABLESPACE tablespace_name RESIZE MAXSIZE 2. { 'UNLIMITED' | 'space_size'}; - engine_name

无实际意义。

取值范围:任意字符串。

示例

1. --创建表空间。
2. openGauss=# CREATE TABLESPACE ds_location1 RELATIVE LOCATION 'tablespace/tablespace_1';

4. --创建用户joe。
5. openGauss=# CREATE ROLE joe IDENTIFIED BY 'xxxxxxxxx';

7. --创建用户jay。
8. openGauss=# CREATE ROLE jay IDENTIFIED BY 'xxxxxxxxx';

10. --创建表空间,且所有者指定为用户joe。
11. openGauss=# CREATE TABLESPACE ds_location2 OWNER joe RELATIVE LOCATION 'tablespace/tablespace_1';

13. --把表空间ds_location1重命名为ds_location3,指定option WAIT,不影响实际功能。
14. openGauss=# ALTER TABLESPACE ds_location1 RENAME TO ds_location3 WAIT;

16. --改变表空间ds_location2的所有者,指定option ENGINE,不影响实际功能。
17. openGauss=# ALTER TABLESPACE ds_location2 OWNER TO jay ENGINE = 'test';

19. --改变表空间ds_location2的限额,同时指定option ENGINE和WAIT,不影响实际功能。
20. openGauss=# ALTER TABLESPACE ds_location2 RESIZE MAXSIZE UNLIMITED ENGINE = 'test' WAIT;

22. --删除表空间。
23. openGauss=# DROP TABLESPACE ds_location2 ENGINE = 'test2';
24. openGauss=# DROP TABLESPACE ds_location3;

26. --删除用户。
27. openGauss=# DROP ROLE joe;
28. openGauss=# DROP ROLE jay;

相关链接

CREATE TABLESPACE,DROP TABLESPACE