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

列のデータ型と行数からMySQLテーブルが使用するディスクスペースを計算するにはどうすればよいですか?

    • あなたが言ったよりも多くのオーバーヘッドがあります。 20バイト/行可能性があります 閉じる
    • SHOW TABLE STATUSを信用しないでください 「行」を指定するには、SELECT COUNT(*) ...を使用します ほぼ2倍ずれていることに注目してください。
    • 逆の方法で計算します:135245332480/3017513240=45バイト。
    • 45バイトから、多くのセルがNULLであると推測しますか?
    • 各行の各列には、1バイトまたは2バイトのオーバーヘッドがあります。
    • ROW_FORMAT 重要です。
    • TEXT およびBLOB (など)単純なデータ型とは根本的に異なるルールがあります。
    • インデックスはあなたが言及した6バイトよりもはるかに多くかかります(その他の投稿> 。
    • BTree構造にはいくらかのオーバーヘッドがあります。順番にロードすると、各ブロックの15/16が埋められます(ドキュメントのどこかに記載されています)。チャーン後、範囲は簡単に50〜100%満たされます。 BTreeは69%いっぱいになります(したがって、他の投稿では1.45になります)。

    バックアップ用に同量のスペースを予約しています...

    • それが彼らのしていることかどうかはわかりません。
    • mysqldump(または同様のもの)を使用している場合、それは安全な式ではありません- text データベースのダンプは大幅に大きくなることも小さくなることもあります。
    • LVMを使用している場合は、完全なバイナリダンプの余地があります。しかし、それはCOWのために意味がありません。
    • (それで、私は第3四半期をあきらめます。)

    クラウドサービスはある種の圧縮を行っている可能性がありますか?




    1. FOREIGN KEY制約によって参照されているため、テーブルを切り捨てることができませんか?

    2. 複数のテーブル選択とJOIN(パフォーマンス)

    3. 警告:mysqli_connect():不明なMySQLサーバーホスト

    4. UNIQUE制約、フィールドに特定の値が含まれている場合のみ