pgtune เป็น python script ใช้ tune ค่า PostgreSQL Configuration เดิม ให้เหมาะสมตาม hardware machine ที่ติดตั้งอยู่ (หลัก ๆ ก็ปรับ parameters ตาม RAM ที่อยู่บนเครื่องนั้น) โดย script pgtune นี้ สามารถได้รันบน OS Windows, OS X , Unix และ Linux ต่าง ๆ ทางผมได้ทดลองนำมาปรับค่า postgresql.conf บนเครื่อง Windows, Debian และ CentOS เท่านั้น
pgtune download ได้ที่นี้ http://pgfoundry.org/projects/pgtune
คำสั่งการใช้งาน pgtune
1 2 3 |
pgtune -i $PGDATA/postgresql.conf -o $PGDATA/postgresql.conf.pgtune |
ซึ่งหากเป็นเครื่อง Windows หรือบน Unix / Linux ที่ไม่มีการ set ค่า $PGDATA ไว้ก็ให้อ้าง Full PATH ไปเลย
ดูคำสั่งเพิ่มเติม
1 2 3 |
pgtune --help |
คำสั่งการใช้งาน pgtune บน Windows
pgtune เป็น python script ดังนั้นต้องมีการติดตั้ง python สำหรับแปลภาษาก่อนจึงสามารถใช้งานได้
โดยอาจสร้าง bat file ขึ้นมาเพื่อทำงานง่าย ๆ ขึ้นตาม code ด้านล่าง
1 2 3 |
C:\Python27\python.exe pgtune -P Windows -i D:\pgsql\data\postgresql.conf -o D:\pgsql\data\postgresql.conf.pgtune |
หลังจากรันแล้ว พบว่ามี configurations ที่เพิ่มเติมมาดังนี้
ปรับค่า Kernel Parameters
กรณีเป็นพวก Unix / Linux
จำเป็นต้องเพิ่มค่า shmmax , shmall ให้มากกว่า shared_buffers ในไฟล์ postgresql.conf
แต่ต้องไม่เกิน Maximum Memory ที่เรามีจริง ๆ ปรับให้พอดี
ใน Linux ไปแก้ค่าในไฟล์/etc/sysctl.conf ตามตัวอย่างด้านล่างนี้ (ก่อน restart service)
1 2 3 4 5 6 7 8 9 |
kernel.shmmax = 68719476736 kernel.shmall = 4294967296 And PGTune recommended; kernel.shmmax = 137438953472 kernel.shmall = 33554432 |
จากนั้นก็ให้ทำการ copy postgresql.conf เก็บไว้ก่อน กันเหนียว / แล้วดำเนินการ copy postgresql.conf.pgtune เป็น postgresql.conf / แล้ว restart service PostgreSQL เพื่อ take effect คร่าว ๆ ก็ประมาณนี้ครับ
ที่กล่าวมาข้างบนนั้น เป็นการ tune เบื้องต้นสำหรับการปรับค่า Parameters ของ PostgreSQL ส่วนหากต้องการให้ได้ performance ดีกว่านี้คงเป็นเรื่องของการ design hardware ทั้ง CPU/RAM/RAID/Disk รวมถึงการคำนึงถึง workload การกระจายโหลด เป็นต้น (PostgreSQL Tuner Script)
สำหรับ web admin นั้นทาง PostgreSQL ก็มี phpPgAdmin ซึ่งสามารถ download ได้ที่นี้ http://phppgadmin.sourceforge.net/