スマートスタイル TECH BLOG

MariaDB Server 10.3 新機能 Instant ADD COLUMN

本記事はMariaDB Corporationより寄稿された記事となります

はじめに

MariaDB Server 10.3.2 以降,Instant ADD COLUMN が追加されており,大規模なテーブルに対しても新たなカラム(column)の追加を非常に高速に行うことが可能になっています。
また,現在ベータ版の MariaDB Server 10.4 では Instant DROP COLUMN も追加されています。
本記事では,Instant ADD/DROP COLUMN について解説致します。

Instant ADD COLUMN

Instant ADD COLUMN は2017年4月に MariaDB Corporation,Alibaba,Tencent の開発者の間で初期デザインが議論され. Tencent Games DBA チームの陈福荣様により,プロトタイプが開発されました。

Instant ADD COLUMN for InnoDB – Marko Mäkelä

その後 MariaDB Corporation により再実装され,MariaDB Server 10.3.7 で GA となりました。

制限事項

現状以下の機能上の制限があります。

  • 追加したカラムは最後列に追加される
  • FULLTEXT INDEX が利用されている場合,Instant ADD COLUMN は利用不可
  • ROW_FORMAT=COMPRESSED が利用されている場合,Instant ADD COLUMN は利用不可

利用方法

Instant ADD COLUMN は以下のように利用することが可能です。

Reference: https://mariadb.com/kb/en/library/alter-table/#algorithm

サンプルテーブルを作成,比較的大量のデータをインポートし,Instant ADD COLUMN の実行時間を測定してみます。

サンプルテーブル作成,テストデータインポート

ここで,サンプルデータ t1.csv には 1億行のデータがあります。

カラム追加テスト

note という名前で varchar(50) のカラムを追加してみます。

わずか 0.002 秒でカラム追加を行うことができました。比較として ALGORITHM=COPY で実施してみます。

ALGORITHM=COPY ではほぼ 5分かかりました。
ALTER TABLE 実行中は SELECT 以外のクエリが実行できませんので,大規模なテーブルの場合,サービス提供に支障をきたす場合があると想像されます。

Instant DROP COLUMN

今度は反対に追加したカラムを削除(DROP)してみます。

DROP COLUMN も非常に高速であることが確認できました。なお,インデックスが定義されているカラムでは ALGORITHM=INSTANT は適用できません。

ALTER TABLE – DROP COLUMN

まとめ

今回はMariaDB Server 10.3 以降デフォルトとなる ALTER TABLE .. [ADD|DROP] COLUMN .. ALGORITHM=INSTANT では,非常に高速なスキーマ変更が可能となることが確認できました。これによりMariaDB Serverを運用する上で,非常に高い柔軟性が得られるものと考えます。


執筆者情報

後藤 智(GOTO Satoru)
2017年6月よりMariaDB Corporation AbにてAPAC(Asia Pacific)地域におけるプリセールス業務を主に担当。現在は主に日本を担当。
この執筆者の他の記事をよむ
Return Top