一部の列がvarcharであるという事実を考慮して、特定の行数がディスク上で占めるバイト数を測定する方法があるかどうか疑問に思っています。
どうもありがとう、
ヴラド
ディスク上の行が占めるバイト数を測定するには、各データ型に必要なディスク容量を知る必要があります。
ドキュメント:
データ型のストレージ要件
CHAR型とVARCHAR型
例:
テーブルは2つのフィールド(BIGINTフィールドとVARCHAR(400)フィールド)で構成されています。BIGINTフィールドは常に8バイトを使用します。VARCHARフィールドは、2バイト+実際に格納されている文字数を使用します。
したがって、1つのレコードに300文字が格納されている場合、このレコードで使用される合計バイト数は次のようになります。8 + 2 + 300=310バイト
CHARとは対照的に、VARCHAR値は1バイトまたは2バイトの長さのプレフィックスとデータとして格納されます。長さプレフィックスは、値のバイト数を示します。値に必要な長さが255バイト以下の場合、列は1つの長さバイトを使用し、値に必要な長さが255バイトを超える場合は2つの長さバイトを使用します。
The physical structure of records in InnoDBおよびInnoDBシリーズの他の記事を読むと役立つ場合があります。テーブル スキーマ (からSHOW CREATE TABLE
) を提供してくださった場合は、例としてそれを試してみたいと思います。残念ながら、MySQL に組み込まれている物理的な行サイズを測定する方法は実際にはありません。