
# 数据库对象函数
#### 数据库对象尺寸函数
数据库对象尺寸函数计算数据库对象使用的实际磁盘空间。
- pg_column_size(any) 描述：存储一个指定的数值需要的字节数（可能压缩过）。
  返回值类型：int
  备注：pg_column_size显示用于存储某个独立数据值的空间。
  ```
  gaussdb=# SELECT pg_column_size(1);
   pg_column_size 
  ----------------
                4
  (1 row)
  ```
  
- pg_database_size(oid) 描述：指定OID代表的数据库使用的磁盘空间。
  返回值类型：bigint
  
- pg_database_size(name) 描述：指定名称的数据库使用的磁盘空间。
  返回值类型：bigint
  备注：pg_database_size接受一个数据库的OID或者名称，然后返回该对象使用的全部磁盘空间。
  示例：
  ```
  gaussdb=# CREATE DATABASE testdb dbcompatibility 'A';
  CREATE DATABASE
  gaussdb=# SELECT pg_database_size('testdb');
   pg_database_size 
  ------------------
           51590112
  (1 row)
  gaussdb=# DROP DATABASE testdb;
  DROP DATABASE
  ```
  
- pg_relation_size(oid) 描述：指定OID代表的表或者索引所使用的磁盘空间。
  返回值类型：bigint
  
- get_db_source_datasize() 描述：估算当前数据库非压缩态的数据总容量。
  返回值类型：bigint
  备注：调用该函数前需要做analyze。
  示例：
  ```
  gaussdb=# analyze;
  ANALYZE
  gaussdb=# SELECT get_db_source_datasize();
   get_db_source_datasize
  ------------------------
              35384925667
  (1 row)
  ```
  
- pg_relation_size(text) 描述：指定名称的表或者索引使用的磁盘空间。表名称可以用模式名修饰。
  返回值类型：bigint
  
- pg_relation_size(relation regclass, fork text) 描述：指定表或索引的指定分叉树（'main'，'fsm'或'vm'）使用的磁盘空间。
  返回值类型：bigint
  
- pg_relation_size(relation regclass) 描述：pg_relation_size(..., 'main')的简写。
  返回值类型：bigint
  备注：pg_relation_size接受一个表、索引、压缩表的OID或者名称，然后返回它们的字节大小。
  
- pg_partition_size(oid, oid) 描述：指定OID代表的分区使用的磁盘空间。其中，第一个oid为表的OID，第二个oid为分区的OID。
  返回值类型：bigint
  
- pg_partition_size(text, text) 描述：指定名称的分区使用的磁盘空间。其中，第一个text为表名，第二个text为分区名。
  返回值类型：bigint
  
- pg_partition_indexes_size(oid, oid) 描述：指定OID代表的分区的索引使用的磁盘空间。其中，第一个oid为表的OID，第二个oid为分区的OID。
  返回值类型：bigint
  
- pg_partition_indexes_size(text, text) 描述：指定名称的分区的索引使用的磁盘空间。其中，第一个text为表名，第二个text为分区名。
  返回值类型：bigint
  
- pg_indexes_size(regclass) 描述：附加到指定表的索引使用的总磁盘空间。
  返回值类型：bigint
  
- pg_size_pretty(bigint) 描述：将以64位整数表示的字节值转换为具有单位的易读格式。
  返回值类型：text
  
- pg_size_pretty(numeric) 描述：将以数值表示的字节值转换为具有单位的易读格式。
  返回值类型：text
  备注：pg_size_pretty用于把其他函数的结果格式化成一种易读的格式，可以根据情况使用kB 、MB 、GB 、TB。
  
- pg_table_size(regclass) 描述：指定的表使用的磁盘空间，不计索引（但是包含TOAST，自由空间映射和可见性映射）。
  返回值类型：bigint
  
- pg_tablespace_size(oid) 描述：指定OID代表的表空间使用的磁盘空间。
  返回值类型：bigint
  
- pg_tablespace_size(name) 描述：指定名称的表空间使用的磁盘空间。
  返回值类型：bigint
  备注：
  pg_tablespace_size接受一个数据库的OID或者名称，然后返回该对象使用的全部磁盘空间。
  
- pg_total_relation_size(oid) 描述：指定OID代表的表使用的磁盘空间，包括索引和压缩数据。
  返回值类型：bigint
  
- pg_total_relation_size(regclass) 描述：指定的表使用的总磁盘空间，包括所有的索引和TOAST数据。
  返回值类型：bigint
  
- pg_total_relation_size(text) 描述：指定名称的表所使用的全部磁盘空间，包括索引和压缩数据。表名称可以用模式名修饰。
  返回值类型：bigint
  备注：pg_total_relation_size接受一个表或者一个压缩表的OID或者名称，然后返回以字节计的数据和所有相关的索引和压缩表的尺寸。
  
- datalength(any) 描述：计算一个指定的数据需要的字节数（不考虑数据的管理空间和数据压缩，数据类型转换等情况）。
  返回值类型：int
  备注：datalength用于计算某个独立数据值的空间。
  示例：
  ```
  gaussdb=# SELECT datalength(1);
  datalength
  ------------
  4
  (1 row)
  ```
  目前支持的数据类型及计算方式见下表：
  
  | 数据类型                                ||| 存储空间                      |
  |:---|---|---|:---|
  | 数值类型 | 整数类型  | TINYINT                | 1                         |
  | 数值类型 | 整数类型  | SMALLINT               | 2                         |
  | 数值类型 | 整数类型  | INTEGER                | 4                         |
  | 数值类型 | 整数类型  | BINARY_INTEGER         | 4                         |
  | 数值类型 | 整数类型  | BIGINT                 | 8                         |
  | 数值类型 | 任意精度型 | DECIMAL                | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 数值类型 | 任意精度型 | NUMERIC                | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 数值类型 | 任意精度型 | NUMBER                 | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 数值类型 | 序列整型  | SMALLSERIAL            | 2                         |
  | 数值类型 | 序列整型  | SERIAL                 | 4                         |
  | 数值类型 | 序列整型  | BIGSERIAL              | 8                         |
  | 数值类型 | 序列整型  | LARGESERIAL            | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 数值类型 | 浮点类型  | FLOAT4                 | 4                         |
  | 数值类型 | 浮点类型  | DOUBLE PRECISION       | 8                         |
  | 数值类型 | 浮点类型  | FLOAT8                 | 8                         |
  | 数值类型 | 浮点类型  | BINARY_DOUBLE          | 8                         |
  | 数值类型 | 浮点类型  | FLOAT\[(p)\]           | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 数值类型 | 浮点类型  | DEC\[(p\[,s\])\]       | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 数值类型 | 浮点类型  | INTEGER\[(p\[,s\])\]   | 每4位十进制数占两个字节，小数点前后数字分别计算。 |
  | 布尔类型 | 布尔类型  | BOOLEAN                | 1                         |
  | 字符类型 | 字符类型  | CHAR                   | n                         |
  | 字符类型 | 字符类型  | CHAR(n)                | n                         |
  | 字符类型 | 字符类型  | CHARACTER(n)           | n                         |
  | 字符类型 | 字符类型  | NCHAR(n)               | n                         |
  | 字符类型 | 字符类型  | VARCHAR(n)             | n                         |
  | 字符类型 | 字符类型  | CHARACTER              | 字符实际字节数。                  |
  | 字符类型 | 字符类型  | VARYING(n)             | 字符实际字节数。                  |
  | 字符类型 | 字符类型  | VARCHAR2(n)            | 字符实际字节数。                  |
  | 字符类型 | 字符类型  | NVARCHAR(n)            | 字符实际字节数。                  |
  | 字符类型 | 字符类型  | NVARCHAR2(n)           | 字符实际字节数。                  |
  | 字符类型 | 字符类型  | TEXT                   | 字符实际字节数。                  |
  | 字符类型 | 字符类型  | CLOB                   | 字符实际字节数。                  |
  | 时间类型 | 时间类型  | DATE                   | 8                         |
  | 时间类型 | 时间类型  | TIME                   | 8                         |
  | 时间类型 | 时间类型  | TIMEZ                  | 12                        |
  | 时间类型 | 时间类型  | TIMESTAMP              | 8                         |
  | 时间类型 | 时间类型  | TIMESTAMPZ             | 8                         |
  | 时间类型 | 时间类型  | SMALLDATETIME          | 8                         |
  | 时间类型 | 时间类型  | INTERVAL DAY TO SECOND | 16                        |
  | 时间类型 | 时间类型  | INTERVAL               | 16                        |
  | 时间类型 | 时间类型  | RELTIME                | 4                         |
  | 时间类型 | 时间类型  | ABSTIME                | 4                         |
  | 时间类型 | 时间类型  | TINTERVAL              | 12                        |
     
  
 
#### 数据库对象位置函数
- pg_relation_filenode(relation regclass) 描述：指定关系的文件节点数。
  返回值类型：oid
  备注：pg_relation_filenode接受一个表、索引、序列或压缩表的OID或者名称，并且返回当前分配给它的"filenode"数。文件节点是关系使用的文件名称的基本组件。对大多数表来说，结果和pg_class.relfilenode相同，但对确定的系统目录来说，relfilenode为0而且这个函数必须用来获取正确的值。如果传递一个没有存储的关系，比如一个视图，那么这个函数返回NULL。
  
- pg_relation_filepath(relation regclass) 描述：指定关系的文件路径名。
  返回值类型：text
  备注：pg_relation_filepath类似于pg_relation_filenode，但是它返回关系的整个文件路径名（相对于数据库的数据目录PGDATA）。
  
- pg_filenode_relation(tablespace oid, filenode oid) 描述：获取对应的tablespace和relfilenode所对应的表名。
  返回类型：regclass
  
- pg_partition_filenode(partition_oid) 描述：获取到指定分区表的oid锁对应的filenode。
  返回类型：oid
  
- pg_partition_filepath(partition_oid) 描述：指定分区的文件路径名。
  返回值类型：text
  
 
#### 回收站对象函数
- gs_is_recycle_object(classid, objid, objname) 描述：判断是否为回收站对象。
  返回值类型：Boolean
  
 
