Saya menyadari disk lebih cepat daripada apa yang saya gunakan akan membantu tetapi ini akan membutuhkan waktu lebih lama untuk dimasukkan dan saya mencoba menggunakan beberapa langkah darurat untuk mengurangi disk IO. di atas melaporkan penggunaan DSK pada merah hampir terus-menerus. Ini untuk postgres 8.3.
Pengaturan shared_buffers saya adalah 24MB meskipun server memiliki 16GB ram yang tidak sepenuhnya digunakan. Pikiran pertama saya adalah untuk memberikan ram sebanyak mungkin, tetapi saya tidak yakin bagaimana melakukannya (ini adalah server database khusus).
Solusi apa pun yang tidak memerlukan restart lebih disukai tetapi saya akan mengambil apa yang bisa saya dapatkan pada saat ini.
Terima kasih!
linux
postgresql
hard-drive
Harel
sumber
sumber
shared_buffers
file konfigurasi postgresql.conf. Perubahan ini membutuhkan restart. Juga, Anda mungkin perlu meningkatkan nilai/proc/sys/kernel/shmmax
sebelum itu.Jawaban:
Pengaturan shared_buffers 24MB adalah default konservatif, menurut saya perlu jauh lebih tinggi untuk database khusus dengan 16GB RAM tersedia. Tapi ya, Anda harus me-restart server untuk mengubah ukurannya. http://wiki.postgresql.org/wiki/Performance_Optimization adalah tempat yang baik untuk memulai panduan konfigurasi kinerja. Mengatur shared_buffers ke 4GB atau 6GB akan tampak lebih masuk akal.
Perhatikan bahwa di linux Anda perlu menyesuaikan pengaturan sysctl kernel.shmmax (di /etc/sysctl.conf atau hanya dengan menulis / proc / sys / kernel / shmmax) untuk mengalokasikan blok memori yang banyak dibagikan ini. Jika tidak, Anda akan mendapatkan kesalahan dengan menentukan berapa yang diminta, Anda harus mengatur kernel.shmmax lebih tinggi dari itu.
Karena Anda memiliki banyak memori, Anda mungkin juga mempertimbangkan untuk menetapkan work_mem default yang lebih tinggi, yang akan membuat hal-hal seperti pengurutan dan hash (grup / urutan / berbeda dll) cenderung bekerja di memori daripada menggunakan file temp. Anda tidak perlu me-restart server untuk melakukan ini, cukup perbarui file konfigurasi, muat ulang layanan dan sesi baru akan mendapatkan pengaturan baru. Memori kerja default untuk sebuah sesi adalah 1MB, Anda dapat menghitung maksimum yang dapat digunakan pada satu waktu
work_mem * max_client_connections
dan memperkirakan dampak yang akan terjadi.Anda juga harus meningkatkan efektif_cache_size untuk menunjukkan kepada perencana bahwa lapisan FS kernel kemungkinan akan menyimpan banyak halaman dalam memori di luar buffer bersama postgresql.
dll. harap ini membuat Anda memulai dengan baik.
sumber
Remount disk dengan noatime
sumber
Selain dari saran yang diberikan di sini, Anda mungkin juga ingin melihat pengaturan auto vaccum Anda. Secara default akan memicu setelah sekitar 50 pembaruan dan jika database Anda melakukan banyak pembaruan / sisipan ini dapat memicu jumlah pernyataan vakum yang tidak perlu yang akan menghasilkan banyak IO.
sumber
Lihat lebih lanjut di sini .
sumber
Jika diskio postgresql sangat tinggi, Anda harus memeriksa pernyataan yang berjalan, terutama untuk pernyataan, melakukan "sortir pada disk", dan mengatur indeks yang tepat.
Hanya google untuk "Penyesuaian Kinerja Postgresql", Anda akan menemukan cukup banyak hal untuk memulai.
sumber