MySQLデータベースのバージョン5.5/6を維持し、InnoDBを使用するためのベストプラクティスを考えたいと思います。
私はこれに出くわしました 記事 これは基本的に最適化テーブルを言っています:
私の質問は:
その投稿の著者であるバロンシュワルツは、MySQLのパフォーマンスに関して最も優れた本の1つである High Performance MySQL、3rd Edition の共著者の1人です。権威の主張は必ずしも良いものではありませんが、おそらく彼は自分の言っていることを知っていると思います。
彼の言うことはすべて正しいですが(私の控えめな意見では)、実際の根本的な議論を理解する必要があります:InnoDBテーブルのデフラグは多くの場合(パフォーマンスのために)役に立たず、頻繁に行うことを推奨する多くの人々は間違っています。
断片化とページ分割はデリケートなトピックであり、Jeremy Coleのような人々はそうです http://blog.jcole.us/2013/04/09/innodb-bugs-found-during-research-on-innodb-data -storage / およびFacebookエンジニアは多くのこと(特に圧縮に関して)を言及しています: https://www.facebook.com/note.php?note_id=101503483154559 とパフォーマンスへの影響。
多くの場合、パフォーマンスは負荷に依存します。自動インクリメントを使用して挿入しますか?テーブルの途中で何度も挿入と削除を行いますか?テーブルが非常に動的である場合、追加のディスク領域を確保できますか?
私があなたに推奨できるいくつかの良い習慣があります(これはおそらくあなたが望むものです):
もちろん、本当にこのトピックを掘り下げたい場合は、いくつかのテーブルを作成し、それらをデフラグして、後で実際に利益があるかどうかを確認します。一般に、テーブルスペースの処理と統計の収集は、InnoDBでは比較的自動的に行われます。