PostgreSQL เพิ่มประสิทธิภาพ SSD


19

ฉันจะมีฐานข้อมูล PostgreSQL 9.3 ขนาดใหญ่ที่มีหลายตารางที่มีมากกว่า 100M รายการต่อตาราง ฐานข้อมูลนี้จะเป็นแบบอ่านอย่างเดียว (เมื่อฉันกรอกตารางที่จำเป็นทั้งหมดและสร้างดัชนีไม่มีการเขียนบนฐานข้อมูลอีกต่อไป) และการเข้าถึงของผู้ใช้คนเดียว เพื่อการวิจัยเท่านั้น ข้อความค้นหาจะใช้ JOIN บนฟิลด์ฐานข้อมูลจำนวนเต็มเสมอ

ฉันอาจจะซื้อ SSD (256-512GB) เพื่อวัตถุประสงค์นี้ ฉันไม่เคยใช้ SSD สำหรับฐานข้อมูลมาก่อนดังนั้นมีอะไรที่ฉันควรกลัว ฉันสามารถใส่ DB ทั้งหมดลงใน SSD หรือเพียงแค่สร้างดัชนีได้หรือไม่ จำเป็นต้องมีคำแนะนำ / การสอนพิเศษสำหรับปรับแต่ง PostgreSQL สำหรับ SSD หรือไม่? โปรดทราบว่าฉันมีเวิร์กสเตชันที่ดีที่มี i7 และ 32Gb of RAM ดังนั้นบางทีคุณสามารถให้คำแนะนำบางอย่างได้เช่นกัน

คำตอบ:


16

มีอะไรที่ฉันควรกลัว?

ไม่มีการสำรองข้อมูล เช่นเดียวกับอุปกรณ์เก็บข้อมูลใด ๆ ก็สามารถตาย เก็บสำรองข้อมูล

หากการโหลดข้อมูลใช้เวลานานฉันจะสำรองฐานข้อมูลแบบอ่านอย่างเดียวเมื่อฉันโหลดข้อมูลเสร็จแล้วโดยหยุดและคัดลอก ด้วยวิธีนี้หากมีสิ่งผิดพลาดมันจะง่ายกว่าที่จะสร้างใหม่ในภายหลัง

ฉันสามารถใส่ DB ทั้งหมดลงใน SSD หรือเพียงแค่สร้างดัชนีได้หรือไม่

หากเหมาะสมให้เก็บ DB ทั้งหมด

หากไม่มีให้ใส่พื้นที่ตารางบน SSD และใช้เพื่อจัดเก็บดัชนีและตารางที่มีการสอบถามจำนวนมากอย่างที่ควรจะเป็น

จำเป็นต้องมีคำแนะนำ / การสอนพิเศษสำหรับปรับแต่ง PostgreSQL สำหรับ SSD หรือไม่?

ประโยชน์ส่วนใหญ่ของ SSDs สำหรับการโหลดการเขียน OLTP ข้อได้เปรียบหลักสำหรับการโหลดแบบอ่านอย่างเดียวคือการค้นหาที่รวดเร็วและ slardiere ได้อธิบายไว้

คุณอาจต้องการตั้งค่าeffective_io_concurrency = 5หรือบางสิ่งบางอย่างเพื่อสะท้อนความจริงที่ว่า SSD สามารถอ่านสุ่มไปป์ไลน์อย่างรวดเร็วและหนักหน่วง ... แต่มันมีผลต่อการสแกนดัชนีบิตแมปเท่านั้นและในทางปฏิบัติrandom_page_costแล้วได้รวมเข้าด้วยกัน

สำหรับการโหลดแบบอ่านอย่างเดียวมันไม่ได้สร้างความแตกต่างมากมาย

สำหรับการโหลดข้อมูลเริ่มต้นโปรดดู:

โปรดทราบว่าฉันมีเวิร์กสเตชันที่ดีที่มี i7 และ 32Gb of RAM ดังนั้นบางทีคุณสามารถให้คำแนะนำบางอย่างได้เช่นกัน

ตั้งค่าขนาดใหญ่maintenance_work_memสำหรับการโหลดข้อมูล 8GBฉันต้องการใช้อย่างน้อย

ตั้งค่าขนาดใหญ่work_memสำหรับการสืบค้น ขนาดที่เหมาะสมขึ้นอยู่กับความซับซ้อนของแบบสอบถาม เริ่มต้นด้วย500MBและขึ้นจากที่นั่น

ชนของคุณcheckpoint_segments(หนาแน่น) สำหรับการโหลดข้อมูลเริ่มต้น

อย่าลืมปิดการใช้งาน VM overcommit! (ดูคู่มือ PostgreSQL: http://www.postgresql.org/docs/current/static/kernel-resources.html )


22

เกี่ยวกับ SSD คำแนะนำหลักคือการลด 'random_page_cost' เป็น 1 (เท่ากับ 'seq_page_cost') ใน postgresql.conf นอกเหนือจากการตั้งค่าปกติอื่น ๆ


บางทีค่าทั้งสองควรมีขนาดเล็กกว่า 1.0 ตามpostgresql.org/docs/11/ ...... : "คุณสามารถเพิ่มหรือลดค่าทั้งสองเข้าด้วยกันเพื่อเปลี่ยนความสำคัญของค่าใช้จ่ายดิสก์ I / O เทียบกับต้นทุน CPU ซึ่งอธิบายโดย พารามิเตอร์ต่อไปนี้ "
คิริลล์ Bulygin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.