赞
踩
转载来源 :PostgreSQL 查看数据库,索引,表,表空间大小 : https://www.cnblogs.com/mchina/archive/2013/04/19/3028573.html
PostgreSQL 提供了多个系统管理函数来查看表,索引,表空间及数据库的大小,下面详细介绍一下。
3.1 查看存储一个指定的数值需要的字节数
david=# select pg_column_size(1); pg_column_size ---------------- (1 row) david=# select pg_column_size(10000); pg_column_size ---------------- (1 row) david=# select pg_column_size('david'); pg_column_size ---------------- (1 row) david=# select pg_column_size('hello,world'); pg_column_size ---------------- (1 row) david=# select pg_column_size('2013-04-18 15:17:21.622885+08'); pg_column_size ---------------- (1 row) david=# select pg_column_size('中国'); pg_column_size ---------------- (1 row)
3.2 查看数据库大小
查看原始数据
david=# \d test Table "public.test" Column | Type | Modifiers -----------+-----------------------+----------- id | integer | name | character varying(20) | gender | boolean | join_date | date | dept | character(4) | Indexes: "idx_join_date_test" btree (join_date) "idx_test" btree (id) david=# select count(1) from test; count --------- (1 row)
查看数据库postgres的oid
# SELECT oid from pg_database where datname='postgres';
sql语句查询
postgres=# select pg_size_pretty(pg_database_size('postgres'));
pg_size_pretty
----------------
6229 kB
(1 行记录)
查看david 数据库大小
david=# select pg_database_size('david');
pg_database_size
------------------
190534776
(1 row)
查看所有数据库大小
david=# select pg_database.datname, pg_database_size(pg_database.datname) AS size from pg_database;
datname | size
-----------+-------------
template0 | 6513156
postgres | 6657144
jboss | 6521348
bugs | 6521348
david | 190534776
BMCV3 | 28147135608
mydb | 10990712
template1 | 6521348
(8 rows)
查看所有数据库大小
david=# select pg_database.datname, pg_database_size(pg_database.datname) AS size from pg_database;
这样查出来的结果,看上去太长了,不太容易读数。
3.3 以人性化的方式显示大小
david=# select pg_size_pretty(pg_database_size('david'));
pg_size_pretty
----------------
MB
(1 row)
创建索引
CREATE INDEX idx_key_eng_search_status
ON base.keyword_engine
USING btree
(search_status);
3.4 查看单索引大小
david=# select pg_relation_size('idx_test');
pg_relation_size
------------------
(1 row)
david=# select pg_size_pretty(pg_relation_size('idx_test'));
pg_size_pretty
----------------
MB
(1 row)
david=# select pg_size_pretty(pg_relation_size('idx_join_date_test'));
pg_size_pretty
----------------
MB
(1 row)
3.5 查看指定表中所有索引大小
david=# select pg_indexes_size('test');
pg_indexes_size
-----------------
(1 row)
david=# select pg_size_pretty(pg_indexes_size('test'));
pg_size_pretty
----------------
MB
(1 row)
idx_test 和idx_join_date_test 两个索引大小加起来差不多等于上面pg_indexes_size() 查询出来的索引大小。
3.6 查看指定schema 里所有的索引大小,按从大到小的顺序排列。
david=# select * from pg_namespace; nspname | nspowner | nspacl --------------------+----------+------------------------------------- pg_toast | 10 | pg_temp_1 | 10 | pg_toast_temp_1 | 10 | pg_catalog | 10 | {postgres=UC/postgres,=U/postgres} information_schema | 10 | {postgres=UC/postgres,=U/postgres} public | 10 | {postgres=UC/postgres,=UC/postgres} (6 rows) david=# select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc; indexrelname | pg_size_pretty -------------------------------+---------------- idx_join_date_test | 91 MB idx_test | 91 MB testtable_idx | 1424 kB city_pkey | 256 kB city11 | 256 kB countrylanguage_pkey | 56 kB sale_pkey | 8192 bytes track_pkey | 8192 bytes tbl_partition_201211_joindate | 8192 bytes tbl_partition_201212_joindate | 8192 bytes tbl_partition_201301_joindate | 8192 bytes tbl_partition_201302_joindate | 8192 bytes tbl_partition_201303_joindate | 8192 bytes customer_pkey | 8192 bytes album_pkey | 8192 bytes item_pkey | 8192 bytes tbl_partition_201304_joindate | 8192 bytes tbl_partition_201307_joindate | 8192 bytes tbl_partition_201305_joindate | 0 bytes tbl_partition_201306_joindate | 0 bytes (20 rows)
查看索引大小
select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc;
3.7 查看指定表大小
david=# select pg_relation_size('test');
pg_relation_size
------------------
(1 row)
david=# select pg_size_pretty(pg_relation_size('test'));
pg_size_pretty
----------------
MB
(1 row)
使用pg_table_size() 函数查看
david=# select pg_table_size('test');
pg_table_size
---------------
(1 row)
david=# select pg_size_pretty(pg_table_size('test'));
pg_size_pretty
----------------
MB
(1 row)
3.8 查看指定表的总大小
david=# select pg_total_relation_size('test');
pg_total_relation_size
------------------------
(1 row)
david=# select pg_size_pretty(pg_total_relation_size('test'));
pg_size_pretty
----------------
MB
(1 row)
3.9 查看指定schema 里所有的表大小,按从大到小的顺序排列。
david=# select * from pg_namespace; nspname | nspowner | nspacl --------------------+----------+------------------------------------- pg_toast | 10 | pg_temp_1 | 10 | pg_toast_temp_1 | 10 | pg_catalog | 10 | {postgres=UC/postgres,=U/postgres} information_schema | 10 | {postgres=UC/postgres,=U/postgres} public | 10 | {postgres=UC/postgres,=UC/postgres} (6 rows) david=# select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc; indexrelname | pg_size_pretty -------------------------------+---------------- idx_join_date_test | 91 MB idx_test | 91 MB testtable_idx | 1424 kB city_pkey | 256 kB city11 | 256 kB countrylanguage_pkey | 56 kB sale_pkey | 8192 bytes track_pkey | 8192 bytes tbl_partition_201211_joindate | 8192 bytes tbl_partition_201212_joindate | 8192 bytes tbl_partition_201301_joindate | 8192 bytes tbl_partition_201302_joindate | 8192 bytes tbl_partition_201303_joindate | 8192 bytes customer_pkey | 8192 bytes album_pkey | 8192 bytes item_pkey | 8192 bytes tbl_partition_201304_joindate | 8192 bytes tbl_partition_201307_joindate | 8192 bytes tbl_partition_201305_joindate | 0 bytes tbl_partition_201306_joindate | 0 bytes (20 rows)
3.7 查看指定表大小
david=# select pg_relation_size('test');
pg_relation_size
------------------
(1 row)
david=# select pg_size_pretty(pg_relation_size('test'));
pg_size_pretty
----------------
MB
(1 row)
使用pg_table_size() 函数查看
david=# select pg_table_size('test');
pg_table_size
---------------
(1 row)
david=# select pg_size_pretty(pg_table_size('test'));
pg_size_pretty
----------------
MB
(1 row)
3.8 查看指定表的总大小
david=# select pg_total_relation_size('test');
pg_total_relation_size
------------------------
(1 row)
david=# select pg_size_pretty(pg_total_relation_size('test'));
pg_size_pretty
----------------
MB
(1 row)
3.9 查看指定schema 里所有的表大小,按从大到小的顺序排列。
david=# select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public' order by pg_relation_size(relid) desc; relname | pg_size_pretty -------------------------------+---------------- test | 91 MB testtable | 1424 kB city | 256 kB countrylanguage | 56 kB country | 40 kB testcount | 8192 bytes tbl_partition_201302 | 8192 bytes tbl_partition_201303 | 8192 bytes person | 8192 bytes customer | 8192 bytes american_state | 8192 bytes tbl_david | 8192 bytes emp | 8192 bytes tbl_partition_201212 | 8192 bytes tbl_partition_201304 | 8192 bytes tbl_partition_error_join_date | 8192 bytes tbl_partition_201211 | 8192 bytes album | 8192 bytes tbl_partition_201307 | 8192 bytes tbl_xulie | 8192 bytes tbl_partition_201301 | 8192 bytes sale | 8192 bytes item | 8192 bytes track | 8192 bytes tbl_partition_201306 | 0 bytes tbl_partition | 0 bytes tbl_partition_201305 | 0 bytes person2 | 0 bytes (28 rows)
3.10 查看表空间大小
david=# select spcname from pg_tablespace; spcname ------------ pg_default pg_global (2 rows) david=# select pg_tablespace_size('pg_default'); pg_tablespace_size -------------------- (1 row) david=# select pg_size_pretty(pg_tablespace_size('pg_default')); pg_size_pretty ---------------- GB (1 row)
另一种查看方法:
david=# select pg_tablespace_size('pg_default')/1024/1024 as "SIZE M";
SIZE M
--------
(1 row)
david=# select pg_tablespace_size('pg_default')/1024/1024/1024 as "SIZE G";
SIZE G
--------
(1 row)
增加
增加foo用户对该数据库public模式下所有表的select权限
test=# grant select on all tables in schema public to foo ;
增加foo用户对该数据库public模式下所有函数的执行权限
test=# grant execute on all functions in schema public to foo ;
增加foo用户对该数据库某个表的权限,权限可以一个或多个
test=# grant select,insert,update,delete on public.test to foo ;
增加foo用户对该数据库某个模式的权限,权限有all,create,usage 。
test=# grant all on schema public to foo ;
删除
删除foo用户对该数据库test表的select权限
test=# revoke select on test FROM foo ;
参考链接 :
postgresql查看数据库占用的物理存储空间大小 :https://www.cnblogs.com/liuyuanyuanGOGO/p/3224554.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。