MySQLはPostgreSQLよりも優れていますか?


8

質問は挑発的に聞こえますが、実際はそうではありません。最近、多くの分野でMySQLの制限が見つかり、PostgreSQLがますます好きになっています。これは、MySQLよりもはるかに優れたスケーリングとSQL標準への準拠を実現しています。

私はまだPostgreSQLの世界に不慣れですが、将来のすべてのプロジェクトでMySQLから離れることをいとわないので、知りたいことは、MySQLの特定の機能が優れていることですPostgreSQLよりも高性能またはよりユーザーフレンドリーなど)?

私はMySQLから何を逃してしまうのだろうと思っています。MySQLのAUTO_INCREMENTフィールドはPostgreSQLのSEQUENCESよりも便利であり、Windowsでの展開は以前から問題がありました(問題ではなくなりました。私にとっては問題ではありません)。

ほかに何か?


ここではある種の好奇心だ:stackoverflow.com/questions/2221787/...
ポール


私はmysqlが嫌いですが、PGよりも簡単にMERGE / UPSERTを実行します。大文字と小文字を区別するフィールドは煩わしい
Neil McGuigan

回答:


3

あなたは明らかに開発者の観点からこれにアプローチしているので、SOでもっと役立つ答えを見つけるかもしれません。

管理の観点から:
-レプリケーション(HA)
-レプリケーション(スケーリング*)
-レプリケーション(バックアップ)
-アプリケーションのサポート
-コミュニティのサイズと深さ(ドキュメント、サポート)
-既存のインストールベース/利用可能なジョブ

* postgresスケーリングの改善について言及したことに注意してください。スケーリングは誰にとっても異なることを意味しますが、原則として、複数のサーバーに負荷を分散するパスを持つものは、そうでないものよりも優れています。


行政面にも興味があります。これをどこに投稿すればよいかわかりませんでした。ところであなたはスケーリングについて正しいです。スケールを向上させるということは、クラスターではなく単一のマシン上で実際に意味しました。MySQLのマルチコアシステムでのパフォーマンスの向上はほとんどなく、今日ではマルチコアが標準です。また、ワークロードが増加すると、MySQLが良好なパフォーマンスからほとんど役に立たなくなるのを見てきました。また、postgresqlが負荷をより適切に処理するだろうという印象でしたが、これは議論の余地があることを理解しており、よりよく問い合わせる必要があります。ところで、レプリケーションの引数は検討する価値があります。
Massimiliano Torromeo 2010

1
MySQLのマルチコアでのパフォーマンス向上はほとんどありませんでしたが、適切にパッチを適用した5.0ビルド、ほぼすべての5.1ビルド、innodb-plugin(/ xtradb)ビルド、または5.4ビルドを実行している場合は、もう当てはまりません。対決しようとはしていませんが、逸話的なmysqlのスローダウンはほぼ確実に対処されている可能性があり、「印象」postgresはそれをより適切に処理したはずであり、裸の仮定です。ここで重要な点は、postgresとmysqlは、開発理論の観点からは多くのことを理解できるものですが、運用/ビジネスの観点からは、この訴訟は数年前に解決されたということです。
ケージナット

もちろん、私が実際に同じ負荷で同じデータを提供しようとしないと確信が持てず、実際には何も証明していないことがわかっているので、それは単なる印象であると明記しました。MySQLの最新のパフォーマンス向上を明確にしていただきありがとうございます。
Massimiliano Torromeo、2010

私は常にpostgresで「シリアル」タイプを使用していますが、「整数auto_increment」よりも便利です。それとも何か別の意味ですか?
ptman

3

COUNT(*)もPSQLの方がはるかに低速です。この種の機能のトリガーを作成することになっています。


1
興味深いですが、私が理解している限り、これはMyISAMエンジンのwhere句なしのCOUNT(*)クエリにのみ適用されます。それ以外は同様に動作します。または、where句を使用したInnoDBやMyISAMと比較しても、postgresqlはまだ遅いですか?
Massimiliano Torromeo、2010

それはどういう意味ですか?fooから count()を選択しますpgsqlでは動作しませんか?count()がmysqlと比較してpostgresで遅いのは事実ですが、その理由と回避策があります。良い概要はwikivs.com/wiki/MySQL_vs_PostgreSQL
Sibsterに

1
MySQLのInnoDBと同じ理由で速度が遅くなります。詳しくはこちらをご覧ください:wikivs.com/wiki/MySQL_vs_PostgreSQL#COUNT.28.2A.29
EarthMind

3
MVCCの実装により、COUNT(*)は遅くなります。読み取り/書き込みのパフォーマンスは向上しますが、トランザクションはさまざまな状態になる可能性があるため、「真の」数を判断することが難しくなります。
Avery Payne、

2

Postgresは更新ごとにコピーオンライトを効果的に実行するため(トランザクションを処理できるようにするため)、トランザクションが不要で、読み取りに比べて大量の書き込みを行う場合、MySQLにはPostgreSのオーバーヘッドがありません。意志。(更新されたレコードごとに、書き込み、インデックスの更新などが必​​要です)


1
私はあなたが少しだけそれを修飾するべきだと思います。ええ、それは速くなりますが、データの一貫性の保証はありません。これは一部の状況(Webサイトからのユーザーのコメントの書き出し)では完全に問題ありませんが、他の状況(オンラインでの "ショッピングカート"の注文)では問題が発生する可能性があります。
Avery Payne、

1

PostgreSQLに欠けていることが1つ考えられます。

ブロッキング、挿入、更新にも何かあったと思います。しかし、それが実際に何であったか思い出せないようです。:S


1

auto_incrementフィールドが「便利」であることはあまり関係ありませんか?Oracleにはシーケンスがあり、間違いなく世界で最も広く使用されている商用データベースです。

これは、PostgreSQLがクラッシュしても安全かどうかなど、PostgreSQLに関する膨大な量の情報です。私はPostgreSQL wikiのこのページを紹介します(間違いなく色のついた意見ですが、とにかくそれがあなたが探しているものです)。

多くの人々がこのページでMySQLは初心者にとってよりフレンドリーであることを言及しています。そう?ミッションクリティカルな環境でそれがどのように重要であるかを説明してください。


最も広く使用されているアプローチであるシーケンスであっても、auto_incrementフィールドはそれほど便利ではありません。問題の2つのdbmsの違いを求めているので、これは私にとって重要です。しかし、これはpgsqlへの切り替えを妨げるものではないので、それが本当の問題ではないことに同意します。
Massimiliano Torromeo、2010

1

MySQLはしばしばSQL化されたgrepと呼ばれます。私(現在の執筆時点)については、PHPのように見えます—かなり扱いにくいですが、人気があります。

私はMySQLから何を逃してしまうのだろうと思っています。

最初からデータベースの名前を変更してみてください。;)次に、(欠落している)条件付きインデックスを追加します。

PS私は、MySQLの議論の余地のない優れた機能を少なくとも1つ指摘できます。これは、たとえば(符号なし)バイトのように小さい、スペースを節約するデータ型をサポートします。これにより、RAMとディスク容量を大幅に節約できます。しかし、悲しいかな、それに加えて良い点はほとんどありません。そして、あなたが与えられたリンクの比較は本当に気の利いたものです。


0

auto_incrementは、挿入の同時実行性が非常に高いテーブルを吸い込んでボトルネックになり、MyISAMテーブルを使用してシーケンスを実装せざるを得なくなるまで便利です。

とにかく、あなたの質問に答えるために、MySQLがこれまでに行ってきた最大のことは、レプリケーションのチェーンと読み取りスレーブを可能にするレプリケーションのセットアップが簡単だったことです。しかし、Postgresは次のリリース9.0(すでにアルファ版の状態です)でそれを持っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.