Postgresql性能相关操作系统及数据库说明

68次阅读
没有评论

共计 3224 个字符,预计需要花费 9 分钟才能阅读完成。

本篇内容主要讲解“Postgresql 性能相关操作系统及数据库说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Postgresql 性能相关操作系统及数据库说明”吧!

--pg  性能调整相关
buffer cache  直接对磁盘进行操作的数据会缓存到 buffer cache
page cache  文件系统中的数据则交给 page cache 进行缓存
--cache 不自动回收,数据库需要内存时,cache 可以很快被回收,如果没用到交换分区,可说明内存够用
- 释放缓存
echo 1   /proc/sys/vm/drop_caches
--vmstat  虚拟内存、进程、cpu 等整体情况
-r  当前队列中有几个进程在等待
-b  当前有多少个进程进入不可中断式睡眠状态
-swpd  已使用的交换分区的大小
-free  空闲内存大小
-buff  已使用的 buffer 大小
--cache  已使用的 page cache 大小
-si/so  从磁盘交换到 swap 分区和从 swap 分区交换的磁盘大小
-bi/bo  从磁盘读取和写入到磁盘的大小,单位 blocks/s
-in  每秒被中断的进程数
-cs  每秒多少个 cpu 进程在进进出出
--iostat  监控磁盘输入输出
--mpstat cpu 详细性能信息
--sar  默认保存 28 天,目录  /var/log/sa  修改  /etc/sysconfig/sysstat
-- 查看某一时间段
sar -q -f /var/log/sa/sa15 -s 22:00:00 -e 23:00:00
sar -q # 汇总 cpu 状况
sar -b # 汇总 io 状况
--linux I/O  调度
## 查看当前支持的调度算法
dmesg | grep -i scheduler
--cfg  绝对公平调度算法  ,默认
--noop  电梯调度算法   适合 ssd
--deadline  绝对保障算法  
-- 查看当前磁盘 sda 的 io 调度算法
cat /sys/block/sda/queue/scheduler
-- 临时修改
echo noop   /sys/block/sda/queue/scheduler
## 磁盘预读扇区
/sbin/blockdev --getra /dev/sda # 默认 256,可设置 16384 或更大
/sbin/blockdev --setra 16384 /dev/sda
echo 16384 /sys/block/sda/queue/read_ahead_kb
## 禁用 swap
swapoff -a 
swapon -a
-- 透明大页,要关闭
cat /sys/kernel/mm/transparent_hugepage/enabled
echo never   /sys/kernel/mm/transparent_hugepage/enabled
##numa guanbi 
numactl -hardware
numastat
#可编辑  /etc/grub.conf  行末加 numa=off 禁用
## 数据库方面
-- 统计信息
pg_stat_database
-- 缓存命中率,如果低于 1,可尝试调整 shared_buffers
select blks_hit::float/(blks_read + blks_hit) as cache_hit_ratio from pg_stat_database where datname=current_database();
-- 事务提交率, 低于 1,检查是否死锁或其他超时太多
select xact_commit::float/(xact_commit +xact_rollback) as successful_xact_ratio from pg_stat_database where datname=current_database();
-- 优化后建议执行以下语句,方面对比优化前后数据
pg_stat_reset()
-- 表级统计信息
pg_stat_user_tables
-- 索引使用率
select sum(idx_scan)/(sum(idx_scan) + sum(seq_scan)) as idx_scan_ratio from pg_stat_all_tables where schemaname= your_schema 
select relname,idx_scan::float/(idx_scan+seq_scan+1) as idx_scan_ratio from stat_all_tables where schemaname= your schema  order by idx_scan_ratio asc;
-- 语句级统计信息   通过 pg_stat_statements ,postgres  日志、auto_explain  来获取
pg_stat_statements
shared_preload_libraries= pg_stat_statements 
pg_stat_statements.track=all 
create extension pg_stat_statements;
-- 查询平均执行时间最长的 3 条查询
select calls,total_time/calls as avg_time,left(query,80) from pg_stat_statements order by 2 desc limit 3;
-- 查看执行计划  analyze 可以得到真正执行计划
explain analyze select * from tb1;
-- 除了 analyze 选项,可以使用其他
explain (analyze on ,timing on,verbose on,buffers on) select * from tb1;
--session  级别  log_xxx_stat 判断问题, 使用的系统资源等,set client_min_messages=log;
set log_parser_stats=on;
set log_planner_stats=on;
set client_min_messages=log;
set log_parser_stats=off;
set log_planner_stats=off;
set log_statement_stats=on;
-- 重建索引
create unique index concurrently on mytb1 using btree(id);
--id  字段有两索引
select schemaname,relname,indexrelanme,pg_relation_size(indexrelid) as index_size,idx_scan,idx_tup_read,idx_tup_fetch from pg_stat_user_indexes where indexrelname in (select indexname from pg_indexes where schemaname= public  and tablename= mytb1 
-- 开启事务删除主机索引,同时将第二索引更新为主键约束
begin;
alter table mytb1 drop constraint mytb1_pkey;
alter table mytb1 add constraint mytb1_id_idx primary key using index mytb1_id_idx;
-- 对于大规模,可通过 pg_repack 工具进行定时索引重建 

到此,相信大家对“Postgresql 性能相关操作系统及数据库说明”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计3224字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)