Apakah PostgreSQL cocok untuk satu OS? Apakah lebih baik di Linux daripada Windows?

26

Saya telah menjalankan PostgreSQL di Windows Server 2003 tanpa hambatan dan cepat, jadi untuk menjawab pertanyaan saya sendiri sepertinya baik-baik saja.

Namun saya akan meluncurkan proyek baru dan saya mempertimbangkan menggunakan kotak Linux sebagai gantinya stabilitas dan kinerja sangat penting. Karena PostgreSQL sebagian besar tampaknya dikembangkan pada distribusi Linux, mungkin lebih baik tetap menggunakan Linux?


sumber
2
memilih platform adalah fungsi sysadmin, bahkan jika itu dilakukan oleh pengembang.
araqnid
Menurut saya ekstensi pg dipaket untuk linux sebelum untuk windows.
Neil McGuigan

Jawaban:

46

PostgreSQL pasti akan berjalan lebih cepat di Linux daripada di Windows (dan saya katakan ini sebagai salah satu orang yang menulis port windows itu ..) Ini dirancang untuk arsitektur gaya Unix, dan mengimplementasikan arsitektur yang sama ini di Windows, yang berarti melakukan beberapa hal yang Windows tidak dirancang untuk melakukannya dengan baik. Ini berfungsi dengan baik, tetapi tidak berkinerja baik.

Sebagai contoh, PostgreSQL menggunakan model proses-per-koneksi, bukan threading. Windows dirancang untuk melakukan threading. Jika aplikasi Anda melakukan banyak koneksi dan terputus, itu pasti akan berjalan secara signifikan lebih lambat pada Windows, misalnya.

Ada juga beberapa asumsi di sekitar sistem file yang tidak persis mendukung NTFS.

Satu hal yang benar-benar perlu Anda pikirkan - jika Anda menggunakan Windows, sebagian besar produk antivirus akan keluar ketika digunakan dengan PostgreSQL, karena mereka tidak terbiasa dengan jenis beban kerja ini (seperti 1000 proses berbeda membaca dan menulis ke file yang sama melalui berbagai pegangan). Itu berarti bahwa rekomendasi kuat adalah untuk selalu menghapus antivirus apa pun jika mungkin (hanya menonaktifkannya atau mengecualikan proses / file PostgreSQL seringkali tidak cukup). Dan ini bukan hanya karena alasan kinerja, tetapi juga stabilitas di bawah beban.

Magnus Hagander
sumber
Terima kasih! Senang memiliki jawaban yang otoritatif, meskipun dalam kasus saya tetap menggunakan Windows terdengar bagus: Saya memiliki sedikit koneksi dan tidak ada anti virus (saya juga tidak suka). Performanya juga luar biasa: Saya pikir caching Windows dan kecepatan IO (ketika Anda memiliki driver terkini) membantu saya di sana ..
Akan menyenangkan untuk melihat beberapa tolok ukur throughput dunia nyata ...
1
BTW, penggunaan kumpulan koneksi akan sangat membantu pada Windows karena biaya proses / penghancuran proses yang lebih besar.
Craig Ringer
Saya memang melakukan perbandingan PostgreSQL berdampingan pada Windows versus Linux dalam 8,1 dan 8,2 hari. Untuk memuat kami Linux sekitar 50% lebih cepat. Tidak jelas berapa banyak dari itu hanya jaringan, karena klien berada di kotak yang terpisah dan menggunakan kode Java yang sama untuk menguji throughput jaringan mentah pada koneksi terbuka berlari 30% lebih cepat ketika kedua belah pihak adalah Linux daripada ketika kedua belah pihak adalah Windows. Menariknya, ketika satu sisi adalah Linux dan satu adalah Windows, itu 15% lebih lambat dari kedua sisi Linux.
kgrittn
2

Ini sulit untuk dijawab: Seperti yang dicatat Ken, Postgres tidak membuat perbedaan antara OS dan itu stabil / tidak stabil di Windows seperti di Linux.

Satu-satunya jawaban nyata untuk pertanyaan ini adalah: coba saja.

Siapkan server Linux dan server Windows dengan spesifikasi yang sama, gunakan jumlah data yang sama di kedua mesin dan jalankan pengujian Anda.

PS: Ini memiliki suara yang dekat karena mungkin lebih baik ditanyakan di serverfault

DrColossos
sumber
Apakah lebih baik di ServerFault? Saya akan mengategorikannya sebagai masalah perangkat lunak untuk pengembang daripada masalah untuk admin sistem.
1
Ini bukan masalah perangkat lunak, tidak ada pengembang yang perlu khawatir tentang SQL-nya: PostgreSQL menggunakan samen SQL di Linux seperti halnya pada Windows.
Frank Heikens
2

Ini adalah pemahaman saya bahwa, untuk perangkat keras yang sama, Anda akan mendapatkan kinerja yang lebih baik di Linux dibandingkan dengan Windows. Juga, sementara Postgres berjalan di windows, Postgres sudah berjalan di * nix lebih lama, lebih lama. YMMV tentu saja tergantung situasi Anda.

Referensi yang benar-benar bagus tentang kinerja Postgres adalah "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Judulnya sedikit keliru karena mencakup lebih dari sekedar versi 9.0.

gsiems
sumber
-1

AFAIK Postgres tidak membeda-bedakan, mereka tidak melumpuhkan fitur pada Windows, atau semacamnya. Jadi tidak ada tentang Postgres yang membutuhkan Linux.

Anda mungkin lebih baik bertanya secara umum tentang Linux. vs. Windows sebagai platform server umum.

PENDAPAT: Tapi demi uang saya, server selalu menjalankan Linux. Tidak akan pernah bermimpi menempatkan perangkat lunak server mission-critical pada Windows. Hanya 2 sen saya. Opini Akhir.


sumber
stability and **performance** are crucial
Vladislav Rastrusny
Baca jawaban lain untuk mengetahui mengapa tebakan pada jawaban ini salah. Silakan pertimbangkan untuk menghapus jawabannya.
Sam