データ量制限
リソースの有限性から、ユーザーの性能に影響しないように、TencentDB for MySQLは各種タイプのMySQLインスタンスにデータ量制限を設けました。このドキュメントでは、大量のデータ数におけるMySQLの単一インスタンスおよび単一テーブルの使用による影響について技術的な角度からご紹介します。
大量データのインスタンス:CDBのデフォルトのストレージエンジンはInnoDBです。インスタンスにおけるデータとインデックスページがInnoDBのcache、bufferにキャッシュされている場合、MySQLインスタンスでは、大量の同時アクセスがサポートされています。インスタンスのデータ量が大きすぎる場合、cache、bufferが頻繁にデータを交換し、MySQLのボトルネックが速やかにIOに移行し、アクセスのスループットが大幅に低下します(例えば、あるCDBのインスタンスは本来、1秒あたり8000回のアクセス回数が可能であるが、データ量がcache、bufferサイズの2倍になった場合、1秒あたりのアクセス回数が700回となった)。
大量データテーブル:1つのテーブルのデータ量が大きくなりすぎると、1つのテーブルに対するMySQLのリソース(データ、インデックスなど)の管理コストが変化し、テーブルの処理効率に直接影響を与えるようになります。例えば、ビジネステーブル(InnoDB)のデータ量が10GBに達した場合、更新操作の遅延が大幅に増加し、ビジネスのレスポンスタイムに直接影響を与えるため、分割テーブルを移行して緩和しなければならなくなります。
説明:
単一インスタンスのテーブル数が100万を超えた場合は、バックアップ、監視、アップグレードに失敗する恐れがあり、データベースへの監視にも影響を与えます。そのために、単一インスタンスのテーブル数が100万を超えないようにテーブルの数を適切に管理してください。
接続数の制限
MySQLインスタンスへの最大接続数は、MySQLのシステム変数max_connectionsで指定されます。MySQLインスタンス接続数がmax_connectionsを超えると、新しい接続はできなくなります。
CDBへのデフォルトの接続数は、MySQLコンソールでインスタンスIDをクリックし、データベース管理>パラメータ設定ページで確認することができます。ユーザーは必要に応じて、max_connectionsの値を自分で調整することができます。ただし、接続数が多いほど、システムリソースを多く消費することになります。接続数が実際のシステムの負荷容量を超えると、システムのサービス品質への影響を避けられなくなります。 MySQLクライアントバージョンの制限
CVMシステムに付属したMySQLクライアント端末とlibライブラリを使用して、TencentDBインスタンスに接続することをお勧めします。
スロークエリについての説明
Linux CVMを使用する開発者は、クラウドデータベースのエクスポートツールからスロークエリログを取得することができます。詳細については、 バックアップファイルとログのダウンロードをご参照ください。 Windows CVMを使用する開発者は現在、スロークエリーログを直接に取得することができません。必要な場合、チケットを提出 して、こちらにスロークエリーログファイルの取得を依頼してください。 クラウドデータベースのbinlog保存期間の説明
TencentDB for MySQLのbinlogログファイルは7日間から1830日間保持でき、デフォルトは7日間です(インスタンスIDをクリックしてバックアップリカバリ>自動バックアップ設定に移動すると、保持期間を設定できます)。
binlogは保存時間が長すぎるか、または増加が速すぎると、バックアップ領域が大きくなり、バックアップ領域がシステムが割り当てた領域を一旦超えてしまうと、追加のバックアップ領域費用が生じることがあります。
文字セットの説明
TencentDB for MySQLのデフォルトの文字セットはUTF8です。
クラウドデータベースはデフォルト文字セットエンコーディングの設定をサポートしますが、テーブル作成時にはテーブルのコードを明確に指定し、接続時には接続コードを指定することをお勧めします。そうすることで、アプリケーションの移植性がより良くなります。
MySQL文字セットの関連リソースについては、MySQL公式ドキュメントをご参照ください。 文字セットの変更は、SQL言語またはMySQLコンソールから行うことができます。
SQL言語による文字セットの変更
1. CDBインスタンスのデフォルトの文字セットエンコーディングは、SQL言語で次のステートメントを実行すれば変更することができます。
SET @@global.character_set_client = utf8;
SET @@global.character_set_results = utf8;
SET @@global.character_set_connection = utf8;
SET @@global.character_set_server = utf8;
ステートメントの実行後、このうちの@@global.character_set_server 等は、約10分で永続化のためにローカルファイルに自動的に同期されますが、他の3つの変数は同期されません。設定された値は、移行または再起動後も変更されません。
2. 以下のステートメントを実行することで現在接続している文字セットエンコーディングを変更できます。
SET @@session.character_set_client = utf8;
SET @@session.character_set_results = utf8;
SET @@session.character_set_connection = utf8;
または
3. PHPプログラムについて、以下の関数によって現在接続している文字セットエンコーディングを設定できます:
bool mysqli::set_charset(string charset);
または
bool mysqli_set_charset(mysqli link, string charset);
4. Javaプログラムについては、以下の方式によって現在接続している文字セットエンコーディングを設定できます:
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8
MySQLコンソールによる文字セットの変更
1. MySQLコンソールにログインし、インスタンスリストでインスタンスIDをクリックして、インスタンス詳細ページに進みます。 2. インスタンス情報で「文字セット/照合順序」の項目を見つけ、変更アイコンをクリックすると文字セットを編集できます。
3. 表示されたダイアログボックスで文字セットを選択し、OKをクリックします。
操作制限
1. MySQLインスタンスが有するアカウント情報と権限は修正しないでください。修正すると、一部のクラスターサービスが利用できなくなる場合があります。
2. データベースとテーブルを作成するときは、InnoDBエンジンを統一して使用することをお勧めします。これにより、高アクセスサポートの能力面でインスタンスのパフォーマンスが良くなります。
3. マスターとスレーブの関係を変更または終了しないでください。この操作をした場合、ホットバックアップを失効させる恐れがあります。
テーブル名の制限
中国語によるテーブル名はサポートしていません。テーブル作成時には注意してください。中国語によるテーブル名の場合、ロールバック、アップグレードなどのフローが失敗することがあります。
データベースのアカウント権限
TencentDB for MySQLは今後、インスタンスのsuper user権限をユーザーに提供しません。変更にsuper user権限が必要なパラメータは、MySQLコンソールからインスタンスIDをクリックして、データベース管理>パラメータ設定ページに移動して変更することができます。 ネットワークの選択
Virtual Private Cloud(VPC)のご利用を推奨します。VPCでは、ネットワークセグメントのパーティション、IPアドレスおよびルーティングポリシーをカスタマイズすることができます。基本ネットワークに比べると、VPCはカスタムネットワーク構成が必要なシナリオに適しています。VPCおよび基本ネットワークの比較についてはネットワークの管理をご参照ください。