MySQL 5.7 で非ネイティブなパーティションを判別
MySQL 5.7 へのアップグレード時に、パーティションを更新しないと該当テーブル検索時に以下のような警告が出力されるようになります。
非推奨パーティションの警告
The partition engine, used by table 'テーブル名', is deprecated and will be removed in a future release. Please use native partitioning instead.
これ自体は以下を実行して InnoDB native なパーティションへ更新すれば解決する話ですが。
native partitioning への更新方法
ALTER TABLE テーブル名 ENGINE = INNODB;
パーティションの native と 非native を見分けるにはどうすればよいのか気になったので information_schema
のテーブルを調べてみました。
PARTITIONS
テーブル等には特に違いが見られなかったのですが、INNODB_SYS_TABLES
テーブルの FILE_FORMAT
と ROW_FORMAT
の値で違いを確認できました。
INNODB_SYS_TABLES の内容
パーティション | FILE_FORMAT | ROW_FORMAT |
---|---|---|
非native の場合 | Antelope | Compact |
native の場合 | Barracuda | Dynamic |
なお、INNODB_SYS_TABLES テーブルでパーティションに関するレコードは、NAME の値が スキーマ名/テーブル名#P#パーティション名[#SP#サブパーティション名]
のようになっていました。
ALTER TABLE ・・・
でパーティションを更新すると、Antelope と Compact から Barracuda と Dynamic へ変化したので、とりあえずはこれで判別できそうです。