转载来源 :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 testTable "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 |     6513156postgres  |     6657144jboss     |     6521348bugs      |     6521348david     |   190534776BMCV3     | 28147135608mydb      |    10990712template1 |     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_statusON base.keyword_engineUSING 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 MBidx_test                      | 91 MBtesttable_idx                 | 1424 kBcity_pkey                     | 256 kBcity11                        | 256 kBcountrylanguage_pkey          | 56 kBsale_pkey                     | 8192 bytestrack_pkey                    | 8192 bytestbl_partition_201211_joindate | 8192 bytestbl_partition_201212_joindate | 8192 bytestbl_partition_201301_joindate | 8192 bytestbl_partition_201302_joindate | 8192 bytestbl_partition_201303_joindate | 8192 bytescustomer_pkey                 | 8192 bytesalbum_pkey                    | 8192 bytesitem_pkey                     | 8192 bytestbl_partition_201304_joindate | 8192 bytestbl_partition_201307_joindate | 8192 bytestbl_partition_201305_joindate | 0 bytestbl_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 MBidx_test                      | 91 MBtesttable_idx                 | 1424 kBcity_pkey                     | 256 kBcity11                        | 256 kBcountrylanguage_pkey          | 56 kBsale_pkey                     | 8192 bytestrack_pkey                    | 8192 bytestbl_partition_201211_joindate | 8192 bytestbl_partition_201212_joindate | 8192 bytestbl_partition_201301_joindate | 8192 bytestbl_partition_201302_joindate | 8192 bytestbl_partition_201303_joindate | 8192 bytescustomer_pkey                 | 8192 bytesalbum_pkey                    | 8192 bytesitem_pkey                     | 8192 bytestbl_partition_201304_joindate | 8192 bytestbl_partition_201307_joindate | 8192 bytestbl_partition_201305_joindate | 0 bytestbl_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 MBtesttable                     | 1424 kBcity                          | 256 kBcountrylanguage               | 56 kBcountry                       | 40 kBtestcount                     | 8192 bytestbl_partition_201302          | 8192 bytestbl_partition_201303          | 8192 bytesperson                        | 8192 bytescustomer                      | 8192 bytesamerican_state                | 8192 bytestbl_david                     | 8192 bytesemp                           | 8192 bytestbl_partition_201212          | 8192 bytestbl_partition_201304          | 8192 bytestbl_partition_error_join_date | 8192 bytestbl_partition_201211          | 8192 bytesalbum                         | 8192 bytestbl_partition_201307          | 8192 bytestbl_xulie                     | 8192 bytestbl_partition_201301          | 8192 bytessale                          | 8192 bytesitem                          | 8192 bytestrack                         | 8192 bytestbl_partition_201306          | 0 bytestbl_partition                 | 0 bytestbl_partition_201305          | 0 bytesperson2                       | 0 bytes
(28 rows)

3.10 查看表空间大小

david=# select spcname from pg_tablespace;spcname
------------pg_defaultpg_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

PostgreSQL 查看数据库,索引,表,表空间大小相关推荐

  1. postgresql 查看数据库,表,索引,表空间以及大小

    为什么80%的码农都做不了架构师?>>>    postgresql 查看数据库,表,索引,表空间以及大小 1.查看数据库 #psql -U postgres //\加上字母l,相当 ...

  2. 如何查看文件夹占用的空间大小 Windows

    如何查看文件夹占用的空间大小 Windows 可以使用 Folder Size,扫描过后是这样的

  3. 查oracle表空间最大的表,查询表空间大小(oracle查询表空间大小)

    查询表空间大小(oracle查询表空间大小) 2020-07-24 11:36:31 共10个回答 使用以下语句查看当前用户每个表占用空间的大小:selectsegment_name,sum(byte ...

  4. mysql查询一个数据库所有表的记录数,mysql 查看数据库中所有表的记录数

    mysql使用select count(*) from table_name可以查询某个表的总记录数.想快速的知道数据库中所有表的记录数信息怎么办?如果使用mysql的版本在5.0及以上,可以通过查询 ...

  5. 如何查看数据库索引的利用率?

    数据库性能调优,不止是加索引,索引建多了,会导致索引数据过去庞大,也会严重影响性能.了解索引的利用率可以帮助我们更好处理垃圾索引. 1.mysql查看索引利用率: SELECT t.TABLE_SCH ...

  6. mysql查看数据库所占用的空间

    查询某个表所占用的磁盘空间大小: SELECT CONCAT(ROUND(SUM(data_length/1024/1024),2),'MB') AS data_length_MB, CONCAT(R ...

  7. 查看数据库表使用空间大小

    SET NOCOUNT ON DECLARE @db VARCHAR(20) SET @db=db_name() DBCC UPDATEUSAGE(@db) WITH NO_INFOMSGS GOCR ...

  8. mysql查看当前库所有表记录数_mysql中查看数据库中所有表的记录数

    我们继续我们的博客创建.           在一个项目日常的运行中,常常会为服务过慢而导致用户体验不好,在这一点上,常常需要进行性能优化,而如果没有针对性的对某一个 模块进行优化,那么效果往往是不理 ...

  9. mysql数据库索引回表_简述 MySQL 数据库的覆盖索引与回表

    两大类索引 使用的存储引擎:MySQL5.7 InnoDB 聚簇索引 *如果表设置了主键,则主键就是聚簇索引 *如果表没有主键,则会默认第一个NOTNULL,且唯一(UNIQUE)的列作为聚簇索引 * ...

最新文章

  1. 介绍一个效率爆表的数据采集框架
  2. c 与java的区别_C/C++与java的区别
  3. 《Python从小白到大牛》第6章 数据类型
  4. 第十六届全国大学智能汽车竞赛全向组沁恒芯片申请统计情况
  5. 设计模式--简单工厂(个人笔记)
  6. HDU-2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(dp)
  7. 如何跟成功的男人谈恋爱?
  8. Matlab 获取主板、硬盘、CPU、BIOS和网卡序列号
  9. jquery实现多选框
  10. android 系统闹钟 问题,android 闹钟设置问题(示例代码)
  11. web前端入坑系列回归,再推荐一波学习资源
  12. Instrument API介绍
  13. Python制作绘图板,基础功能实现
  14. 互联网30年,总有人正年轻
  15. python制作雕刻软件_Mac动画制作软件——blender for Mac
  16. (菜鸟教程)Java分支结构程序设计----if语句的使用
  17. vue 子组件与父组件运行的顺序
  18. L1-054 福到了 (15分)
  19. there is no getter for property name ‘planid‘ in class.lang.java
  20. 高等数学——求解不定积分的经典换元法

热门文章

  1. python中stripped string_【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结
  2. lambda函数if_Lambda函数用法总结
  3. Nacos系列:Nacos的三种部署模式 1
  4. 前嗅ForeSpider教程:配置关键词
  5. [译] Object.assign 和 Object Spread 之争, 用谁?
  6. 利用 John the Ripper 破解用户登录密码
  7. Spring Core Container 源码分析七:注册 Bean Definitions
  8. Office 365 On MacOS 系列——安装 O365 其他组件
  9. 重温JS基础--创建对象
  10. Python爬虫抓取 python tutorial中文版,保存为word