sql >> データベース >  >> RDS >> Mysql

WordpressとMySQLテーブルの断片化

    1つの可能性は、テーブルサイズに関する誤った統計が表示されていることです。

    MySQL 8.0はテーブルに関する統計をキャッシュしようとしますが、実装にはいくつかのバグがあるようです。テーブル統計がNULLとして表示される場合もあれば、値が表示される場合もありますが、テーブルデータを変更するときに値を更新できません。

    https://bugs.mysql.com/bug.php?id=83957<を参照してください。 / a> たとえば、このキャッシュ動作の問題について説明しているバグです。

    キャッシュを無効にすることができます。これにより、INFORMATION_SCHEMAまたはSHOW TABLE STATUSに対するクエリが少し遅くなる可能性がありますが、8.0より前のバージョンのMySQLよりも悪くはないと思います。

    SET GLOBAL information_schema_stats_expiry = 0;
    

    整数値は、MySQLが統計をキャッシュし続ける秒数です。テーブルの統計をクエリすると、有効期限が切れてMySQLがストレージエンジンから読み取って更新するまで、キャッシュから古い値が表示される場合があります。

    キャッシュの有効期限のデフォルト値は86400、つまり24時間です。それは過剰に思えます。

    https://dev.mysqlを参照してください。 com / doc / refman / 8.0 / en / server-system-variables.html#sysvar_information_schema_stats_expiry

    Wordpressがテーブルに書き込んでいると思うなら、そうかもしれません。バイナリログまたはクエリログを有効にして調べることができます。または、SHOW PROCESSLISTを確認してください 数分間。

    頻繁に更新またはテーブルに挿入されているワードプレスプラグインがある可能性があります。最新のupdate_timeを探すことができます:

    SELECT * FROM INFORMATION_SCHEMA.TABLES
    ORDER BY UPDATE_TIME DESC LIMIT 3;
    

    これを見て、最近書き込まれたテーブルを確認してください。

    このUPDATE_TIME統計には注意が必要です。表領域ファイルへの書き込みは非同期であるため、表を更新したクエリと常に同期しているとは限りません。ここでそれについて読んでください: https://dev.mysql。 com / doc / refman / 8.0 / en / Tables-table.html



    1. t-sqlを使用してxml変数のすべてのxml属性の値を更新する方法は?

    2. ハードコーディングや最小/最大値を使用せずに、複数の子行を1つの行MYSQLに結合します

    3. SQL Serverで日時を切り捨てるにはどうすればよいですか?

    4. ON [PRIMARY]とはどういう意味ですか?