ホームページ >データベース >mysql チュートリアル >postgresqlとmysqlの違いは何ですか
違い: 1. MySQL はコマンドの実行によってインスタンスを開始しますが、PG はプロセスの実行によって開始します; 2. PG はマテリアライズド ビューをサポートしますが、MySQL はマテリアライズド ビューをサポートしません; 3. MySQL はスケーラビリティをサポートしません。一方、PG はスケーラビリティが高く、4. PG ストアド プロシージャの機能サポートは MySQL よりも優れており、実行プランをローカルにキャッシュする機能があります。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
MySQL
MySQL は比較的新しく、1994 年に初めて登場しました。これは、最も人気のあるオープンソース データベースであると主張しています。 MySQL は、LAMP (Linux、Apache、Perl/PHP/Python を含む Web 開発用のソフトウェア パッケージ) の M です。 LAMP スタック上に構築されたほとんどのアプリケーションは、WordPress、Drupal、Zend、phpBB などのよく知られたアプリケーションを含め、MySQL を使用します。
MySQL は当初から、高速な Index Sequential Access Method (ISAM) を使用し、ACID をサポートせず、高速な Web サーバー バックエンドとして設計されました。急速な初期開発の後、MySQL はより多くのストレージ エンジンをサポートし始め、InnoDB エンジンを通じて ACID を実装しました。 MySQL は他のストレージ エンジンもサポートしており、一時テーブル関数 (MEMORY ストレージ エンジンを使用) を提供し、MyISAM エンジンを介して高速読み取りデータベースを実装しています。さらに、他のコア ストレージ エンジンやサードパーティ エンジンもあります。
MySQL には、多くの高品質な無料リファレンス マニュアル、書籍、オンライン ドキュメント、Oracle やサードパーティ ベンダーからのトレーニングやサポートなど、非常に豊富なドキュメントが用意されています。
MySQL では、近年、所有権の変更やいくつかの劇的な出来事が発生しました。元々は MySQL AB によって開発され、2008 年に 10 億ドルで Sun に売却されました。Sun は 2010 年に Oracle に買収されました。 Oracle は、MySQL の複数のバージョン (Standard、Enterprise、Classic、Cluster、Embedded、Community) をサポートしています。無料でダウンロードできるものもあれば、有料のものもあります。そのコア コードは GPL ライセンスに基づいており、GPL ライセンスを使用したくない開発者や製造業者は商用ライセンスを利用できます。
コア MySQL 開発者数名が MySQL フォークをリリースしたため、元の MySQL コードに基づいて選択できるデータベースがさらに多くなりました。オリジナルの MySQL 作成者の 1 人である Michael "Monty" Widenius は、MySQL を Sun に売却したことを後悔しているようで、GPL に基づいてライセンス供与された無料の独自の MySQL フォーク、MariaDB を開発しました。 Drizzle は、有名な MySQL 開発者である Brian Aker によって作成されたブランチであり、特にマルチ CPU、クラウド、ネットワーク アプリケーション、および高い同時実行性向けに最適化されて大幅に書き直されました。
PostgreSQL
PostgreSQL (略して PG) は、世界で最も先進的なオープンソース データベースであると主張しています。 PostgreSQL のファンの中には、PostgreSQL は Oracle に匹敵するものの、高額な価格や横柄な顧客サービスがないと言っている人もいます。歴史は古く、元々は 1985 年にカリフォルニア大学バークレー校で Ingres データベースの後継として開発されました。
PostgreSQL は、完全にコミュニティ主導のオープン ソース プロジェクトで、世界中の 1,000 人以上の貢献者によって維持されています。複数の異なるコミュニティ エディション、商用エディション、エンタープライズ エディションを提供する MySQL とは異なり、完全に機能する単一のバージョンを提供します。 PostgreSQL は自由な BSD/MIT ライセンスに基づいてライセンスされており、著作権表示を提供する限り、組織はコードを使用、コピー、変更、再配布できます。
信頼性は PostgreSQL の最優先事項です。堅固な品質と、高トランザクションのミッションクリティカルなアプリケーションに対する綿密に設計されたサポートで知られています。 PostgreSQL のドキュメントは非常に充実しており、無料のオンライン マニュアルや古いバージョンのアーカイブされたリファレンス マニュアルが多数あります。 PostgreSQL のコミュニティ サポートは、独立ベンダーからの商用サポートと同様に優れています。
データの一貫性と整合性も、PostgreSQL の優先度の高い機能です。 PostgreSQL は ACID 機能を完全にサポートし、データベース アクセスに対する強力なセキュリティ保証を提供し、Kerberos や OpenSSL などのエンタープライズ セキュリティ ツールを最大限に活用します。独自のチェックを定義して、独自のビジネス ルールに基づいてデータ品質を確保できます。
数多くの管理機能の中でも、ポイント イン タイム リカバリ (PITR) は優れた機能であり、ホット バックアップやスナップショットの作成、失敗したリカバリのリカバリなどの機能を提供する、柔軟で高可用性の機能です。 。 能力。ただし、これが PostgreSQL のすべてではなく、このプロジェクトでは、高可用性、負荷分散、レプリケーションなどを実現するために PostgreSQL を管理するためのいくつかの方法も提供されており、特定のニーズに合った機能を使用できます。
postgresql と mysql の違い
#機能 | MySQL | PostgreSQL | ||||||||||||||||||||||||||||||||||||||||||
インスタンス | MySQL コマンド (mysqld) を実行してインスタンスを起動します。インスタンスは 1 つ以上のデータベースを管理できます。サーバーは複数の mysqld インスタンスを実行できます。インスタンス マネージャーは、mysqld の個々のインスタンスを監視できます。 | ポストマスタープロセス(pg_ctl)を実行してインスタンスを起動します。インスタンスは、クラスターを形成する 1 つ以上のデータベースを管理できます。クラスターは、インストール中に初期化されるディスク上の領域であり、すべてのデータが保存されるディレクトリで構成されます。 initdb を使用して最初のデータベースを作成します。 1 台のマシン上で複数のインスタンスを起動できます。 | ||||||||||||||||||||||||||||||||||||||||||
#データベース | データベースは、インスタンス内の他のデータベースとは別のエンティティであるオブジェクトの名前付きコレクションです。 。 MySQL インスタンス内のすべてのデータベースは、同じシステム カタログを共有します。 | #データベースはオブジェクトの名前付きコレクションであり、各データベースは他のデータベースとは別個のエンティティです。各データベースには独自のシステム カタログがありますが、すべてのデータベースは pg_database を共有します。|||||||||||||||||||||||||||||||||||||||||||
innodb_buffer_pool_size 構成パラメーターを使用してデータ バッファーを設定します。このパラメータは、InnoDB がテーブル データとインデックスをキャッシュするために使用するメモリ バッファ内のバイト数です。専用データベース サーバーでは、このパラメータはマシンの物理メモリの最大 80% に設定できます。 | Shared_buffers キャッシュ。デフォルトでは 64 個のバッファが割り当てられます。デフォルトのブロック サイズは 8K です。バッファ キャッシュは、postgresql.conf ファイルのshared_buffers パラメータを設定することで更新できます。 | |||||||||||||||||||||||||||||||||||||||||||
クライアントは、CONNECT または USE ステートメントを使用してデータベースに接続します。データベース名を指定する必要があり、ユーザー ID とパスワードを指定できます。ロールを使用して、データベース内のユーザーとユーザー グループを管理します。 | クライアントは connect ステートメントを使用してデータベースに接続しますが、このときデータベース名を指定する必要があり、ユーザー ID とパスワードも指定できます。ロールを使用して、データベース内のユーザーとユーザー グループを管理します。 | #認証 | ||||||||||||||||||||||||||||||||||||||||||
MySQL はデータベース レベルで認証を管理します。基本的にはパスワード認証のみ対応しております。 | #PostgreSQL は、信頼認証、パスワード認証、Kerberos 認証、ID ベースの認証、LDAP 認証、PAM 認証など、さまざまな認証方法をサポートしています | #暗号化 | ||||||||||||||||||||||||||||||||||||||||||
#テーブル レベルでパスワードを指定してデータを暗号化できます。 AES_ENCRYPT 関数と AES_DECRYPT 関数を使用して、列データを暗号化および復号化することもできます。ネットワーク暗号化は SSL 接続経由で実現できます。 | 列は、pgcrypto ライブラリの関数を使用して暗号化/復号化できます。ネットワーク暗号化は SSL 接続経由で実現できます。 | Audit | ||||||||||||||||||||||||||||||||||||||||||
クエリログを grep できます。 | 監査用のテーブルで PL/pgSQL トリガーを使用できます。 | #バックアップ、リカバリ、ログ記録 | ||||||||||||||||||||||||||||||||||||||||||
データ ディレクトリのサブディレクトリに先行書き込みログを維持します。オンラインおよびオフラインの完全バックアップに加え、クラッシュ、ポイントインタイム、トランザクションのリカバリもサポートします。ホットバックアップをサポートできます。 | 制約 | |||||||||||||||||||||||||||||||||||||||||||
主キー、外部キー、一意、非 null、およびチェック制約をサポートします。 | ストアド プロシージャとユーザー定義関数 | |||||||||||||||||||||||||||||||||||||||||||
個別のストアド プロシージャはなく、すべて関数を通じて実装されます。ユーザー定義関数は、PL/pgSQL (特殊な手続き型言語)、PL/Tcl、PL/Perl、PL/Python、SQL、および C で作成できます。 | ||||||||||||||||||||||||||||||||||||||||||||
トリガー | 行前トリガー、行後トリガー、ステートメント トリガー、トリガー ステートメントをサポート手続き型で記述言語の複合文。 | 行前トリガー、行後トリガー、ステートメント トリガーをサポートしており、トリガー プロセスは C で記述されています。 | ||||||||||||||||||||||||||||||||||||||||||
#システム構成ファイル | my.conf | Postgresql。 conf | ||||||||||||||||||||||||||||||||||||||||||
データベース構成 | my.conf | Postgresql。 conf | ||||||||||||||||||||||||||||||||||||||||||
クライアント接続ファイル | my.conf | ## pg_hba。 conf|||||||||||||||||||||||||||||||||||||||||||
限定された XML サポート。 | #限定された XML サポート。 | #データ アクセスおよび管理サーバー | ||||||||||||||||||||||||||||||||||||||||||
##テーブルの最適化 —— 未使用の領域を再利用し、断片化を排除しますデータ ファイルの数 | #myisamchk -analyze —— クエリ オプティマイザー (MyISAM ストレージ エンジン) によって使用される統計を更新します #mysql —— コマンド ライン ツール MySQL Administrator —— クライアント GUI ツール Vacuum ——未使用のスペースを再利用 | Analyze ——使用される統計を更新しますクエリ オプティマイザーpsql ——コマンド ライン ツール pgAdmin ——クライアント GUI ツール 同時実行制御 |
||||||||||||||||||||||||||||||||||||||||||
テーブルレベルと行レベルのロックをサポートします。サポートされている ANSI 分離レベルは、Read Committed (デフォルト - クエリの開始時にデータベースのスナップショットを表示できます) とシリアル化 (Repeatable Read と同様 - トランザクションの開始前にコミットされた結果のみ表示できます) です。 SET TRANSACTION ステートメントを使用して、トランザクション レベルで分離レベルを設定します。 SET SESSION を使用してセッション レベルで設定します。 |
|
以上がpostgresqlとmysqlの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。