データベースのインデックスを維持するには?

データベースのインデックスを維持するには?

回答:テーブルが頻繁に更新および削除される場合、主に定期的にインデックスを維持およびチェックする必要があります。

テーブルを分析

MySQLオプティマイザーがSQLステートメントを最適化するとき、最初に、インデックスに対応するさまざまな列の数を示す、テーブルのカーディナリティ(「ハッシュ度」に変換できる)を含むいくつかの関連情報を収集する必要があります値-カーディナリティがデータの実際のハッシュより大幅に少ない場合、インデックスは基本的に無効です。
SHOW INDEXステートメントを使用して、インデックスのハッシュ度を確認できます:
SHOW INDEX FROM PLAYERS;
TABLE KEY_NAME COLUMN_NAME CARDINALITY
------- -------- ------------ ----------
PLAYERS PRIMARY PLAYERNO 14
PLAYERテーブルのさまざまなPLAYERNOの数が14をはるかに超えるため、インデックスは基本的に失敗します。
ここでは、Analyze Tableステートメントを使用してインデックスを修復します:
ANALYZE TABLE PLAYERS;
SHOW INDEX FROM PLAYERS;
結果は次の
とおりです:TABLE KEY_NAME COLUMN_NAME CARDINALITY
------- -------- --------- ------------
PLAYERS PRIMARY PLAYERNO 1000
この時点でインデックスが修復され、クエリの効率が大幅に向上しました。
binlogが有効な場合、Analyze Tableの結果もbinlogに書き込まれることに注意してください。analyzeとtableの間にlocalというキーワードを追加して、書き込みをキャンセルできます。

最適化テーブル
がデータを頻繁に更新するディスクは、データベースと同様に、最適化する必要があります。最適化テーブルステートメントは、MyISAMとInnoDBタイプのテーブルの両方に有効です。
テーブルが頻繁に更新される場合は、テーブルの最適化ステートメントを定期的に実行して効率を確保する必要があります。

チェックテーブル
データベースでは、データがディスクに書き込まれたり、インデックスが同期的に更新されなかったり、MySQLをシャットダウンせずにデータベースが停止したりするなどのエラーが発生することがよくあります。
これらの場合、データにエラーがある可能性があり
ます:テーブルのキーファイルが正しくありません: ''。修復してみてください。
現時点では、Check Tableステートメントを使用して、テーブルとそれに対応するインデックスを確認できます。
たとえば、
CHECK TABLE PLAYERS を実行すると、
結果は
TABLE OP MSG_TYPE MSG_TEXT
-------------- ----- -------- --------
TENNISになります。チェックOKステータスPLAYERS
MySQLは各実行チェックテーブルのための最後の検査時間テーブルを保存しますが、この情報を保存します:
実行
SELECT TABLE_NAME、CHECK_TIMEを
INFORMATION_SCHEMA.TABLES FROM
WHERE TABLE_NAME = '選手の
AND TABLE_SCHEMA =「TENNIS」;
結果は
TABLE_NAME CHECK_TIME
---------- -------------------
PLAYERS 2006-08-21 16:44:25
チェックテーブルでは、他のオプションも指定できます。
UPGRADE:以前のバージョンのMySQLで作成されたテーブルが現在のバージョンと互換性があるかどうかをテストするために使用されます。
QUICK:最速のオプションです。各列のデータをチェックするときに、リンクの正確性はチェックされません。問題が発生しない場合は、このオプションを使用できます。
高速:テーブルが正常に閉じているかどうかのみを確認し、システムの電源をオフにしても重大な問題が発生しない場合は、このオプションを使用できます。
変更:最後のチェック時刻以降に更新されたデータのみをチェックします。
MEDIUM:デフォルトのオプションは、インデックスファイルとデータファイル間のリンクの正確さをチェックします。
拡張:最も遅いオプションが完全にチェックされます。

 

 

出典:https : //blog.51cto.com/holy2010/364657

おすすめ

転載: www.cnblogs.com/XiDaPuBen/p/12725907.html