のrequがありますInnoDBの1ページ(16k)に少なくとも2つのレコードが含まれている必要があります。オーバーヘッドを減算すると、1レコードあたり8kに近い値になります。
BLOB/TEXT型を長くすることができ、InnoDBは行の書式によって異なる方法で処理できます。
コンパクトの場合COMPACT
のルールは次のとおりです。レコードが〜8kよりも長い場合、ページはBLOBフィールドの最初の768バイトを格納します。フィールドの残りの部分は外部ページのチェーンに格納されます。 15個のBLOBフィールドがそれぞれ500バイト+その他のオーバーヘッドを持つ場合、1レコードあたり〜8kという制限を超えます。
DYNAMIC
フォーマットはBLOB用に最適化されました。制限は1レコードにつき8kです。しかし、レコードが制限を超えた場合、外部ページ(20バイト)への参照のみが格納されます。 BLOB値は外部ページにのみ格納されます。そのため、1つのレコードにBLOBフィールドが増えることがあります。
DYNAMIC
行形式はBarracuda
のファイル形式でのみ利用できます。 my.cnf
でそれを有効にすることを忘れないでください:
innodb_file_per_table=ON
innodb_file_format=Barracuda
はあなたの問題を解決するには、DYNAMIC
形式でテーブルを作成する必要があります。
CREATE TABLE testtext
(
id INTEGER,
text1 TEXT,
text2 TEXT,
text3 TEXT,
text4 TEXT,
text5 TEXT,
text6 TEXT,
text7 TEXT,
text8 TEXT,
text9 TEXT,
text10 TEXT,
text11 TEXT,
text12 TEXT,
text13 TEXT,
text14 TEXT,
text15 TEXT,
text16 TEXT,
text17 TEXT,
text18 TEXT,
text19 TEXT,
text20 TEXT,
text21 TEXT,
PRIMARY KEY (id)
)
engine=innodb
row_format=dynamic;
CREATE TABLEステートメントを表示できますか? – Riedsio
作成クエリは 表testtext( ID INTEGERを作成している、 TEXT1テキスト、 TEXT2テキスト、 TEXT3 TEXT、 TEXT4テキスト、 TEXT5テキスト、 TEXT6テキスト、 TEXT7テキスト、 TEXT8テキスト、 TEXT9 TEXT、 TEXT10 TEXT、 TEXT11 TEXT、 TEXT12 TEXT、 TEXT13 TEXT、 TEXT14 TEXT、 TEXT15 TEXT、 TEXT16 TEXT、 TEXT17 TEXT、 TEXT18 TEXT、 TEXT19 TEXT、 TEXT20 TEXT、 TEXT21 TEXT、 プライマリキー(ID) )エンジン= InnoDB; 私はROW_FORMATを使ってダイナミックに設定しようとしました。しかし、それはどちらの助けにもなりません..テーブルのステータスはまだテーブルがコンパクトフォーマットであることを示しています。 – Ashok