看着你,工作日的下午茶都要甜上几分。
-------------------------持续更新--------------------------
进入PostgreSQL
#两条命令
su - postgres
psql
#此时已经进入pg了
查看数据库大小
select pg_size_pretty(pg_database_size('dbname'));
查看数据表大小
select pg_size_pretty(pg_table_size('tablename'));
查看索引大小
select pg_size_pretty(pg_relation_size('tablename_pkey'));
查看表的索引
select * from pg_indexes where tablename='tablename';
查看数据库表的磁盘文件路径
select pg_relation_filepath('tablename');
设置主键自增序列最大值(解决insert时主键冲突)
select setval('tablename_id_seq',(select max(id) from tablename));
查看当前正在执行的sql任务
select * from pg_stat_activity;
select pid,application_name,client_addr,query_start,waiting,state,query from pg_stat_activity;
查询pg当前连接数
select count(1) from pg_stat_activity;
查询pg最大连接数
show max_connections;
执行sql文件
su -postgres #进入命令模式
psql -d 数据库名 -f /xx/xx.sql; # 指定数据库执行目录下sql文件
回收表空间
vacuum full tablename;
或
VACUUM tablename;
两者区别:
1.vacuum full会锁表。
2.vacuum只是将deadtuple的行的空间转换为能够使用的状态,额外空间一般不会返回给os(除非文件末尾有大量的连续空闲空间)。vacuum full会将这些空间碎片后面的数据上移,将数据写入一个新的磁盘文件中。
3.vacuum full执行效率低,执行过程会被锁表,不能操作表。