阿使得肌肤· 发表于 2016-11-20 08:35:35

PostgreSQL 常用维护操作(二)

  1.使用命令行方式查看用户自己的表。
$ psql -c "\d" -d kevin_testcould not change directory to "/root"List of relationsSchema |   Name      | Type|   Owner--------+---------------+-------+----------------public | tbl_test_port | table | pg_test_user_3(1 row)$  
2.查看当前数据库的大小,单位Byte.
kevin_test=# SELECT pg_database_size(current_database());pg_database_size------------------5431588(1 row)kevin_test=#  
3.查看服务器中所有数据库的大小。
kevin_test=# SELECT datname, pg_database_size(datname) from pg_database;datname       | pg_database_size--------------------+------------------template1          |          5316612template0          |          5316612postgres         |          5415204kevin_test         |          5431588pg_test_database_3 |          5316612(5 rows)kevin_test=#  
4.查看某张表的大小。
  a. SQL方式查询
kevin_test=# SELECT pg_relation_size('tbl_test_port');pg_relation_size------------------8192(1 row)kevin_test=#  b. 命令方式查询
kevin_test=# \dt+ tbl_test_portList of relationsSchema |   Name      | Type|   Owner      |    Size    | Description--------+---------------+-------+----------------+------------+-------------public | tbl_test_port | table | pg_test_user_3 | 8192 bytes |(1 row)kevin_test=#  
5.查看某表包括表索引、视图等引用在内的所有空间大小。
kevin_test=# SELECT pg_total_relation_size('tbl_test_port');pg_total_relation_size------------------------24576(1 row)kevin_test=#  
6.查看表中记录个数,由于count(*)在记录很多的情况下,效率较低,所以提供了一种估算的方式。
kevin_test=# SELECT count(*) from tbl_test_port;count-------12(1 row)kevin_test=#kevin_test=# SELECT (CASE WHEN reltuples > 0 THENpg_relation_size('tbl_test_port') / (8192 * relpages / reltuples)ELSE 0END)::bigint as estimated_row_countFROM pg_classWHERE oid = 'tbl_test_port'::regclass;estimated_row_count---------------------0(1 row)kevin_test=#  
可以看出,在记录个数较少的情况下,结果不准确。
页: [1]
查看完整版本: PostgreSQL 常用维护操作(二)