というか混じりようがない。
innodb_file_formatはそもそも.ibdファイルだけに利くパラメーターであり、innodb_file_per_table が無効の場合は勝手にAntelope相当の状態にフォールバックされる。
というわけで、
知らずにAntelopeのまま何年か運用してきたものを途中からSET GLOBALで乗り換えてALTER TABLE t1 ROW_FORMAT= Compressedとかも大丈夫(もちろんpt-online-schema-changeしますが)
もちろん逆も大丈夫、何らかの理由でBarracudaなテーブルをいくつか作ってからAntelopeに戻しても何の問題もない(やるとは思えないけど聞かれたのはそういうことだったんだ。。)
innodb_file_formatはそもそも.ibdファイルだけに利くパラメーターであり、innodb_file_per_table が無効の場合は勝手にAntelope相当の状態にフォールバックされる。
mysql56> SET GLOBAL innodb_file_per_table= 0;
Query OK, 0 rows affected (0.05 sec)
mysql56> SET GLOBAL innodb_file_format= Barracuda;
Query OK, 0 rows affected (0.03 sec)
mysql56> CREATE TABLE t1 (num int) ROW_FORMAT= Dynamic;
Query OK, 0 rows affected, 2 warnings (0.59 sec)
mysql56> SHOW WARNINGS;
+---------+------+------------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------------+
| Warning | 1478 | InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. |
| Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT. |
+---------+------+------------------------------------------------------------+
2 rows in set (0.00 sec)
というわけで、
- 1つのテーブルはAntelopeとBarracudaの両方の状態を持つことはできない(ROW_FORMATはテーブル属性で1つしかもてない)
- 1つのBarracudaなテーブルは必ず.ibdファイルに格納される
- Antelopeなテーブルはそのテーブルの.ibdファイルまたはibdata1に格納される
知らずにAntelopeのまま何年か運用してきたものを途中からSET GLOBALで乗り換えてALTER TABLE t1 ROW_FORMAT= Compressedとかも大丈夫(もちろんpt-online-schema-changeしますが)
もちろん逆も大丈夫、何らかの理由でBarracudaなテーブルをいくつか作ってからAntelopeに戻しても何の問題もない(やるとは思えないけど聞かれたのはそういうことだったんだ。。)