ทำความเข้าใจกับค่าเริ่มต้นของพารามิเตอร์“ max_wal_size” และ“ min_wal_size” จากไฟล์ postgresql.conf


16

ค่าเริ่มต้นคือตามเอกสารประกอบสำหรับmin_wal_sizeและmax_wal_sizeพารามิเตอร์ :

สำหรับmax_wal_size: The default is 1 GB
สำหรับmin_wal_size:The default is 80 MB

จากนั้นฉันดูพารามิเตอร์นี้จากการกำหนดค่าฐานข้อมูลของฉัน:

select name, setting, unit 
from pg_settings 
where name in ('min_wal_size', 'max_wal_size')

ให้ผลลัพธ์:

name         |  setting | unit
----------------------------------
max_wal_size | 64       | 
min_wal_size | 5        |

ฉันมีคำถาม 2 ข้อ:

1) เหตุใดค่าเหล่านี้จึงไม่ตรงกับค่าเริ่มต้นซึ่งแสดงในเอกสาร ฉันไม่เคยเปลี่ยนการตั้งค่าคอนฟิกเลย

2) ทำไมunitคอลัมน์ว่างเปล่า / NULL สำหรับพารามิเตอร์เหล่านี้ ค่า 64 และ 5 ในกรณีนี้คืออะไร? MB? GB? หรืออะไร?

เหตุใดจึงไม่ชอบwork_memพารามิเตอร์ตัวอย่างเช่น เมื่อทุกอย่างชัดเจน:

name         | setting  | unit
----------------------------------
work_mem     | 4096     | kB

คำตอบ:


11

นี่คือเซ็กเมนต์ WAL ขนาด 16 MB โดยค่าเริ่มต้น คู่มือ:

ระบบแบ่งตามลำดับทางกายภาพนี้เป็นไฟล์เซกเมนต์ WAL ซึ่งโดยปกติแล้วจะมีขนาด 16MB ต่อชิ้น (แม้ว่าขนาดเซกเมนต์สามารถเปลี่ยนแปลงได้เมื่อสร้าง PostgreSQL)

ดังนั้นจึงเป็นเพียงค่าเริ่มต้นตามที่โฆษณาไว้:

select name, setting, setting::int * 16 || 'MB' AS setting_in_mb
from pg_settings 
where name in ('min_wal_size', 'max_wal_size');

unitในpg_settingsปัจจุบันคือเมื่อมันเป็นหน่วยฐานที่เกิดขึ้นจริงเช่นสองหรือMB ในกรณีนี้ "หน่วย" จะเป็น "กลุ่ม WAL" ซึ่งสามารถกำหนดค่าก่อนที่จะรวบรวม Postgres unitคอลัมน์เป็นเพียงโมฆะสำหรับผู้ที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.