簡単な質問ですが、それはしばらくの間私を悩ませています...
MySQLの「オーバーヘッド」とは何ですか。心配する必要がありますか?
「テーブルの最適化」をクリックすると実際に修正されますか?
簡単な質問ですが、それはしばらくの間私を悩ませています...
MySQLの「オーバーヘッド」とは何ですか。心配する必要がありますか?
「テーブルの最適化」をクリックすると実際に修正されますか?
回答:
オーバーヘッドは、データベースが一部のクエリを実行するために使用した一時的なディスク領域であると思われるため、これが非常に高くなった場合にのみ心配する必要があります。
「テーブルの最適化」をハードドライブのデフラグと比較できます。
私は引用します:
すべてのデータベースは、時間の経過とともに、最適なパフォーマンスレベルを維持するために何らかの形のメンテナンスを必要とします。削除された行のパージ、再シーケンス、圧縮、インデックスパスの管理、デフラグなどは、mysqlではOPTIMIZATIONと呼ばれ、他のデータベースでは他の用語で呼ばれます。たとえば、IBM DB2 / 400では、REORGANIZE PHYSICAL FILE MEMBERと呼ばれています。
まるで車のオイル交換やチューンナップのようなものです。あなたは本当にそうする必要はないと思うかもしれませんが、そうすることであなたの車はより良く走り、あなたは燃費を良くします、等々。頻繁に使用されるデータベースにも同じことが必要です。多数のUPDATE操作やDELETE操作、あるいはその両方を実行している場合、特にテーブルに可変長の列(VARCHAR、TEXTなど)がある場合は、調整を続ける必要があります。
をphpMyAdmin
呼び出すものについて話している場合overhead
、それは同じデータファイルの理想的なサイズに対するテーブルデータファイルの実際のサイズです(バックアップから復元されたときのように)。
パフォーマンス上の理由から、MySQL
行を削除または更新した後は、データファイルを圧縮しません。
これoverhead
はテーブルスキャンには適していません。つまり、クエリですべてのテーブル値を実行する必要がある場合は、より多くの空のスペースを調べる必要があります。
テーブルとインデックスを圧縮するをoverhead
実行するOPTIMIZE TABLE
ことで、を取り除くことができます。
オーバーヘッドはテーブルのData_free、つまり割り当てられているが未使用のバイト数です。 SQLコマンドSHOW TABLE STATUSで確認できます。これは、テーブルに割り当てられたサイズの空き領域です。
テーブルを最適化すると、非常に問題が発生する可能性があります。たとえば、テーブルがサイトで頻繁に使用されている場合。
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
MyISAMまたはARCHIVEテーブルの大部分を削除した後、または可変長行(VARCHAR、VARBINARY、BLOB、またはTEXT列を持つテーブル)を含むMyISAMまたはARCHIVEテーブルに多くの変更を加えた後。削除された行はリンクリストに保持され、後続のINSERT操作は古い行の位置を再利用します。<
私はこの動作を確認したと思います。そして、それは確かに非常に便利です。