オンライン変更可能なグローバル変数なので、`SET GLOBAL innodb_default_row_format= ..'で変更も可能。暗黙のデフォルトは"Dynamic"。
名前と値から察せられる通り、kamipoさん の悲願をかなえる類のもの…なんだけれども、
MySQL(InnoDB) で "Index column size too large. The maximum column size is 767 bytes." いわれるときの対策 - かみぽわーる
これ、
The innodb_file_format configuration option is ignored if a table is created or altered to use ROW_FORMAT=DYNAMIC. For example, innodb_file_format=Antelope is ignored if you create a table with a DYNAMIC row format. The Barracuda file format is used instead.
http://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_default_row_format
CREATE TABLEの時は良い。kamipo時代の到来という感じで、基本的にはメリットになる(や、ページが強制的に分割されるから、innodb_fill_factor とかいじってる人にはそうじゃないだろうけど)
ただしALTER TABLE、テメーはダメだ。勝手にROW_FORMAT= Dynamicとか押し込むな。頼む。
Change ROW_FORMAT propertyMySQL :: MySQL 5.7 Reference Manual :: 14.10.1 Overview of Online DDL
Although ALGORITHM=INPLACE is allowed, the data is reorganized substantially, so it is still an expensive operation.
オンラインでALTER TABLEできるけど、テーブルの再構築が走るので重くなる。
ROW_FORMAT= Compactなテーブルは、ALTER TABLEする時にROW_FORMAT= Compactを明示的に指定しないといけない。
何故ALTER TABLEにも適用するようにしたんだこのオプション。。
ばぐれぽ読む限りは、割と希望が見える。
I have analyzed your bug and the reasoning for the deprecation of the variable and I do agree with your findings.
I am now handing over your request to developers for the decision-making.
Hopefully, we shall hear from them soon.
MySQL Bugs: #78347: innodb_default_row_format: Undesireable new behaviour
さあみんなであふぇくつみー。
【2015/09/08 13:53】
innodb_default_row_formatについて1月ぐらいに予言してた https://t.co/bzPGsH9F52
— Ryuta Kamizono (@kamipo) 2015, 9月 8
innodb_default_row_formatの取りうる値は"Redundant"(ふるーいやつ), "Compact"(今のデフォルト), "Dynamic"(新しいデフォルト)でCompressedはありません。
— yoku0825 (@yoku0825) 2015, 9月 8
しかもこれ、CompactをデフォルトにしたところでDynamicなテーブルがCompactにされてしまうリスクがあるな。
— yoku0825 (@yoku0825) 2015, 9月 8
0 件のコメント :
コメントを投稿