log_min_duration_statement การตั้งค่าจะถูกละเว้น


15

ฉันกำลังทำงานPostgresql 9.1บน Ubuntu รุ่น Postgresql ที่แน่นอน9.1+129ubuntu1เป็นตัวจัดการแพคเกจของฉันแสดง

ฉันมี 2 ฐานข้อมูลที่ใช้งานอยู่และถูกใช้จากเซิร์ฟเวอร์ระยะไกล

ฉันต้องการบันทึกการสืบค้นที่มีเวลาดำเนินการนาน ดังนั้นฉันจึงตั้งค่าพารามิเตอร์ต่อไปนี้ใน/etc/postgresql/9.1/main/postgresql.confไฟล์

log_min_duration_statement = 10000
log_statement = 'mod'

ดังนั้น Postgresql จะบันทึกการสืบค้นที่ใช้เวลานานกว่า 10 วินาที

แต่เมื่อฉันreloadกำหนดค่า postgres, Postgresql เริ่มบันทึกทุกแบบสอบถามที่เหมาะกับlog_statementค่า ที่ฉันตั้งค่าระยะเวลาเป็น 100 วินาทีเพื่อให้แน่ใจ

log_min_duration_statement = 100000

แต่ Postgresql จะทำการบันทึกทุกข้อความค้นหาที่ตรงกับlog_statementค่าโดยไม่คำนึงถึงlog_min_duration_statementคุณค่า

การตั้งค่าlog_statementที่จะnoneลำบากในการเข้าสู่ระบบหยุด

มีบางอย่างที่ฉันพลาดเกี่ยวกับการกำหนดค่าหรือไม่


สิ่งนี้คือคุณล็อกยูเนี่ยนของทั้งสองเซตไม่ใช่การตัดกัน ฉันไม่ทราบว่าสามารถทำได้ตามที่คุณต้องการ
dezso

ดังนั้นฉันควรปิดการใช้งาน (แสดงความคิดเห็น) log_statementดังนั้นlog_min_duration_statementควรทำงานอย่างไร
FallenAngel

หากคุณเพียงต้องการที่จะเข้าสู่ระบบงบยาวทำงานทั้งหมด (ไม่ว่าจะเป็นSELECT, UPDATEหรือ DDL บางคน) แล้วใช่
dezso

คำตอบ:


21

คุณสนิท ความคิดสุดท้ายของคุณคือวิธีไป:

log_statement = none
log_min_duration_statement = 10000

จากนั้นจะไม่มีการบันทึกคำสั่งยกเว้นข้อความที่รันนานกว่า 10 วินาทีรวมถึงสตริงข้อความค้นหา การบันทึกอาจดูเหมือนจะหยุดเพราะ 10 วินาทีนั้นมีค่าสูงมาก ฉันใช้งานปกติ 2 วินาที แต่ YMMV

คำตอบที่เกี่ยวข้องกับ SO มีมากกว่านี้:
ไม่สามารถรับ log_min_duration_statement ให้ทำงานได้


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