26

現在、構築中の製品に MySQL を使用しており、主にライセンス上の理由から、できるだけ早く PostgreSQL に移行したいと考えています。

他の誰かがそのような動きをしましたか? 私たちのデータベースはアプリケーションの生命線であり、最終的には数 TB のデータを格納することになるため、パフォーマンスの改善/損失、SQL やストアド プロシージャの変換における大きな障害などの経験について聞きたいと思っています.

編集: MySQL のライセンスが気に入らない理由を尋ねてきた人に明確にするためです。データベースのバックエンドとして (現在) MySQL に依存する商用製品を開発しています。彼らのライセンスには、定額料金ではなく、インストールごとに定価のパーセンテージを支払う必要があると記載されています。スタートアップとして、これはあまり魅力的ではありません。

4

3 に答える 3

27

Steve さん、古いアプリケーションを PgSQL から MySQL に移行する必要がありました。私は言わなければなりません、あなたは自分自身を幸運だと考えるべきです ;-) 一般的な落とし穴は次のとおりです。

  • SQL は実際には言語標準にかなり近いため、すでに知っている MySQL の方言に悩まされる可能性があります。
  • MySQL は最大長を超える varchar を静かに切り捨てますが、Pg は文句を言います - 簡単な回避策は、これらの列を 'varchar' ではなく 'text' として持ち、トリガーを使用して長い行を切り捨てることです
  • 逆アポストロフィの代わりに二重引用符が使用されます
  • ブール型フィールドは IS および IS NOT 演算子を使用して比較されますが、MySQL 互換の INT(1) で = および <> を使用することも可能です
  • REPLACE はありません。DELETE/INSERT コンボを使用してください
  • Pg は外部キーの整合性を強制することに関して非常に厳格であるため、参照で ON DELETE CASCADE を使用することを忘れないでください
  • PDO で PHP を使用する場合は、パラメーターを lastInsertId() メソッドに渡すことを忘れないでください。これは通常、次の方法で作成されるシーケンス名である必要があります。 [テーブル名]_[プライマリキー名]_seq

それが少なくとも少し役立つことを願っています。Postgres で楽しく遊んでください。

于 2008-08-21T15:14:27.840 に答える
13

同様の変換を行いましたが、理由は異なります。これは、より優れた ACID サポートと、Web ユーザーが他の DB ツールを介して同じデータを参照できるようにする機能 (両方に対して 1 つの ID) が必要だったためです。

ここに私たちを悩ませたものがあります:

  1. MySQL は、PostgreSQL ほど厳密に制約を適用しません。
  2. さまざまな日付処理ルーチンがあります。これらは手動で変換する必要があります。
  3. ACID 準拠を想定していないコードは、問題になる可能性があります。

とはいえ、いったん設置してテストすると、はるかに優れたものになりました. 安全上の理由による正しいロックと大量の同時使用により、PostgreSQL は MySQL よりも優れたパフォーマンスを発揮しました。ロックが不要 (読み取り専用) の場合、パフォーマンスはそれほど良くありませんでしたが、それでもネットワーク カードよりは高速であったため、問題にはなりませんでした。

チップ:

  • contrib ディレクトリにある自動化されたスクリプトは、変換の出発点として適していますが、通常は少し変更する必要があります。
  • シリアライズ可能な分離レベルをデフォルトとして使用することを強くお勧めします。
  • pg_autodoc ツールは、データ構造を実際に確認し、定義および適用するのを忘れていた関係を見つけるのに役立ちます。
于 2008-09-16T17:40:37.850 に答える
3

MySQL3 から PostgreSQL 8.2、そして 8.3 に移行しました。PostgreSQL には SQL の基本とそれ以上の機能が備わっているため、MYSQL で派手な MySQL を使用しなくても問題ありません。

私の経験から、私たちの MySQL データベース (バージョン 3) には外部キーがありません... PostgreSQL では外部キーを使用できるため、それを変更する必要がありました... これは良いことでしたが、いくつかの間違いが見つかりました。

もう 1 つ変更しなければならなかったのは、MySQL とは異なるコーディング (C#) コネクタです。MySQL は PostgreSQL よりも安定していました。PostgreSQL の問題はまだほとんどありません。

于 2008-09-17T17:49:32.377 に答える