Postgresql性能相关操作系统及数据库说明
本篇内容主要讲解“Postgresql性能相关操作系统及数据库说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql性能相关操作系统及数据库说明”吧!
--pg性能调整相关--内存buffercache直接对磁盘进行操作的数据会缓存到buffercachepagecache文件系统中的数据则交给pagecache进行缓存--cache不自动回收,数据库需要内存时,cache可以很快被回收,如果没用到交换分区,可说明内存够用-释放缓存syncecho1>/proc/sys/vm/drop_caches--vmstat虚拟内存、进程、cpu等整体情况-r当前队列中有几个进程在等待-b当前有多少个进程进入不可中断式睡眠状态-swpd已使用的交换分区的大小-free空闲内存大小-buff已使用的buffer大小--cache已使用的pagecache大小-si/so从磁盘交换到swap分区和从swap分区交换的磁盘大小-bi/bo从磁盘读取和写入到磁盘的大小,单位blocks/s-in每秒被中断的进程数-cs每秒多少个cpu进程在进进出出--iostat监控磁盘输入输出--mpstatcpu详细性能信息--sar默认保存28天,目录/var/log/sa修改/etc/sysconfig/sysstat--查看某一时间段sar-q-f/var/log/sa/sa15-s22:00:00-e23:00:00sar-q#汇总cpu状况sar-b#汇总io状况--linuxI/O调度##查看当前支持的调度算法dmesg|grep-ischeduler--cfg绝对公平调度算法,默认--noop电梯调度算法适合ssd--deadline绝对保障算法--查看当前磁盘sda的io调度算法cat/sys/block/sda/queue/scheduler--临时修改echonoop>/sys/block/sda/queue/scheduler##磁盘预读扇区/sbin/blockdev--getra/dev/sda#默认256,可设置16384或更大/sbin/blockdev--setra16384/dev/sda#或echo16384/sys/block/sda/queue/read_ahead_kb##禁用swapswapoff-a##启用swapon-a--透明大页,要关闭cat/sys/kernel/mm/transparent_hugepage/enabledechonever>/sys/kernel/mm/transparent_hugepage/enabled##numaguanbinumactl-hardware--ornumastat#可编辑/etc/grub.conf行末加numa=off禁用##数据库方面--统计信息pg_stat_database--缓存命中率,如果低于1,可尝试调整shared_buffersselectblks_hit::float/(blks_read+blks_hit)ascache_hit_ratiofrompg_stat_databasewheredatname=current_database();--事务提交率,低于1,检查是否死锁或其他超时太多selectxact_commit::float/(xact_commit+xact_rollback)assuccessful_xact_ratiofrompg_stat_databasewheredatname=current_database();--优化后建议执行以下语句,方面对比优化前后数据pg_stat_reset()--表级统计信息pg_stat_user_tables--索引使用率selectsum(idx_scan)/(sum(idx_scan)+sum(seq_scan))asidx_scan_ratiofrompg_stat_all_tableswhereschemaname='your_schema';selectrelname,idx_scan::float/(idx_scan+seq_scan+1)asidx_scan_ratiofromstat_all_tableswhereschemaname='yourschema'orderbyidx_scan_ratioasc;--语句级统计信息通过pg_stat_statements,postgres日志、auto_explain来获取pg_stat_statements--开启shared_preload_libraries='pg_stat_statements'pg_stat_statements.track=allcreateextensionpg_stat_statements;--查询平均执行时间最长的3条查询selectcalls,total_time/callsasavg_time,left(query,80)frompg_stat_statementsorderby2desclimit3;--查看执行计划analyze可以得到真正执行计划explainanalyzeselect*fromtb1;--除了analyze选项,可以使用其他explain(analyzeon,timingon,verboseon,bufferson)select*fromtb1;--session级别log_xxx_stat判断问题,使用的系统资源等,setclient_min_messages=log;setlog_parser_stats=on;setlog_planner_stats=on;--orsetclient_min_messages=log;setlog_parser_stats=off;setlog_planner_stats=off;setlog_statement_stats=on;--重建索引createuniqueindexconcurrentlyonmytb1usingbtree(id);--id字段有两索引selectschemaname,relname,indexrelanme,pg_relation_size(indexrelid)asindex_size,idx_scan,idx_tup_read,idx_tup_fetchfrompg_stat_user_indexeswhereindexrelnamein(selectindexnamefrompg_indexeswhereschemaname='public'andtablename='mytb1');--开启事务删除主机索引,同时将第二索引更新为主键约束begin;altertablemytb1dropconstraintmytb1_pkey;altertablemytb1addconstraintmytb1_id_idxprimarykeyusingindexmytb1_id_idx;end;--对于大规模,可通过pg_repack工具进行定时索引重建
到此,相信大家对“Postgresql性能相关操作系统及数据库说明”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。