数据库对象尺寸函数
数据库对象尺寸函数计算数据库对象使用的实际磁盘空间。
pg_column_size(any)
描述:存储一个指定的数值需要的字节数(可能压缩过)。
返回值类型:int
备注:pg_column_size显示用于存储某个独立数据值的空间。
1 2 3 4 5 |
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或者名称,然后返回该对象使用的全部磁盘空间。
示例:
1 2 3 4 5 |
gaussdb=# SELECT pg_database_size('testdb'); pg_database_size ------------------ 51590112 (1 row) |

pg_database_size(oid/name)函数的查询耗时与该oid/name所对应数据库中的对象文件数目相关,基本呈线性关系。如需进行耗时评估,可参考以下步骤:
- 由于耗时与软硬件环境有关,因此需要以某个库(所选择库的对象文件数目不宜过多)的测试结果为基准。根据查询耗时和库中对象文件数目,计算出单个对象文件的耗时database_size_t。
- 使用select oid,* from pg_database where datname = 'database';查询获取需要查询库的OID,在表空间base和pg_tblspc目录下统计该OID目录下的所有文件数目database_obj_num。如果该目录中包含子目录,则需要进入查看对象文件数目,依次类推;使用ls | wc -l查询目录下文件数目。
- 根据基准测试结果中的单文件耗时database_size_t和数据库下所有对象文件数目database_obj_num计算预估总耗时,总耗时 = database_size_t * database_obj_num。如果预估时延过长,需考虑调整执行超时阈值,避免出现不必要的告警。
pg_relation_size(oid)
描述:指定OID代表的表或者索引所使用的磁盘空间。
返回值类型:bigint
get_db_source_datasize()
描述:估算当前数据库非压缩态的数据总容量。
返回值类型:bigint
备注:调用该函数前需要做analyze。
示例:
1 2 3 4 5 6 7 |
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 |