MogDB 2.1.1 初始化引數概要說明
本文出處:https://www.modb.pro/db/394787
MogDB 資料庫安裝完成後,官方文件提供了重新整理引數的指令碼,推薦執行指令碼來進行初始化引數設定。
本文在官方提供指令碼的基礎上新增了簡單說明,方便新學習的同學能大概瞭解引數作用。
CentOS7.7 下標準安裝 MogDB 2.1.1
官方指令碼連結
一、注意
建議將 shell 內容複製到 notepad++等文字閱讀器中設定為 shell 語言閱讀
重新整理的引數都會寫到配置檔案/mogdb/data/db1/postgresql.conf 中(按照官方文件標準安裝是該路徑)
gs_guc set -I all -N all -c 是 openGauss/MogDB 設定引數的方法,說明見:https://www.modb.pro/db/30065
部分引數設定僅適合測試環境使用
在 MogDB 中查詢引數級別及簡單描述
\pset pager select context,name,short_desc from pg_settings order by context,category,name;
想進一步瞭解引數詳細,建議查詢官方文件:https://opengauss.org/zh/docs/3.0.0/docs/BriefTutorial/BriefTutorial.html
二、指令碼
!/bin/bash
source ~/.bashrc
獲取當前機器的記憶體大小,單位KB
memory=free|awk '{print $2}' |sed -n 2p
判斷記憶體是否小於4G
if [[ $memory -lt 410241024 ]]
記憶體小於4G,則設定max_process_memory為2G
then
##max_process_memory 資料庫可用的最大實體記憶體
max_process_memory=2GB
##shared_buffers 共享記憶體大小
shared_buffers=128MB
##max_connections 最大連線數
max_connections=500
##work_mem 內部排序操作和Hash表在開始寫入臨時磁碟檔案之前使用的記憶體大小
work_mem=4MB
##maintenance_work_mem 設定在維護性操作可使用的最大的記憶體
maintenance_work_mem=256MB
##應該是考慮到有實體記憶體本來就小於2G的情況,可以進一步減小max_process_memory和shared_buffers的值
echo "If the database fails to start, lower the parameters max_process_memory and shared_buffers"
判斷記憶體大於4G小於等於8G,按下面的值刷引數
elif [[ $memory -gt 410241024 ]] && [[ $memory -lt 810241024 ]]
then
max_process_memory=5GB
shared_buffers=1GB
max_connections=1000
work_mem=16MB
maintenance_work_mem=1GB
大於8G的情況按如下公式計算得出
else
max_process_memory=$((memory6/10/1024/1024))GB
shared_buffers=$((memory3/10/1024/1024))GB
max_connections=3000
work_mem=64MB
maintenance_work_mem=2GB
fi
記憶體相關引數
gs_guc set -I all -N all -c "max_process_memory=${max_process_memory}"
gs_guc set -I all -N all -c "shared_buffers=${shared_buffers}"
gs_guc set -I all -N all -c "work_mem=${work_mem}"
gs_guc set -I all -N all -c "maintenance_work_mem=${maintenance_work_mem}"
cstore_buffers 列存所使用的共享緩衝區的大小,對比O從12c起在SGA中也有類似區域,關於og列式儲存的介紹:https://blog.csdn.net/GaussDB/article/details/116017248
gs_guc set -I all -N all -c "cstore_buffers=16MB"
wal_buffers 用於存放WAL資料的共享記憶體空間的XLOG_BLCKSZ數,wal相當於O的redo,wal_buffers看樣子類似於SGA中的redo log buffer,但是og的這個記憶體區域遠大於o,可以研究下機制
gs_guc set -I all -N all -c "wal_buffers=1GB"
local_syscache_threshold 控制session動態記憶體大小
gs_guc set -I all -N all -c "local_syscache_threshold=32MB"
standby_shared_buffers_fraction 備庫所在伺服器使用shared_buffers記憶體緩衝區大小的比例,1代表100%
gs_guc set -I all -N all -c "standby_shared_buffers_fraction=1"
連線訪問相關引數
gs_guc set -I all -N all -c "max_connections=${max_connections}"
max_prepared_transactions 同時處於"預備"狀態的事務的最大數目
gs_guc set -I all -N all -c "max_prepared_transactions=${max_connections}"
listen_addresses 遠端客戶端連線使用的資料庫主節點ip或者主機名,參考:https://www.modb.pro/db/30200
gs_guc set -I all -N all -c "listen_addresses = '*'"
遠端連線的讀取模式,當前設定為無驗證
gs_guc set -I all -N all -c "remote_read_mode=non_authentication"
password_encryption_type 加密演算法設定,1代表採用sha256和md5方式對密碼加密,參考:https://www.modb.pro/db/30252
gs_guc set -I all -N all -c "password_encryption_type=1"
password_reuse_time 對新密碼進行可重用天數檢查
gs_guc set -I all -N all -c "password_reuse_time=0"
password_lock_time 密碼鎖定時間,設定為0時表示即使超過密碼錯誤次數限制導致帳戶鎖定,也會在短時間內自動解鎖
gs_guc set -I all -N all -c "password_lock_time=0"
password_effect_time 密碼有效期,0表示不開啟有效期限制功能,單位為天
gs_guc set -I all -N all -c "password_effect_time=0"
session_timeout 開啟自動斷開功能,0為不開啟
gs_guc set -I all -N all -c "session_timeout=0"
wal相關引數
wal_level 寫入WAL資訊量的級別(minimal、archive、hot_standby、logical)
gs_guc set -I all -N all -c "wal_level=logical"
full_page_writes 在檢查點之後對頁面的第一次修改時,是否將每個磁碟頁面的全部內容寫到WAL日誌中
gs_guc set -I all -N all -c "full_page_writes=off"
wal_log_hints 檢查點之後對頁面的第一次修改為頁面上元組hint bits的修改時,是否將整個頁面的全部內容寫到WAL日誌中
gs_guc set -I all -N all -c "wal_log_hints=off"
xloginsert_locks 併發寫預寫式日誌鎖的個數
gs_guc set -I all -N all -c "xloginsert_locks=48"
advance_xlog_file_num 在後臺週期性地提前初始化xlog檔案的數目
gs_guc set -I all -N all -c "advance_xlog_file_num=10"
複製相關引數
synchronous_commit 當前事務的同步方式,說明:https://blog.csdn.net/Hehuyi_In/article/details/103449611
gs_guc set -I all -N all -c "synchronous_commit=on"
wal_keep_segments Xlog日誌檔案段數量,“pg_xlog”目錄下保留事務日誌檔案的最小數目
gs_guc set -I all -N all -c "wal_keep_segments=1024"
max_wal_senders 事務日誌傳送程序的併發連線最大數量,不可大於等於max_connections
gs_guc set -I all -N all -c "max_wal_senders=16"
recovery_max_workers 最大並行回放執行緒個數,關於什麼是並行回放可檢視:https://zhuanlan.zhihu.com/p/390307047
gs_guc set -I all -N all -c "recovery_max_workers=4"
most_available_sync 在備機同步失敗時,是否阻塞主機,on為啟用,類似O的DG最大可用模式,正常是sync同步,當備庫斷異常時切換為async,在備庫恢復時,切換回sync
gs_guc set -I all -N all -c "most_available_sync=on"
max_size_for_xlog_prune xlog最大值的閾值,單位KB
gs_guc set -I all -N all -c "max_size_for_xlog_prune=104857600"
catchup2normal_wait_time 單同步備機情況下,控制備機資料追趕(catchup)阻塞主機的最長時間,https://gitee.com/opengauss/openGauss-server/issues/I23SAM
gs_guc set -I all -N all -c "catchup2normal_wait_time=0"
enable_slot_log 是否開啟邏輯複製槽主備同步特性
gs_guc set -I all -N all -c "enable_slot_log=on"
max_replication_slots 當前物理流複製槽數+所需的邏輯複製槽數
gs_guc set -I all -N all -c "max_replication_slots=32"
wal_receiver_timeout 從主機接收資料的最大等待時間,中止處於非活動狀態超過指定時間的複製連線
gs_guc set -I all -N all -c "wal_receiver_timeout=60s"
sync_config_strategy 主機、備機和級聯備之間配置檔案的同步策略,主機配置為none_node時,表示不允許主機向任何備機主動同步配置檔案
gs_guc set -I all -N all -c "sync_config_strategy=none_node"
日誌相關引數
logging_collector 控制開啟後端日誌收集程序logger進行日誌收集
gs_guc set -I all -N all -c "logging_collector=on"
log_duration 記錄每個已完成SQL語句的執行時間
gs_guc set -I all -N all -c "log_duration=on"
log_line_prefix 每條日誌資訊的字首格式
gs_guc set -I all -N all -c "log_line_prefix='%m %u %d %r %p %S'"
log_checkpoints 在伺服器日誌中記錄檢查點和重啟點的資訊
gs_guc set -I all -N all -c "log_checkpoints=on"
plog_merge_age 控制效能日誌資料輸出的週期,即多久進行一次效能日誌匯聚,單位為毫秒,0是不啟用
gs_guc set -I all -N all -c "plog_merge_age=0"
效能統計相關引數
vacuum_cost_limit 設定清理程序休眠的開銷限制
gs_guc set -I all -N all -c "vacuum_cost_limit=1000"
autovacuum_max_workers 能同時執行的自動清理執行緒的最大數量
gs_guc set -I all -N all -c "autovacuum_max_workers=10"
autovacuum_naptime 兩次自動清理操作的時間間隔
gs_guc set -I all -N all -c "autovacuum_naptime=20s"
autovacuum_vacuum_cost_delay 自動VACUUM操作裡使用的開銷延遲數值
gs_guc set -I all -N all -c "autovacuum_vacuum_cost_delay=10"
autovacuum_vacuum_scale_factor 觸發一個VACUUM時增加到autovacuum_vacuum_threshold的表大小的縮放係數
gs_guc set -I all -N all -c "autovacuum_vacuum_scale_factor=0.05"
autovacuum_analyze_scale_factor 觸發一個ANALYZE時增加到autovacuum_analyze_threshold的表大小的縮放係數
gs_guc set -I all -N all -c "autovacuum_analyze_scale_factor=0.02"
autovacuum_vacuum_threshold 觸發VACUUM的閾值
gs_guc set -I all -N all -c "autovacuum_vacuum_threshold=200"
autovacuum_analyze_threshold 觸發ANALYZE操作的閾值
gs_guc set -I all -N all -c "autovacuum_analyze_threshold=200"
autovacuum_io_limits 控制autovacuum程序每秒觸發IO的上限
gs_guc set -I all -N all -c "autovacuum_io_limits=104857600"
instr_unique_sql_count 系統中unique sql資訊實時收集功能
gs_guc set -I all -N all -c "instr_unique_sql_count=20000"
enable_save_datachanged_timestamp 確定是否收集insert/update/delete, exchange/truncate/drop partition操作對錶資料改動的時間
gs_guc set -I all -N all -c "enable_save_datachanged_timestamp=off"
track_sql_count 控制對每個會話中當前正在執行的SELECT、INSERT、UPDATE、DELETE、MERGE INTO語句進行計數的統計資料
gs_guc set -I all -N all -c "track_sql_count=off"
enable_instr_rt_percentile 開啟計算系統中80%和95%的SQL響應時間的功能
gs_guc set -I all -N all -c "enable_instr_rt_percentile=off"
enable_instance_metric_persistent 開啟例項資源監控轉存功能
gs_guc set -I all -N all -c "enable_instance_metric_persistent=off"
enable_logical_io_statistics 開啟資源監控邏輯IO統計功能
gs_guc set -I all -N all -c "enable_logical_io_statistics=off"
enable_user_metric_persistent 開啟使用者歷史資源監控轉存功能
gs_guc set -I all -N all -c "enable_user_metric_persistent=off"
enable_mergejoin 最佳化器對融合連線規劃型別的使用
gs_guc set -I all -N all -c "enable_mergejoin=on"
enable_nestloop 最佳化器對內表全表掃描巢狀迴圈連線規劃型別的使用
gs_guc set -I all -N all -c "enable_nestloop=on"
enable_pbe_optimization 對以PBE(Parse Bind Execute)形式執行的語句進行查詢計劃的最佳化
gs_guc set -I all -N all -c "enable_pbe_optimization=off"
enable_resource_track 是否開啟資源實時監控功能,on表示開啟資源監控;off表示關閉資源監控
gs_guc set -I all -N all -c "enable_resource_track=on"
enable_wdr_snapshot 資料庫監控快照功能
gs_guc set -I all -N all -c "enable_wdr_snapshot=on"
instr_unique_sql_count 系統中unique sql資訊實時收集功能
gs_guc set -I all -N all -c "instr_unique_sql_count=5000"
客戶端白名單
gs_guc set -I all -N all -h "host all all .../0 md5"
其他引數
checkpoint_segments checkpoint_timeout週期內所保留的最少WAL日誌段檔案數量
gs_guc set -I all -N all -c "checkpoint_segments=1024"
checkpoint_completion_target 檢查點完成的目標,0.8表示每個checkpoint需要在checkpoints間隔時間的80%內完成。
gs_guc set -I all -N all -c "checkpoint_completion_target=0.8"
pagewriter_sleep 設定用於增量檢查點開啟後,pagewrite執行緒每隔pagewriter_sleep的時間刷一批髒頁下盤。
gs_guc set -I all -N all -c "pagewriter_sleep=200"
enable_alarm 告警檢測執行緒,檢測資料庫中可能的錯誤場景
gs_guc set -I all -N all -c "enable_alarm=off"
enable_codegen 標識是否允許開啟程式碼生成最佳化,目前程式碼生成使用的是LLVM最佳化
gs_guc set -I all -N all -c "enable_codegen=off"
audit_enabled 審計程序的開啟和關閉
gs_guc set -I all -N all -c "audit_enabled=off"
沒找到這個引數的說明
gs_guc set -I all -N all -c "enable_asp=off"
lc_messages 資訊顯示的語言
gs_guc set -I all -N all -c "lc_messages='en_US.UTF-8'"
lc_monetary 貨幣值的顯示格式
gs_guc set -I all -N all -c "lc_monetary='en_US.UTF-8'"
lc_numeric 數值的顯示格式
gs_guc set -I all -N all -c "lc_numeric='en_US.UTF-8'"
lc_time 時間和區域的顯示格式
gs_guc set -I all -N all -c "lc_time='en_US.UTF-8'"
update_lockwait_timeout 併發更新引數開啟情況下,該引數控制併發更新同一行時單個鎖的最長等待時間
gs_guc set -I all -N all -c "update_lockwait_timeout=1min"
lockwait_timeout 單個鎖的最長等待時間
gs_guc set -I all -N all -c "lockwait_timeout=1min"
max_files_per_process 設定每個伺服器程序允許同時開啟的最大檔案數目
gs_guc set -I all -N all -c "max_files_per_process=100000"
behavior_compat_options 資料庫相容性行為配置項,該引數的值由若干個配置項用逗號隔開構成,display_leading_zero表示浮點數顯示,不配置的話則0.25顯示為.25
gs_guc set -I all -N all -c "behavior_compat_options='display_leading_zero'"
enable_thread_pool 控制是否使用執行緒池功能
gs_guc set -I all -N all -c "enable_thread_pool=off"