Tune Up Performa Postgresql - ( Copas )

postgreSQL Icon logo wallpaper


Pada umumnya konfigurasi default Postgresql memiliki performa yang rendah, hal ini dikarenakan penggunaan resource, terutama RAM  ( Random Access Memory atau Memori) masih rendah. Apalagi untuk komputer server zaman sekarang yang mampu menampung RAM hingga lebih dari 10 GB. Bagi yang membutuhkan performa lebih dari Postgresql, mungkin beberapa hal di bawah ini bisa bermanfaat untuk melakukan Tune Up Performa Postgresql.


 Semua hal dibawah ini dilakukan pada file postgresql.conf

max_connections = <num>




 Parameter ini menentukan jumlah koneksi maksimum yang bisa ditampung oleh Postgresql. Jumlah koneksi yang diberikan sebaiknya disesuaikan dengan kondisi yang ada. Jumlah koneksi yang terlalu besar, padahal tidak terpakai akan menurunkan performa Postgresql. Nilai default nya adalah 100 koneksi. Sebagai bahan pertimbangan jumlah koneksi, kita bisa melihat jumlah koneksi real yang terjadi di Postgresql, caranya dengan memberikan perintah query sebagai berikut :


  • select count (*) from pg_stat_activity;


shared_buffers = <num>

Mengubah parameter ini merupakan cara yang paling sederhana untuk meningkatkan performa Postgresql. Nilai default yang diberikan sangat kecil, yaitu hanya 32 MB. Aturan umum yang bisa digunakan, 25% dari total RAM sebaiknya dialokasikan pada parameter ini. Namun, untuk mendapat hasil yang optimal, kita perlu mencoba-coba berapa nilai yang paling tepat. Pada beberapa sistem, memberikan nilai yang terlalu besar pada parameter ini akan mengakibatkan kegagalan start

Postgresql. effective_cache_size = <num>

Parameter ini menyatakan berapa jumlah memory yang bisa digunakan untuk cache data, dan juga membantu menentukan apakah index akan dipakai atau tidak. Semakin besar nilainya, maka kemungkinan penggunaan index akan semakin besar. Nilai yang bisa digunakan pada parameter ini = nilai shared_buffers + nilai cache OS. Biasanya nilai ini lebih dari 50% dari total memory pada sistem. Sama seperti shared_buffers, memberikan nilai yang terlalu besar akan mengakibatkan kegagalan start

Postgresql. work_mem = <num>

Parameter ini menentukan jumlah memory yang digunakan pada operasi sorting dan hash table. Nilai yang diisikan disini adalah nilai yang digunakan per operasi. Jadi jika kita memberikan nilai 10 MB, dan memberikan perintah query yang kompleks yang berisi 5 tahap sorting dan hash table, maka jumlah memory yang digunakan adalah 5×10 MB. Belum lagi kalau ada 5 client yang sekaligus melakukan proses yang sama, maka jumlah memory yang digunakan adalah 5x5x10 MB. Pada Postgresql versi lama, parameter ini bernama sort_mem.


fsync =<boolean>

Parameter ini menentukan apakah database disinkronkan atau tidak. Jika iya, maka transaksi dinyatakan commit jika data WAL telah benar-benar berada di disk. Jika tidak, transaksi dinyatakan commit meskipun data WAL belum sampai ke disk. Meng-off-kan parameter ini akan meningkatkan performa write Postgresql, tapi akan ada kemungkinan data yang hilang jika terjadi crash pada server. Meng-on-kan parameter ini akan mengurangi performa write, tapi keutuhan data lebih terjamin meskipun server mengalami crash. Jadi tergantung pada aplikasi anda, jika data yang disimpan adalah data-data yang penting seperti transaksi keuangan, maka kehilangan data adalah suatu hal yang harus dihindari. 


max_fsm_pages = <num>


Jika aplikasi yang digunakan melakukan INSERT dan DELETE dalam frekuensi yang tinggi, maka sebaiknya nilai parameter ini ditingkatkan. commit_delay =
Parameter ini memungkinkan Postgresql untuk melakukan commit beberapa transaksi secara bersamaan sehingga bisa meningkatkan performa. commit_delay menentukan waktu delay dalam microsecond sebelum data WAL di tulis ke disk. Jadi jika ada transaksi yang akan di commit, tidak langsung di commit, melainkan dia akan menunggu transaksi lain yang juga akan commit selama commit_delay. Seluruh transaksi yang akan commit dalam rentang waktu commit_delay akan di commit secara bersamaan.




 random_page_cost = <num>


Parameter ini mengatur cara Postgresql memandang non-sequential disk read (pembacaaan disk yang tidak beraturan). Memberikan nilai yang semakin tinggi membuat Postgresql lebih memilih melakukan sequential scan daripada index scan, yang mengindikasikan bahwa server memiliki disk yang sangat cepat. 


Sumber : blog.sangkuriang.co.id - Wiki

Komentar