PostgreSQL 查看数据库,索引,表,表空间大小
转载来源 :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 查看数据库,索引,表,表空间大小相关推荐
- postgresql 查看数据库,表,索引,表空间以及大小
为什么80%的码农都做不了架构师?>>> postgresql 查看数据库,表,索引,表空间以及大小 1.查看数据库 #psql -U postgres //\加上字母l,相当 ...
- 如何查看文件夹占用的空间大小 Windows
如何查看文件夹占用的空间大小 Windows 可以使用 Folder Size,扫描过后是这样的
- 查oracle表空间最大的表,查询表空间大小(oracle查询表空间大小)
查询表空间大小(oracle查询表空间大小) 2020-07-24 11:36:31 共10个回答 使用以下语句查看当前用户每个表占用空间的大小:selectsegment_name,sum(byte ...
- mysql查询一个数据库所有表的记录数,mysql 查看数据库中所有表的记录数
mysql使用select count(*) from table_name可以查询某个表的总记录数.想快速的知道数据库中所有表的记录数信息怎么办?如果使用mysql的版本在5.0及以上,可以通过查询 ...
- 如何查看数据库索引的利用率?
数据库性能调优,不止是加索引,索引建多了,会导致索引数据过去庞大,也会严重影响性能.了解索引的利用率可以帮助我们更好处理垃圾索引. 1.mysql查看索引利用率: SELECT t.TABLE_SCH ...
- mysql查看数据库所占用的空间
查询某个表所占用的磁盘空间大小: SELECT CONCAT(ROUND(SUM(data_length/1024/1024),2),'MB') AS data_length_MB, CONCAT(R ...
- 查看数据库表使用空间大小
SET NOCOUNT ON DECLARE @db VARCHAR(20) SET @db=db_name() DBCC UPDATEUSAGE(@db) WITH NO_INFOMSGS GOCR ...
- mysql查看当前库所有表记录数_mysql中查看数据库中所有表的记录数
我们继续我们的博客创建. 在一个项目日常的运行中,常常会为服务过慢而导致用户体验不好,在这一点上,常常需要进行性能优化,而如果没有针对性的对某一个 模块进行优化,那么效果往往是不理 ...
- mysql数据库索引回表_简述 MySQL 数据库的覆盖索引与回表
两大类索引 使用的存储引擎:MySQL5.7 InnoDB 聚簇索引 *如果表设置了主键,则主键就是聚簇索引 *如果表没有主键,则会默认第一个NOTNULL,且唯一(UNIQUE)的列作为聚簇索引 * ...
最新文章
- 介绍一个效率爆表的数据采集框架
- c 与java的区别_C/C++与java的区别
- 《Python从小白到大牛》第6章 数据类型
- 第十六届全国大学智能汽车竞赛全向组沁恒芯片申请统计情况
- 设计模式--简单工厂(个人笔记)
- HDU-2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(dp)
- 如何跟成功的男人谈恋爱?
- Matlab 获取主板、硬盘、CPU、BIOS和网卡序列号
- jquery实现多选框
- android 系统闹钟 问题,android 闹钟设置问题(示例代码)
- web前端入坑系列回归,再推荐一波学习资源
- Instrument API介绍
- Python制作绘图板,基础功能实现
- 互联网30年,总有人正年轻
- python制作雕刻软件_Mac动画制作软件——blender for Mac
- (菜鸟教程)Java分支结构程序设计----if语句的使用
- vue 子组件与父组件运行的顺序
- L1-054 福到了 (15分)
- there is no getter for property name ‘planid‘ in class.lang.java
- 高等数学——求解不定积分的经典换元法
热门文章
- python中stripped string_【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结
- lambda函数if_Lambda函数用法总结
- Nacos系列:Nacos的三种部署模式 1
- 前嗅ForeSpider教程:配置关键词
- [译] Object.assign 和 Object Spread 之争, 用谁?
- 利用 John the Ripper 破解用户登录密码
- Spring Core Container 源码分析七:注册 Bean Definitions
- Office 365 On MacOS 系列——安装 O365 其他组件
- 重温JS基础--创建对象
- Python爬虫抓取 python tutorial中文版,保存为word