
# 数据库对象尺寸函数
数据库对象尺寸函数用于计算数据库对象使用的实际磁盘空间，其计算结果都返回以字节为单位的大小。
#### pg_column_size(any)
描述：存储一个指定的数值需要的字节数（可能压缩过）。
返回值类型：integer
备注：pg_column_size显示用于存储某个独立数据值的空间。
```
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或者名字，然后返回该对象使用的全部磁盘空间。
示例：
```
SELECT pg_database_size('gaussdb');
 pg_database_size 
------------------
         51590112
(1 row)
```
#### pg_relation_size(oid)
描述：指定OID代表的表或者索引所使用的磁盘空间。
返回值类型：bigint
#### get_db_source_datasize()
描述：估算当前数据库非压缩态的数据总容量。
返回值类型：bigint
备注：1. 调用该函数前需要执行ANALYZE；2. 通过估算列存的压缩率计算非压缩态的数据总容量。
示例：
```
analyze;
ANALYZE
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)
描述：把字节计算的尺寸转换成一个易读的尺寸。
返回值类型：text
#### pg_size_pretty(numeric)
描述：把用数值表示的字节计算的尺寸转换成一个易读的尺寸。
返回值类型：text
备注：pg_size_pretty用于把其他函数的结果格式化成一种易读的格式，可以根据情况使用KB 、MB 、GB 、TB。
#### pg_table_size(regclass)
描述：指定的表使用的磁盘空间，不计索引（但是包含TOAST，自由空间映射和可见性映射）。
返回值类型：bigint
#### 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或者名称，然后返回以字节计的数据和所有相关的索引和压缩表的尺寸。
#### pg_obs_file_size(regclass)
描述：指定列存V3版本表OID或者表名字，获取其在OBS上存储的CU文件大小、文件名、bucket号。该函数仅9.1.0及以上集群版本支持。
参数：入参可以是表的OID或者表名。
返回值类型：record
表1返回字段 
| 名称       | 类型      | 描述              |
|:---|:---|:---|
| bucketid | integer | CU文件存储的bucket号。 |
| filename | text    | CU文件名。          |
| size     | bigint  | CU文件大小，单位为字节。   |
   
示例：
```
SELECT * FROM pg_obs_file_size('t3_col_part_dif_partition');
 bucketid |     filename     | size
----------+------------------+------
        9 | 23488119324673.0 |  512
       22 | 23488102760449.0 |  512
       21 | 23488119521281.0 |  512
       16 | 23488102662145.0 |  512
(4 rows)
```
#### pg_obs_file_size(text, text)
描述：指定列存V3版本表(主表名,分区表)的某个分区，返回其在OBS上存储的CU文件大小、文件名、bucket号。该函数仅9.1.0及以上集群版本支持。
参数：入参可以是表的OID或者表名，分区名则直接使用分区名。
返回值类型：record
| 名称       | 类型      | 描述             |
|:---|:---|:---|
| bucketid | integer | CU文件存储的bucket号 |
| filename | text    | CU文件名          |
| size     | bigint  | CU文件大小，单位为字节   |
   
