表 9-64 中显示的函数计算数据库对象使用的实际磁盘空间。
表9-64. 数据库对象尺寸函数
名字 | 返回类型 | 描述 |
pg_column_size(any) | int | 存储一个指定的数值需要的字节数(可能压缩过) |
pg_database_size(oid) | bigint | 指定 OID 代表的数据库使用的磁盘空间 |
pg_database_size(name) | bigint | 指定名称的数据库使用的磁盘空间 |
pg_indexes_size(regclass) | bigint | 隶属于指定表的索引们使用的总共磁盘空间 |
pg_relation_size(relationregclass, fork text) | bigint | 指定的表或者索引的执行fork ('main', 'fsm' 或者 'vm') 所使用的磁盘空间 |
pg_relation_size(relationregclass) | bigint | pg_relation_size(..., 'main')的简写 |
pg_size_pretty(bigint) | text | 把表示为64-bit 整数的字节计算的尺寸转换成一个人类易读的尺寸。 |
pg_size_pretty(numeric) | Text | 把表示为numeric值的字节计算的尺寸转换成一个人类易读的尺寸。 |
pg_table_size(regclass) | Bigint | 指定表使用的磁盘空间,不包括索引(但是包括TOAST,自由空间映射和可见映射) |
pg_tablespace_size(oid) | bigint | 指定 OID 代表的表空间使用的磁盘空间 |
pg_tablespace_size(name) | bigint | 指定名字的表空间使用的磁盘空间 |
pg_total_relation_size(regclass) | bigint | 指定的表所使用的全部磁盘空间,包括索引和Toast。 |
注:以上数据库对象名可以用模式名修饰。
pg_column_size 显示用于存储某个独立数据值的空间。
pg_total_relation_size接受表或者toast表的OID或者名字,然后返回该对象使用的全部磁盘空间。该函数等价于pg_table_size + pg_indexes_size。
pg_table_size接受一个表的OID或者名称,并且返回该表所需的磁盘空间,隶属于该表的索引所使需空间除外。(TOAST空间,空闲空间映射,可见映射是包括在内的。)
pg_indexes_size接受一个表的OID或者名称,并且返回该表的所有索引所使用的全部磁盘空间。
pg_database_size 和 pg_tablespace_size 接受一个数据库或者表空间的 OID 或者名字,然后返回该对象使用的全部磁盘空间。为了使用pg_database_size,你必须对指定的这个数据库有connect权限(该权限是默认授予的)。为了使用pg_tablespace_size,你必须对指定的这个表空间有create权限,除非该表空间是当前数据库的默认表空间。
pg_relation_size 接受一个表、索引、压缩(toast)表的 OID 或者名字,然后返回它们以字节计的磁盘空间大小。指定‘main’或者省略第二个参数会返回该关系的main data fork的尺寸。指定 'fsm'会返回该关系的空间空间映射的尺寸。指定‘vm’会返回该关系的可见映射的尺寸(参阅 Section 58.4获取更多详细信息)。请注意改函数一次只能返回一个fork的尺寸;在大多数情况下,使用更高级别的函数pg_total_relation_size 和pg_table_size会更加方便。
pg_size_pretty 用于把其它函数的结果格式化成一种人类易读的格式,可以根据情况使用KB 、MB 、GB 、TB 。
以上在表或者索引上执行的函数接受一个regclass 参数,该参数就是系统目录中pg_class中表和索引的OID。你不用禽兽产看OID,因为regclass数据类型的输入转换器将会帮你来转换。只要写上单引号引起的表名,那样看起来想一个文字常量。为了处理普通SQL名称的兼容,字符串会被转换成小谢,除非表名包含双引号。
如果向以上函数传的OID参数表示的是一个不存在对象,那么函数会返回NULL.
几个示例:
--查看所有数据库占用磁盘空间的大小:
highgo=# select pg_database.datname, pg_size_pretty(pg_database_size(pg_databas
e.datname)) AS size from pg_database;
datname | size
-----------+---------
template1 | 5385 kB
template0 | 5377 kB
highgo | 11 GB
translate | 5763 kB
zyy | 5603 kB
test | 122 MB
testlyy | 5459 kB
dbo | 361 MB
jnggzy | 58 MB
hh | 5475 kB
xxx | 5467 kB
sqlserver | 5467 kB
xz | 249 MB
ccc | 321 MB
(14 行记录)
--查看某个表的大小:
highgo=# select pg_size_pretty(pg_table_size('public.test'));--不包括索引,但包括toast
或者
highgo=# select pg_size_pretty(pg_total_relation_size('public.test'));--包括索引和toast
pg_size_pretty
----------------
24 kB
(1 行记录)
--查看所有数据库占用磁盘空间的大小:
highgo=# select pg_database.datname, pg_size_pretty(pg_database_size(pg_databas
e.datname)) AS size from pg_database;
datname | size
-----------+---------
template1 | 5385 kB
template0 | 5377 kB
highgo | 11 GB
translate | 5763 kB
zyy | 5603 kB
test | 122 MB
testlyy | 5459 kB
dbo | 361 MB
jnggzy | 58 MB
hh | 5475 kB
xxx | 5467 kB
sqlserver | 5467 kB
xz | 249 MB
ccc | 321 MB
(14 行记录)
--查看某个表的大小:
highgo=# select pg_size_pretty(pg_table_size('public.test'));--不包括索引,但包括toast
或者
highgo=# select pg_size_pretty(pg_total_relation_size('public.test'));--包括索引和toast
pg_size_pretty
----------------
24 kB
(1 行记录)
表 9-65中显示的函数用来识别指定数据库对象的磁盘文件。
名称 | 返回类型 | 描述 |
pg_relation_filenode(relation regclass) | oid | 指定关系的文件节点(filenode)编号 |
pg_relation_filepath(relation regclass) | text | 指定关系的文件路径名 |
pg_relation_filenode 接受表、索引、序列或者toast表的OID或者名称,并且返回当前分配给它的“文件节点”编号。文件节点是关系(参阅Section 58.1 获取更多详细信息)的文件名的基本组成部分。对于大部分表来说,改函数返回的结果与pg_class.relfilenode相同,但是对于某些系统目录,relfilenode 是0,必须使用该函数来获取准确值。如果向该函数中传入一个不拥有存储的关系(比如:视图),那么会返回NULL。
pg_relation_filepath与pg_relation_filenode类似,但是前者返回该关系的整个路径名称(相对于数据库簇的数据目录PGDATA而言)。
几个示例:
highgo=# select pg_relation_filenode('public.test');
pg_relation_filenode
----------------------
16612
(1 行记录)
highgo=# select pg_relation_filepath('public.test');
pg_relation_filepath
----------------------
base/11839/16612
(1 行记录)
highgo=# select pg_relation_filenode('public.test');
pg_relation_filenode
----------------------
16612
(1 行记录)
highgo=# select pg_relation_filepath('public.test');
pg_relation_filepath
----------------------
base/11839/16612
(1 行记录)
PostgreSQL社区官方文档:
系统管理函数:http://www.postgresql.org/docs/9.3/static/functions-admin.html
系统信息函数:http://www.postgresql.org/docs/9.3/static/functions-info.html