0

varchar (250) を charset latin1 に設定して値を追加するときに「abc」文字を追加すると、割り当てられたデータが 251 バイトまたは 4 バイトであることを意味しますか? 他のデータ型でも同じですか?お知らせ下さい?

4

2 に答える 2

1

varchar(250) があり、「abc」を追加すると、3 バイト/文字が割り当てられます。ユーザーが char(250) の場合、250 バイト/文字が割り当てられます。

VARCHAR の場合、データ型を表すために内部的に最小限のストレージ オーバーヘッドが使用されることに注意してください。

于 2012-09-03T10:15:27.973 に答える
1

MySQL のマニュアルには、ストレージ要件に関する章全体があります。

AVARCHAR(250) NOT NULLは、長さnを格納するために 1 バイト、実際の文字列を格納するためにnバイトを使用します。したがって、値を保持する列'abc'は 4 バイトになります。ではVARCHAR(250) NULL、nullity は 1 ビットを取り、NULL値は他には何も取りません。null 以外の値はそのビットを取り、長さは 1 バイト、データはnバイトです。ここでビットが必要になるということは、複数の null 許容列が 1 つ以上のバイトを共有して null を記録することを意味します。

他の可変長データ型も同様です。さまざまなサイズの BLOB 型と TEXT 型では、長さが 1 バイトを超える場合がありますが、それ以外はほとんど同じように機能します。数値型と固定長CHAR型のメモリ要件は固定されています。CHARその内容はその固定長にスペースで埋め込まれているため、長さバイトは省略されると思います。

インデックスにより、メモリ要件が増加する場合があります。マルチバイト文字セット (UTF-8 を含む) はメモリ要件を増加させる可能性があるため、上記のステートメントは、テーブルが latin1 または同様のもの用に作成された場合にのみ保持されます。

于 2012-09-03T11:48:04.747 に答える