Apakah MySQL lebih baik daripada PostgreSQL dalam sesuatu?

8

Saya tahu pertanyaannya terdengar provokatif, tetapi sebenarnya tidak. Saya baru-baru ini menemukan keterbatasan MySQL di banyak daerah dan semakin menyukai PostgreSQL. Timbangan ini jauh lebih baik dan lebih menghormati standar SQL daripada MySQL.

Saya masih baru di dunia PostgreSQL dan karena saya bersedia untuk pindah dari MySQL untuk semua proyek masa depan saya, apa yang ingin saya ketahui adalah: apakah ada fitur tertentu dari MySQL yang dilakukan dengan lebih baik (seperti pada berkinerja tinggi atau lebih ramah pengguna, dll.) daripada di PostgreSQL?

Saya bertanya-tanya apa yang akan saya lewatkan dari MySQL. Saya sudah menemukan bahwa bidang AUTO_INCREMENT di MySQL lebih berguna daripada SEQUENCES di PostgreSQL dan penyebaran di Windows bermasalah di masa lalu (bukan masalah lagi. Tidak pernah menjadi masalah bagi saya).

Apa lagi?

Massimiliano Torromeo
sumber
Ini semacam rasa penasaran: stackoverflow.com/questions/2221787/…
Paul
Saya benci mysql, tetapi ia memang melakukan MERGE / UPSERT lebih mudah daripada PG, dan saya menemukan bidang case-sensitive mengganggu
Neil McGuigan

Jawaban:

3

Anda jelas mendekati ini dari perspektif pengembang, sehingga Anda dapat menemukan jawaban yang lebih berguna di SO.

Dari perspektif administratif:
- Replikasi (HA)
- Replikasi (Penskalaan *)
- Replikasi (Cadangan)
- Dukungan aplikasi
- Ukuran dan Kedalaman komunitas (Dokumentasi, Dukungan)
- Basis pemasangan yang ada / pekerjaan yang tersedia

* Perhatikan Anda menyebutkan postgrespenskalaan yang lebih baik. penskalaan berarti sesuatu yang berbeda untuk semua orang, tetapi sebagai aturan umum hal-hal yang memiliki jalur untuk menyebarkan beban di berbagai skala server lebih baik daripada hal-hal yang tidak.

cagenut
sumber
Saya juga tertarik dengan aspek administrasi. Saya tidak yakin ke mana harus memposting ini. BTW Anda benar tentang penskalaan. Dengan skala yang lebih baik maksud saya, pada satu mesin, bukan pada kelompok. MySQL memiliki sedikit peningkatan kinerja pada sistem multicore dan hari ini multicore adalah norma. Saya juga telah melihat MySQL berubah dari kinerja yang baik menjadi hampir tidak berguna ketika beban kerja meningkat, dan kesan bahwa postgresql akan menangani beban dengan lebih baik, tetapi saya mengerti ini masih bisa diperdebatkan dan harus ditanyakan dengan lebih baik. BTW, argumen replikasi layak dipertimbangkan.
Massimiliano Torromeo
1
Dulu MySQL hanya memiliki sedikit peningkatan perf pada multicore, tetapi jika Anda menjalankan versi 5.0 yang ditambal dengan baik, hampir semua versi 5.1, versi innodb-plugin (/ xtradb), atau versi 5.4 yang tidak lagi benar. Bukan mencoba bersikap konfrontatif, tetapi pelambatan mysql anekdotal Anda hampir pasti dapat diatasi, dan postgres "kesan" Anda akan menanganinya dengan lebih baik adalah asumsi yang telanjang. Poin kuncinya di sini adalah, postgres vs mysql adalah sesuatu yang bisa Anda tebak banyak tentang dari perspektif pengembangan-sophistry, tetapi dari perspektif operasional / bisnis, kasus ini ditutup bertahun-tahun yang lalu.
cagenut
Tentu saja, saya menetapkan itu hanya kesan karena jika saya tidak benar-benar mencoba menyajikan data yang sama di bawah beban yang sama saya tidak dapat memastikan, dan saya tahu saya tidak benar-benar membuktikan apa pun. Terima kasih telah memperjelas keuntungan kinerja terbaru dari MySQL.
Massimiliano Torromeo
Saya selalu menggunakan tipe "serial" di postgres, saya merasa lebih mudah daripada "integer auto_increment". Atau mungkin Anda bermaksud sesuatu yang lain?
ptman
3

COUNT (*) juga jauh lebih lambat dengan PSQL. Anda seharusnya membuat pemicu untuk fungsi semacam ini.

EarthMind
sumber
1
Menarik, tetapi sejauh yang saya mengerti, ini hanya berlaku untuk permintaan COUNT (*) TANPA klausa di mana pada mesin MyISAM. Selain itu, ia melakukan hal yang sama. Atau apakah postgresql masih lebih lambat bahkan dibandingkan dengan InnoDB dan MyISAM dengan klausa where?
Massimiliano Torromeo
Bagaimana apanya ? pilih count ( ) dari foo; tidak bekerja di pgsql? Memang benar bahwa count ( ) lebih lambat pada postgres dibandingkan dengan mysql, ada alasan untuk itu dan solusinya. Tinjauan umum yang baik dapat ditemukan di wikivs.com/wiki/MySQL_vs_PostgreSQL
Sibster
1
Ini lebih lambat untuk alasan yang sama dengan InnoDB MySQL, baca lebih lanjut di sini: wikivs.com/wiki/MySQL_vs_PostgreSQL#COUNT.28.2A.29
EarthMind
3
COUNT (*) lebih lambat karena penerapan MVCC. Anda memperoleh dalam hal kinerja baca / tulis tetapi karena transaksi dapat di berbagai negara, menjadi sulit untuk menentukan apa yang "benar" hitung.
Avery Payne
2

Karena Postgres secara efektif melakukan copy-on-write untuk setiap pembaruan (sehingga dapat menangani transaksi), jika Anda tidak memerlukan transaksi, dan melakukan banyak penulisan dibandingkan dengan membaca, MySQL tidak akan memiliki overhead yang melebihi PostgreS akan. (setiap catatan yang diperbarui perlu menulis lebih banyak, memperbarui indeks, dll.)

Joe H.
sumber
1
Saya pikir Anda harus memenuhi syarat itu hanya sedikit. Ya, itu akan lebih cepat, tetapi tidak akan ada jaminan konsistensi dalam data Anda. Ini sangat baik untuk beberapa situasi (penghapusan komentar pengguna dari situs web) tetapi mungkin menimbulkan masalah di situasi lain (mengambil pesanan "keranjang belanja" secara online).
Avery Payne
1

Saya dapat memikirkan satu hal yang hilang dari PostgreSQL:

Saya pikir ada sesuatu juga dengan pemblokiran, masukkan atau perbarui. Tapi sepertinya saya tidak ingat apa itu sebenarnya. : S

Egon
sumber
1

Bidang auto_increment yang 'berguna' tidak terlalu relevan bukan? Oracle memiliki urutan dan tidak diragukan lagi database komersial yang paling banyak digunakan di dunia.

Ini adalah sejumlah besar informasi yang dapat ditemukan tentang bagaimana PostgreSQL jika lebih aman dan sebagainya. Saya hanya akan mengarahkan Anda ke halaman ini di wiki PostgreSQL (tidak diragukan lagi pendapat yang berwarna, tapi tetap saja itulah yang Anda cari).

Banyak orang menyebutkan di halaman ini bahwa MySQL lebih bersahabat dengan pemula. Begitu? Jelaskan kepada saya bagaimana itu penting dalam lingkungan yang kritis misi.

wzzrd
sumber
Menjadi urutan pendekatan yang paling banyak digunakan tidak membuat bidang auto_increment kurang 'berguna', dan itu relevan bagi saya karena saya meminta perbedaan antara 2 dbms yang dimaksud. Tapi ini tidak menghentikan saya dari beralih ke pgsql jadi saya setuju bahwa itu bukan masalah nyata.
Massimiliano Torromeo
1

MySQL sering disebut sebagai SQL'ed grep . Bagi saya (sekarang pada saat penulisan) terlihat cukup banyak seperti PHP - cukup canggung, tetapi populer.

Saya bertanya-tanya apa yang akan saya lewatkan dari MySQL.

Coba ganti nama basis data untuk permulaan. ;) Kemudian tambahkan (tidak ada) indeks bersyarat.

PS Saya bisa menunjukkan setidaknya satu fitur bagus yang tidak bisa diperdebatkan yang dimiliki MySQL - mendukung agak menghemat ruang tipe data yang sekecil (tidak ditandai) byte untuk mis. Ini bisa menghemat banyak RAM dan ruang disk saat digunakan. Tapi ada beberapa barang yang perlu disebutkan selain itu, sayangnya. Dan perbandingan pada tautan yang Anda berikan benar-benar bagus.

poige
sumber
0

auto_increment berguna sampai Anda menyadari bahwa mereka menyedot tabel dengan konkurensi insert yang sangat tinggi, pada saat itu mereka menjadi leher botol dan Anda dipaksa untuk menerapkan urutan menggunakan tabel MyISAM.

Ngomong-ngomong, untuk menjawab pertanyaan Anda, hal terbesar yang dilakukan MySQL adalah mudahnya membuat replikasi yang memungkinkan replikasi rantai dan membaca budak. Namun, Postgres akan memilikinya dalam rilis berikutnya, 9.0 (yang sudah keluar dalam status alpha).

mage2k
sumber