インデックス削除がパフォーマンスに及ぼす影響を調査/検証してみた

1.2K Views

June 25, 25

スライド概要

2025年6月25日に開催された「【非公式】JJUG CCC 2025 Spring 後夜祭」で使用した資料です

profile-image

ウェルスナビ株式会社 技術広報チームの公式アカウントです。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

インデックス削除がパフォーマンスに 及ぼす影響を調査/検証してみた ⼭⼝ 裕也 【⾮公式】JJUG CCC 2025 Spring 後夜祭 1

2.

⾃⼰紹介 山口裕也 (Yamaguchi Yuya) ウェルスナビ株式会社 SWEチーム / ソフトウェアエンジニア ウェルスナビでは ● 2023年末にウェルスナビに参画 ● Aurora MySQLのv2 → v3へのアップグレード担当していた ひとこと ● MySQL 8.4互換のAurora MySQLはいつくる? 2 @2025 WealthNavi Inc.

3.

資産運用ロボアドバイザー 「 WealthNavi 」 3 ※ ⼀般社団法⼈⽇本投資顧問業協会「契約資産状況(最新版)(2024年9⽉末現在) 『ラップ業務』『投資⼀任業』」を基にネット専業業者を⽐較 ウエルスアドバイザー 社調べ(2024年12⽉時点) ※ 画⾯はイメージです。

4.

アジェンダ 1. 検証に至った背景 2. インデックスを削除する理由 3. 検証した内容 4. インデックスを削除した検証結果 5. さいごに 4 @2025 WealthNavi Inc.

5.

1. 検証に至った背景 2. インデックスを削除する理由 3. 検証した内容 4. インデックスを削除した検証結果 5. さいごに 5 @2025 WealthNavi Inc.

6.

検証に⾄った背景 2024年に30億レコード弱なら2030年にはどうなる? 6 @2025 WealthNavi Inc.

7.

検証に⾄った背景 2024年に30億レコード弱なら2030年には100億レコードを超過する? 7 @2025 WealthNavi Inc.

8.

1. 検証に至った背景 2. インデックスを削除する理由 3. 検証した内容 4. インデックスを削除した検証結果 5. さいごに 8 @2025 WealthNavi Inc.

9.

インデックスを削除する理由 ● RDBのままでなんとかする ○ テーブルを廃⽌する ○ テーブル構成を変更する ○ パーティションを活⽤する ○ シャーティングする ○ インデックスを削除する ● RDBからNoSQLや分散SQLなどに移⾏する ○ Amazon DynamoDB ○ Aurora DSQL 9 @2025 WealthNavi Inc.

10.

インデックスを削除する理由 MySQL 8.0でInvisible Index(不可視のインデックス)が導⼊された 公式ドキュメントからの抜粋 MySQL では、不可視のインデックス (オプティマイザで使⽤されないインデックス) がサポートされ ています。 この機能は、主キー以外のインデックス (明⽰的または暗黙的) に適⽤されます。 ~~ 不可視のインデックスを使⽤すると、インデックスが必要になった場合に元に戻す必要がある破壊的 な変更を⾏わずに、クエリーのパフォーマンスに対するインデックスの削除の影響をテストできま す。 ⼤規模なテーブルの場合、インデックスを削除して再追加するとコストがかかる可能性がありま すが、インデックスを⾮表⽰にして可視にすると、⾼速なインプレース操作になります。 https://dev.mysql.com/doc/refman/8.0/ja/invisible-indexes.html 10 @2025 WealthNavi Inc.

11.

インデックスを削除する理由 インデックスのメンテナンスはinsert操作に おいて最も重い処理 であると⾔えるでしょう。それは、図8.1, 「インデックスの数に よる挿⼊のパフォーマンス変化」を⾒ても明⽩です。テーブルに 全くインデックスが ない時は、実⾏時間はほとんど分からないく らい短くなります。しかし、1つインデックスを増やしただけで実 ⾏時間は百倍近くも増えてしまいます。 さらにインデックスを増 やすと、実⾏時間はどんどん⻑くなっていきます。 https://use-the-index-luke.com/ja/sql/dml/insert 11 @2025 WealthNavi Inc.

12.

インデックスを削除する理由 12 @2025 WealthNavi Inc.

13.

インデックスを削除する理由 sys.schema_unused_indexes ビューとは 公式ドキュメントからの抜粋 これらのビューには、使⽤されていないことを⽰すイベントがないインデックスが表⽰されます。 デフォ ルトでは、⾏はスキーマおよびテーブルでソートされます。 このビューは、サーバーが稼働しており、ワークロードが代表的であるほど⻑く処理されている場合に最も 役⽴ちます。 そうしないと、このビューにインデックスが存在しても意味がない場合があります。 https://dev.mysql.com/doc/refman/8.0/ja/sys-schema-unused-indexes.html 13 @2025 WealthNavi Inc.

14.

1. 検証に至った背景 2. インデックスを削除する理由 3. 検証した内容 4. インデックスを削除した検証結果 5. さいごに 14 @2025 WealthNavi Inc.

15.

検証した内容 ● 主キーと通常のインデックス6個の計7個インデックスあるテーブルを利⽤する ○ 通常のインデックスはすべて同じデータ型の単⼀カラムである ● 10億レコードを事前にインサートしておく ● インデックスを1個ずつ削除しつつ1億レコードを挿⼊するのにかかった時間を計測す る ● ローカルPCのDocker上に⽤意したMySQLを利⽤する 15 @2025 WealthNavi Inc.

16.

1. 検証に至った背景 2. インデックスを削除する理由 3. 検証した内容 4. インデックスを削除した検証結果 5. さいごに 16 @2025 WealthNavi Inc.

17.

検証結果 インデックス数が少ない⽅がインサートの処理時間が短い 17 @2025 WealthNavi Inc.

18.

1. 検証に至った背景 2. インデックスを削除する理由 3. 検証した内容 4. インデックスを削除した検証結果 5. さいごに 18 @2025 WealthNavi Inc.

19.

さいごに 不要になったインデックスをメンテナンス(削除)する価値はあるかも ● インデックスの利⽤状況はsysスキーマから確認することができる ● インデックスを削除する前に不可視インデックスを利⽤することができる ● インデックスを削除することでインサートのコストを下げることができる 19 @2025 WealthNavi Inc.

20.

ご清聴ありがとうございました 20 @2025 WealthNavi Inc.

21.

【重要な注意事項】 ● 本資料は、断定的判断を提供するものではなく、情報を提供することのみを⽬的としており、いか なる種類の商品も勧誘するものではありません。最終的な決定は、お客様⾃⾝で判断するものと し、当社はこれに⼀切関与せず、また、⼀切の責任を負いません。 ● 本資料には将来の出来事に関する予想が含まれている場合がありますが、それらは予想であり、ま た、本資料の内容の正確性、信頼性、完全性、適時性等を⼀切保証するものではありません。本資 料に基づいて被ったいかなる損害についても、当社は⼀切の責任を負いません。また、当社は、新 しい情報や将来の出来事その他の情報について、更新⼜は訂正する義務を負いません。 ● 本資料を利⽤することによりお客様に⽣じた直接的損害、間接的損害、派⽣的損害その他いかなる 損害についても、当社は⼀切の責任を負いません。 商号等:ウェルスナビ株式会社 金融商品取引業者 関東財務局長(金商) 第2884号 加入協会:日本証券業協会 一般社団法人日本投資顧問業協会 21 @2025 WealthNavi Inc.

22.

Appendix 1 定期的にWealthNaviの開発(技術‧組織)に関する情報を発信しています。 開発者ブログ ● 技術広報に関する お問い合わせ先 ● https://zenn.dev/p/wn_engineering ブックマーク追加や記事への「いいね」していただけると嬉しいです ウェルスナビ 技術広報チーム([email protected]) 22 @2025 WealthNavi Inc.

23.

Appendix 2 ウェルスナビでは複数の開発系ポジションで採⽤を強化しています。 主な採⽤中職種 ● ● ● ● ● モバイル開発エンジニア エンジニアリングマネージャー バックエンド開発エンジニア QAエンジニア データエンジニア 採⽤情報詳細 ● 下記URL(QRコード)よりご確認ください。 https://recruit.wealthnavi.com/ 採⽤に関する お問い合わせ先 ● ● 「カジュアルに話を聞いてみたい」という温度感でも構いません。 ウェルスナビ採⽤チーム([email protected])までご連 絡お待ちしております。 23 @2025 WealthNavi Inc.