データベースの比較
MySQL: データベースのデフォルト、依然として収益を上げている
MySQL は、ほとんどの Web が実行されるデータベースです。それは、それがエキサイティングだからではなく、予測可能であるためです。InnoDB の ACID コア、すべての管理者が触れたことのあるレプリケーション モデル、およびその上に構築されたパネル、プラグイン、およびアプリケーションの前提条件のエコシステムです。重要な作業は、構成のデフォルト、レプリケーション規律、およびバージョン 8 が実際に複雑になる場所を把握することです。
要点
- InnoDB は、クラスタ化された主キー、行ロック、クラッシュセーフな REDO リカバリなど、重要なストレージ エンジンです。エンジンの交換を推奨する MyISAM のレガシー記事は、通常、最新の MySQL スタックが 99% InnoDB であり、InnoDB に満足しているという現実よりも古いものです。
- MySQL 8 は、ウィンドウ関数、CTE、改良された EXPLAIN FORMAT=TREE、JSON_TABLE を介した Hermes クラスの JSON 処理といった実際の機能によってアップグレードの苦労を乗り越えました。 MariaDB フォークの機能優先マーケティングの前提となっていたフローは大幅に縮小しました。
- レプリケーションは、キャリアの成否を分ける場所です。GTID ベースのセットアップにより、トポロジ (チェーン、マルチソース) が管理可能になり、パフォーマンスと耐久性の間の妥協点として半同期が行われます。また、リードレプリカのラグは、想定 (pt-heartbeat スタイルのチェックやパフォーマンス スキーマ ベースのレイテンシ) ではなく測定する必要があります。
- パフォーマンスの作業は、低速クエリ ログとパフォーマンス スキーマから始まります。ステートメント ダイジェスト、インデックスの使用法、およびスキーマ優先インデックス作成は、あらゆる魔法の my.cnf パラメータ リストを上回ります。バッファプールのサイズ設定とワーキングセットが実際に重要な点です。
- 復元するバックアップ: 小規模資産向けのダンプ ベースのワークフロー (mysqldump --single-transaction)、速度向上のための物理スナップショット (Percona xtrabackup-class)、およびポイントインタイム リカバリは、ドキュメントの格子ではなく、常に実際の停止スケジュールに対してテストされます。
- MySQL のデフォルト ステータスが勝ち続ける場合: アプリケーション エコシステムがそれを想定し、パネルがそれを出荷し (多くの場合、MariaDB に交換されます)、クラウド オペレーターがそれを安価に提供し、CMS プラグイン エコシステム (特に WordPress) が最初にそれに対してテストします。デフォルトを維持するということは、テストを継続することを意味します。
現場ノート
私がこれまで見た中で最高の MySQL パフォーマンス作業は、構成チューニング マラソンではありませんでした。それは、書き込みスループットをめぐって 1 つの OLTP テーブルと競合する 3 つのインデックスを削除する開発者でした。非ベンチマークは、ブログ投稿ではなく、遅いクエリ ダイジェストから始まります。
よくある質問
新しいプロジェクトには MySQL 8 または MariaDB を使用しますか?
エコシステムの制約のない新しいプロジェクト: MariaDB はデフォルトとして最適ですが、MySQL 8 にはベンダー エコシステム、セキュリティ パッチ、レプリケーション リギングが備わっています。実際に必要な機能を比較し、関係に関する質問については mysql-vs-postgresql の記事を読んでください。
既存の MySQL を MariaDB に切り替えるには変更が必要ですか?
バイナリ形式のバージョン間のダウングレードアップは困難です。MySQL 8 のデータ ディクショナリは MariaDB によって読み取られません。論理移行 (ダンプ/ロード) は機能しますが、プラグインの置換にはコミット前にインベントリが必要です。
半同期レプリケーション: 遅延を考慮する価値はありますか?
サイレント フェイルオーバーによるデータ損失が軽減されます。古典的なルールは、非同期をベースラインとする 2 つの一貫性/パフォーマンスの選択肢のうちの 1 つです。最も混雑したワークロードの場合、完全同期ではなく、半同期とテスト済みのフェイルオーバーを併用するのが正しい答えです。
単一の遅いサイトが機能を無効にするのを防ぐにはどうすればよいですか?
ユーザーごとのリソース (共有スタック上の CloudLinux db_governor、前面のプロキシ クエリ制限) に加え、低速クエリの規律。データベース自体には、環境によってシートベルトが与えられない限り、シートベルトがありません。
データベースの比較 に対するKinetikatechの支援
私たちが毎日行っていること:ワークロードをホスティングするためのデータベース エンジンの選択肢を、正確性の保証、運用の重さ、実際のコストで比較しました。組み込みエンジンとサーバー、MySQL と PostgreSQL、SQL とドキュメント ストア、そして引き続き登場するレガシー ケース スタディです。 私たちのサーバー管理とWebサイト高速化サービスは、評価、実装、24時間体制の監視、30分以内の緊急対応をエンドツーエンドでカバーします。