Java ORM標準JPAプログラミング - 基本編
初めてJPAに触れたり、実務でJPAを使用したりして基本理論が足りない方 JPAの基本理論をしっかりと学習することで、初心者でも実務で自信を持ってJPAを使用することができます。


キム・ヨンハンの実践データベースパフォーマンス最適化講座オープン
皆さん、こんにちは。
キム・ヨンハンの実践データベースパフォーマンス最適化講座がついに開講しました。
オープンを記念して、データベースロードマップを30%割引しています 🙂
タイトル: キム・ヨンハンの実戦データベース - パフォーマンス最適化、実行計画とインデックス完全攻略
講義数: 104
講義時間: 21時間10分
そして、データベースロードマップを含むバックエンドロードマップの全講座修了を記念して、キム・ヨンハンのバックエンドマスターパスを期間限定でご紹介いたします。
マスターパスリンク: https://inf.run/uixFt
<講座の特徴>
この講座の最も重要な特徴は、実務に近い実際の数百万〜数千万件のデータをデータベースに保存した後に、私と一緒に一つずつチューニングを重ねていくことです。その結果、数秒かかっていたクエリを0.01秒単位という極限まで最適化する実践的な方法を学ぶことです。
<講義内容>
開発時には順調に動作していたクエリが、データが蓄積するにつれて突然遅くなってしまうケースがあります。
最初は0.1秒で実行されていたクエリが、いつの間にか1秒、10秒と実行時間が長くなり、深刻な場合にはサービス障害につながることもあります。
このような状況下で、私たちは次のような疑問を抱くことになります。
クエリが遅い原因はどこから探せばいいのだろうか?
実行計画に表示される数多くの項目は何を意味するのだろうか?
インデックスを作成したのに、なぜ利用されないのだろうか?
複合インデックスはどのような順序で設計すべきだろうか?
インデックスが多いほどパフォーマンスは向上するのだろうか?
Using filesortはなぜ発生し、どのように排除すればよいのでしょうか?
ページングでページが進むにつれてクエリが遅くなる理由は何だろうか?
ジョイン順序は誰が決めるのか、どうすれば最適化できるのだろうか?
オプティマイザはなぜ予想と異なる実行計画を選択するのか?
データベースのパフォーマンス問題は、単にSQLの文法に精通しているからといって解決できる問題ではありません。
データベースがデータをどのように格納し、インデックスをどのように探索し、オプティマイザがどのような基準で実行計画を選択するのかを理解する必要があります。
この講座では、遅いクエリを勘に頼って修正するのではなく、実行計画と実際の測定結果を根拠に原因を特定し、解決する方法を扱います。
まず、MySQLとInnoDBの内部構造を理解し、EXPLAINとEXPLAIN ANALYZEを通じて、クエリが実際にどのように実行されるのかを分析します。
その後、数百万件の実戦データを使用して直接パフォーマンス問題を再現し、解決します。
フルテーブルスキャンをインデックススキャンに改善
複合インデックスのカラム順序の決定
B+木とインデックスの内部動作の理解
クラスタ化インデックスとセカンダリインデックスの分析
Using filesortの原因診断と早期終了
ICPとカバリングインデックスを活用したパフォーマンス改善
インデックススキップスキャン、インデックスマージ、MRR分析
オプティマイザとヒストグラムの活用
結合順序とランダムアクセスの最適化
ソート、ページング、グルーピングのパフォーマンス改善
ストリーミング集計と事前集計テーブルの設計
単に「ここにインデックスを追加してください」と結論だけを伝えるわけではありません。
なぜそのインデックスが必要なのか、データベース内部でどのような処理が行われているのか、そして実行計画と実際の実行時間がどのように変化するかを段階的に確認していきます。
さらに、特定のクエリ一つだけを高速化する方法にとどまらず、実務において継続的に新たなパフォーマンス問題を分析・解決するための基礎原理を深く掘り下げて解説します。
<本講座を通じて得られるもの>
1. 実行計画を読み解く能力
EXPLAINおよびEXPLAIN ANALYZEの主要項目を理解し、実行計画から遅いクエリの原因を特定できるようになります。
2. インデックスを直接設計する能力
単一のカラムにインデックスを追加するだけのレベルを超え、データの分布やクエリ条件に最適な複合インデックスを設計できるようになります。
3. データベースの内部動作の理解
B+Tree、クラスタ化インデックス、セカンダリインデックス、ランダムアクセスなど、インデックス内部の核心的な原理を理解できるようになります。
4. 実践パフォーマンス最適化の経験
数百万件のデータを用いて遅いクエリを自ら分析し、数十倍から数百倍に改善していくプロセスを体験します。
5. 運用環境の問題を解決する基準
インデックスの利点だけでなく、書き込みパフォーマンス、ストレージ容量、運用コストまで考慮した上で、状況に合った最善の方法を選択できるようになります。
<全体学習カリキュラム>
講義の紹介と授業資料
実習環境構築
データベースパフォーマンスとMySQLアーキテクチャ
実行計画 1 - EXPLAIN 完全マスター
実行計画 2 - ANALYZE完全攻略
実践チューニング1 - フルテーブルスキャンの診断と複合インデックスの基礎
インデックス内部構造 1 - B+Tree
インデックス内部構造 2 - クラスタード、セカンダリインデックス
実践チューニング2 - Using filesort診断と早期終了
インデックス応用 1 - ICP、カバリング、スキップスキャン
インデックス応用 2 - マージ、MRR、新機能、ヒント、運用
オプティマイザとヒストグラム
ジョイン最適化
実践チューニング3 - 結合のランダムアクセス診断とカバリングインデックス
ソート、ページング、グルーピングの最適化
実践チューニング 4 - ストリーミング集計と事前集計テーブル
次に、
データベースのパフォーマンス最適化は、単にいくつかのSQLチューニング技術を暗記する過程ではありません。
データがどのような経路で参照されるかを理解し、実行計画に基づいてボトルネックを特定し、複数の選択肢の中から最も適切な解決策を決定していくプロセスです。
この講座を通じて、遅いクエリに直面した際、やみくもにインデックスを追加するのではなく、原因を正確に分析し、自ら解決できる開発者へと成長していただければ幸いです。
実務において数多くのパフォーマンス問題を解決し、積み重ねてきた経験と、長年の試行錯誤の末の成果を、今回の講義に込めました。
皆様の成長の一助となれば幸いです。
ありがとうございます。




