Saya memiliki dua server yang identik (dalam hal perangkat keras), keduanya adalah instalasi standar windows server 2008 r2, dengan perangkat lunak minimal yang diinstal (pada dasarnya kode saya dan hal-hal yang diperlukan seperti jvm dll).
Di satu server, saya menjalankan sql server 2005, pada server kedua postgresql 9.1. Perbedaan kinerja antara 2 server ini sangat mengejutkan, ini sangat buruk pada postgresql sehingga saya menyesali pidato awal saya "mari kita gunakan postgresql alih-alih membayar lisensi server sql" kepada bos saya. Kita berbicara perbedaan 30 detik vs 15 menit untuk perintah yang sama, dan itu bukan hanya perintah yang satu ini, itu adalah pertanyaan atau perintah yang saya berikan. Keduanya memiliki data yang hampir sama (catatan dimasukkan dalam urutan yang berbeda), dan kedua database memiliki struktur / indeks yang sama persis dll.
Tapi saya berharap ini hanya masalah penyesuaian kinerja. Masalahnya adalah, sql server cukup banyak menggunakan semua 32 pertunjukan ram di server, sedangkan postgresl tidak menggunakan apa-apa, pasti kurang dari satu pertunjukan meskipun saya belum benar-benar mengetahuinya secara detail.
Bagaimana cara mendapatkan postgresql menggunakan 20+ pertunjukan ram? Server-server ini dibangun khusus untuk hal-hal basis data ini, jadi setiap ram yang tidak digunakan oleh database dan proses pendukung terbuang sia-sia menurut saya.
SET effective_cache_size=18G;
(pengaturan default sangat rendah) BTW: dengan asumsi ini adalah mesin 64 bit (tidak ada PTE)