# 表空间管理
#### 操作场景
TaurusDB for PostgreSQL数据库提供基于root用户的PostgreSQL表空间管理方案。
#### 表空间管理
支持创建、删除表空间及授权表空间使用权限。
- [创建表空间]
  1. 以**root** 用户连接数据库，并创建表空间。
     
     **# psql --host=** *\<TaurusDB_ADDRESS\>* **--port=** \<*DB_PORT* \> **--dbname=** *\<DB_NAME\>* **--username=root -c** "**select control_tablespace** (**'create'** , '*\<TABLESPACE_NAME\>*');"
     表1参数说明 
     | 参数                 | 说明                               |
     |:---|:---|
     | *TaurusDB_ADDRESS* | TaurusDB for PostgreSQL实例的IP地址。 |
     | *DB_PORT*           | TaurusDB for PostgreSQL数据库实例的端口。 |
     | *DB_NAME*            | 数据库名称。                           |
     | *TABLESPACE_NAME*  | 表空间名称。                          |
        
     
     
  
  2. 根据提示输入root用户密码。 
     登录至数据库"my_db"中并创建表空间"tbspc1"示例如下：
     **# psql --host=192.168.6.141 --port=****5432**** --dbname=my_db --username=root -c "select control_tablespace('create', 'tbspc1');"**
     ```
     Password for user root:
               control_tablespace          
     ------------------------------    
     create tablespace tbspc1 successfully.   
     (1 row)
     ```
     如创建不成功，详细信息请查看该实例错误日志。
     ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/public_sys-resources/note_3.0-zh-cn.png)
     为考虑性能，用户最多可创建100个表空间。
     
     
   
- [授权表空间使用权限]
  1. 以**root** 用户连接数据库，并授权表空间使用权限给指定用户。
     
     # **psql --host** **=** *\<TaurusDB* *_ADDRESS* *\>* **--port=** *\<DB_PORT\>* **--dbname=** *\<DB_NAME\>* **--username=root -c** "**select control_tablespace ('alter',** '*\<TABLESPACE_NAME\>* ', '*\<USER_NAME\>*');"
     表2参数说明 
     | 参数                 | 说明                                 |
     |:---|:---|
     | *TaurusDB_ADDRESS* | TaurusDB for PostgreSQL实例的IP地址。   |
     | *DB_PORT*            | TaurusDB for PostgreSQL数据库实例的端口。 |
     | *DB_NAME*           | 数据库名称。                           |
     | *TABLESPACE_NAME*  | 表空间名称。                           |
     | *USER_NAME*       | 表空间的用户名。                           |
        
     
     
  
  2. 根据提示输入root用户密码。 
     登录至数据库"my_db"中并授权表空间"tbspc1"使用权限示例如下：
     **# psql --host=192.168.6.141 --port=5432 --dbname=my_db --username=root -c "select control_tablespace('alter', 'tbspc1', 'user1');"**
     ```
     Password for user root:
              control_tablespace         
     ----------------------------    
     alter tablespace tbspc1 successfully.   
     (1 row)
     ```
     如授权不成功，详细信息请查看该实例错误日志。
     
     
   
- [删除表空间]
  1. 以**root** 用户连接数据库，并删除表空间。
     
     **# psql --host=** *\<TaurusDB_ADDRESS\>* **--port=** \<*DB_PORT* \> **--username=root** **--dbname=** *\<DB_NAME\>* **-c** "**select control_tablespace** (**'drop',** '*\<TABLESPACE _NAME\>*');"
     表3参数说明 
     | 参数                 | 说明                                |
     |:---|:---|
     | *TaurusDB_ADDRESS*  | TaurusDB for PostgreSQL实例的IP地址。  |
     | *DB_PORT*          | TaurusDB for PostgreSQL数据库实例的端口。 |
     | *DB_NAME*           | 数据库名称。                           |
     | *TABLESPACE_NAME* | 表空间名称。                             |
        
     
     
  
  2. 根据提示输入root用户密码。 
     示例如下：
     **# psql --host=192.168.6.141 --port=8635 --dbname=my_db --username=root -c "select control_tablespace('drop', 'tbspc1');"**
     ```
     Password for user root:
              control_tablespace         
     ----------------------------    
     drop tablespace tbspc1 successfully.   
     (1 row)
     ```
     删除表空间之前请确认该表空间已为空。如删除不成功，详细信息请查看该实例错误日志。
     
     
   
