本篇内容主要讲解“Postgresql性能相关操作系统及数据库说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql性能相关操作系统及数据库说明”吧!
--pg 性能调整相关 --内存 buffer cache 直接对磁盘进行操作的数据会缓存到buffer cache page cache 文件系统中的数据则交给page cache进行缓存 --cache不自动回收,数据库需要内存时,cache可以很快被回收,如果没用到交换分区,可说明内存够用 -释放缓存 sync 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 --or 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; --or 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; end; --对于大规模,可通过pg_repack工具进行定时索引重建
到此,相信大家对“Postgresql性能相关操作系统及数据库说明”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。