優れた性能と拡張性を備えたデータベースは、システムの既存の負荷容量の速やかな引き上げをサポートします。同じデータベーススケールでTencentDB for MySQLを適切に使用した場合、データベースの並列能力を高め、業務の1秒あたりのアクセス数の向上を後押しします。
1. 適切なデータベース構成の選択
1.1 データベースバージョンの選択
TencentDB for MySQLは現在、ネイティブMySQLと完全に互換性のあるバージョン5.5、5.6、5.7、8.0を提供し、より安定した使用には5.6またはそれ以降のバージョンを選択することをお勧めします。データベースカーネルは、5.5以前のバージョンの設計を最適化してシステム性能の向上を図り、さまざまな魅力的な新機能を提供しています。
このドキュメントではMySQL 5.7を例に取り、新しいバージョンの機能についてご紹介しています。MySQL 5.7は一般的に、高性能、信頼性、使いやすさを備えていると認識されています。その最適化ポイントと新機能の一部を次に示します:
ネイティブJSONのサポート
MySQL 5.7には、MySQLテーブルにJSON形式でデータを格納するための新しいデータタイプが追加されています。JSONデータタイプのネイティブサポートの主なメリットを次に示します。
ドキュメントのチェック:JSON仕様に準拠するデータセグメントのみをJSON型の列に書き込むことができるため、自動的にJSON構文チェックが実行されたことになります。
効率的なアクセス:JSON型の列にJSONドキュメントを保存すると、データはプレーンテキストとして保存されず、最適化されたバイナリー形式で保存されるため、オブジェクトのメンバーと配列要素に速やかにアクセスすることができます。
性能の向上:JSON型の列データにインデックスを作成して、queryの性能を向上させることができます。このようなインデックスは、仮想列上に作成された「関数インデックス」によって実現できます。
利便性:JSON型の列に追加されたインライン構文は、自然にSQLステートメントのドキュメントクエリーに統合することができます。例えばfeatures、featureはJSONフィールドです。
SELECT feature->"$.properties.STREET" AS property_street FROM features WHERE id = 121254;
MySQL 5.7を使用すると、最適なリレーショナルパラダイムとドキュメントパラダイムを1つのツールにシームレスに組み合わせることができ、さまざまなアプリケーションやユースケースに最適なリレーショナルパラダイムまたはドキュメントパラダイムを使用することができます。これによって、MySQLユーザーのアプリケーションの範囲が大幅に拡大します。
SYS Schema
MySQL SYS Schemaは、一連のオブジェクト(ビュー、ストアドプロシージャ、ストレージメソッド、テーブルおよびトリガー)で構成されるdatabase schemaです。これにより、Performance SchemaやINFORMATION_SCHEMAのさまざまなテーブルに格納されている監視データリソースに、手軽かつ読み取り可能、さらにDBAと開発者に配慮した方法でアクセスすることができます。
MySQL SYS SchemaはデフォルトでMySQL5.7に含まれており、次のよくある質問に答えるための要約ビューを提供します。
データベースサービスのすべてのリソースを占有しているのは何ですか?
データベースサーバーへのアクセスが最も多いホストはどれですか?
インスタンスのメモリはどこで使用されますか?
InnoDBの改善
InnoDBオンライン操作(Online DDL):MySQLを再起動せずに、お客様のBuffer Pool sizeを動的に調整して、ニーズの変化に対応することができます。今ではInnoDBも、InnoDBのUNDOログとテーブルキャパシティをオンラインで自動的にクリアにして、共有テーブルキャパシティファイル(ibdata1)が大きくなる問題が生じる一般的な原因の1つが解消されます。最後に、過去バージョンではインデックスまたはテーブルを再構築する必要がありましたが、MySQL 5.7はインデックスの名前変更とvarcharのサイズの変更をサポートしています。
InnoDBネイティブパーティション:MySQL 5.7 InnoDBには、パーティションのネイティブサポートが含まれています。InnoDBネイティブパーティションにより負荷が軽減され、メモリ要件を最大90%低下させます。
InnoDBキャッシュのウォームアップ:MySQLがリスタートすると、InnoDB はバッファープール内の最もホットなデータの25%を自動的に保持します。そのため、データキャッシュのプリロードやウォームアップは不要になり、MySQLの再起動による性能の低下が生じることもありません。
1.2インスタンス仕様の選択(データベースメモリ)
MySQLは現在、個別のCPUオプションを提供していません。CPUはメモリの仕様に従い、割合に応じてアサインされます。お客様はご自分の業務の特性に応じて、対応するデータベース仕様を購入することができます。モデルを選択する際の性能の参考を提供するために、インスタンスごとに詳細な標準化テストを行っています。
ただし、Sysbenchの性能テストは、すべての業務シナリオを表しているわけではないことにご注意ください。業務シナリオでのMySQLの性能やパフォーマンスをよりよく理解するために、MySQLで本格的に業務を実行する前に、データベースで負荷テストを実行することをお勧めします。MySQL性能の説明をご参照ください。 メモリはインスタンスのコアメトリックの1つであり、アクセス速度はディスクよりもはるかに高速です。通常はメモリキャッシュのデータが多いほど、データベースの応答は速くなります。メモリが小さい場合にデータが一定量を超えると、ディスクにフラッシュされます。新しいリクエストがこのデータに再度アクセスする場合、ディスクからメモリに読み込む必要があり、ディスクIOを消費します。この際、データベースの応答が遅くなります。
**読み取りの並列性が大きい、または読み取り遅延にセンシティブな業務の場合、データベースの性能を確保するため、小さすぎるメモリ仕様は選択しないことをお勧めします。 **
1.3 ディスクの選択
TencentDB for MySQLインスタンスのディスクキャパシティには、データファイル、システムファイル、binlogファイル、一時ファイルが含まれます。書き込まれるデータ量がインスタンスのディスクキャパシティを超える場合、速やかにアップグレードしないとインスタンスロックがトリガーされる可能性があります。従って、ディスクキャパシティを購入するときは、ディスク容量の不足によるインスタンスのロックや頻繁なアップグレードを回避するために、後日のデータ増加に備えてある程度の冗長性を持たせることをお勧めします。
1.4 適切なデータレプリケーション方法の選択
TencentDB for MySQLは、非同期、半同期、および強い同期という3つのレプリケーションモードを提供しています。データベースインスタンス・レプリケーションモードをご参照ください。お客様の業務が書き込みレイテンシーやデータベースの性能にセンシティブである場合、非同期レプリケーションを選択することをお勧めします。 1.5 TencentDBの高可用性
TencentDB for MySQLの高可用性は、マスター/スレーブ(M-S)(アクティブ・スタンバイモード)アーキテクチャによって保証されています。マスター/スレーブのデータ同期は、binlogログ方式に依存しています。同時に、インスタンスの任意のタイミングへのロールバックをサポートしています。この機能は、バックアップとログの使用に依存しています。従って通常は、インスタンスの高可用性を確保するためにマスター/スレーブシステムを構築したり、その他の追加費用を支払ったりする必要はありません。
1.6 TencentDBの拡張性
TencentDB for MySQLのデータベースバージョン、メモリやディスクの仕様は、オンラインの動的なホットアップグレードをサポートしています。アップグレードプロセスによって業務が中断されることはなく、業務の規模拡大に伴うデータベースのボトルネックを心配する必要もありません。
1.7 CVMとMySQLの連携使用
2. 読み取り専用インスタンスを使用した読み取り拡張
一般的なインターネットビジネスでは、データベースの読み取りと書き込みの比率は通常4:1から10:1の間です。このタイプの業務シナリオでは、データベースの読み取り負荷は書き込み負荷よりもはるかに大きくなります。性能ボトルネックが発生した場合の一般的なソリューションは、読み取り負荷を増やすことです。
MySQL読み取り専用インスタンスは、読み取り拡張ソリューションを提供します。読み取り専用インスタンスをご参照ください。
読み取り専用インスタンスは、さまざまなサービスの読み取り専用アクセスにも応用できます。例えばマスターインスタンスは、オンライン業務向けの読み取り/書込みアクセスを行い、読み取り専用スレーブインスタンスは内部業務またはデータ分析プラットフォーム向けに読み取り専用クエリを提供します。 3. クラウドデータベースのディザスタリカバリソリューション
TencentDB for MySQLは、ディザスタリカバリインスタンスを提供し、ワンクリックでリージョン間リモートデータベースのディザスタリカバリの構築をお手伝いします。 ディザスタリカバリインスタンスを使用すると、複数のリージョン間の各コンピュータルームの相互の冗長化が実現できます。1つのコンピュータルームに障害が発生したり、不可抗力事由によりサービスを提供できなくなったりすると、すぐに別のコンピュータルームに切り替えることができます。ディザスタリカバリインスタンスは、データ同期にTencentのプライベートネットワーク専用回線を使用します。さらにMySQLのカーネルレベルのレプリケーションによって最適化されており、災害時の同期遅延による業務への影響を可能な限り排除します。リモートビジネスロジックの準備が整うと、秒単位でのディザスタリカバリの切り替えが可能になります。
4. 2地域3センターソリューション
TencentDB for MySQLを使用すれば、画面上で簡単な設定をいくつか行うだけで、2地域3センターソリューションを実現することができます。
リモートディザスタリカバリノードをこのクラスターに追加すれば、2地域3センターアーキテクチャが実装できます。
5. ディザスタリカバリインスタンスを使用して、ユーザーに最寄りサーバーへのアクセスを提供
ディザスタリカバリインスタンスは、独立したM-S(プライマリ/スタンバイモード)の高可用性アーキテクチャを採用するとともに、外部へ読み取り専用アクセス機能を提供できます。従って、複数リージョンにまたがる必要のあるユーザーの最寄りサーバーへのアクセスを行うビジネスシナリオの場合、ディザスタリカバリインスタンスを安心して使用することができます。