共計 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 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
正文完