MogDB 2.1.1 初始化引數概要說明

openGaussbaby發表於2024-03-30

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=$((memory
3/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"

相關文章