postgres 常用指令

登录 

--登录
psql -h 主机 -p 端口 -U 用户 -d 数据库

授权

 grant select on my_schema.t to aa; -- my_schema.t   .t 表名称
 
 grant all on clean_data to yy_odp;
 
 ALTER TABLE "public"."tyc_data_20211019_copy2" 
  OWNER TO "yy_odp";

备份还原

--还原
pg_restore -h 决策易数据库地址 -p 5432 -U 数据库用户 -a -d 数据库 -t 表名称 备份文件路径 

pg_restore -h 192.168.6.214 -p 5432 -U postgres -a -d masterdata_clean 

--备份
pg_dump -h 主机地址  -p 端口 -U 用户名 -d 数据库 -W -F c -b -v -t 表名称 -f e:\tt.dmp

导入导出

--导出数据至csv

\COPY (select  roleprivileges.* from roleprivileges inner join TblUdtEntity on roleprivileges.entityid  = TblUdtEntity.tbludtentityid where TblUdtEntity.entitytypecode in('dd_accountbase')) 
TO 'E:database\zz\data.csv' with csv;
-- 替换 E:database\zz\data.csv 修改该路径


--导入csv数据至数据库
\COPY roleprivilegesbase FROM 'E:database\zz\data.csv' WITH csv;

 数据库链接


-- 查看数据库连接使用情况
select * from pg_stat_activity

-- 杀死进程 (强度从弱到轻)
select pg_cancel_backend(pid)    -- 后台发送sigint信号,关闭当前后台进程,用户只能关闭自己的后台进程,事务回滚。

select pg_terminate_backend(pid)  --推荐  强杀,向后台发送sigterm信号,关闭当前后台进程,需要有超级用户权限,超级用户可以关闭所有后台进程,事务回滚。

select kill -9 (pid) --不推荐  操作系统层面,暴力杀死进程  如果是kill一个很大的update,需要很长的时间做回滚,回滚过程中数据库不可用。

 set statement_timeout to 30000; -- 30000 单位 毫秒 -- 超时设置 
 select count(1) from pg_stat_activity; -- 当前总共正在使用的连接数
 show max_connections; --显示系统允许的最大连接数
 show superuser_reserved_connections ; --显示系统保留的用户数
 select usename, count(*) from pg_stat_activity group by usename order by count(*) desc; --按照用户分组查看
 alter system set max_connections= 数量  --修改最大连接数
 https://blog.51cto.com/geekbin/1398671 --postgresql修改配置生效方法

结束闲置数据库链接 

select * from pg_stat_activity where state = 'idle';
--select pg_terminate_backend(pid);

-- 释放空链接
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state='idle'; 

数据库扩展

-- 查看数据库扩展
select * from pg_extension;
-- 创建 gin 索引扩展
CREATE EXTENSION pg_bigm; 
-- 创建 gin 索引 (主要用于扩展模糊搜索)
CREATE INDEX odp_accountbase_name_bigm_idx ON public.odp_accountbase USING gin (name gin_bigm_ops);

 查看表索引情况

select * from pg_indexes where tablename = 'tyc_data_cleanbase';

 备份表

SELECT * INTO doctor20220107 FROM doctor;

 查看锁表情况

select
    b.relname,
    a.pid,
    a.locktype,
    a.database,
    a.mode,
    a.relation
from pg_locks a
join pg_class b on a.relation = b.oid
where b.relname = '表名';

--杀死进程释放锁
select pg_cancel_backend(pid); -- pid 就是上面查询到的 pid 列 

 查看清理情况

SELECT
    relname ,--表名
    seq_scan ,--全表扫描次数
    seq_tup_read ,--全表扫描记录数
    idx_scan ,--索引扫描次数
    idx_tup_fetch ,--索引扫描记录数
    n_tup_ins ,--插入的条数
    n_tup_upd ,--更新的条数
    n_tup_del ,--删除的条数
    n_tup_hot_upd ,--热更新条数
    n_live_tup ,--活动元组估计数
    n_dead_tup ,--死亡元组估计数
     last_vacuum ,--最后一次手动清理时间
    last_autovacuum ,--最后一次自动清理时间
    last_analyze ,--最后一次手动分析时间
    last_autoanalyze ,--最后一次自动分析时间
    vacuum_count ,--手动清理的次数
    autovacuum_count ,--自动清理的次数
     analyze_count ,--手动分析此表的次数
    autoanalyze_count ,--自动分析此表的次数
    ( CASE WHEN n_live_tup > 0 THEN n_dead_tup :: float8 / n_live_tup :: float8 ELSE 0 END ) :: NUMERIC ( 12, 2 ) AS "死/活元组的比例"
FROM
    pg_stat_all_tables
WHERE
    schemaname = 'public' and relname ='odp_doctorbase'
ORDER BY n_dead_tup::float8 DESC;

VACUUM FULL VERBOSE odp_doctorbase;
VACUUM FULL VERBOSE ANALYZE odp_doctorbase;

你可能感兴趣的:(数据库)