인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
NEW
Programming

/

Back-end

JPA (ORM) 開発者向け 高性能SQL (High-Performance SQL)

リレーショナルデータベースシステムを最大限に活用しましょう!

SQL
performance-tuning
sql-query
DBMS/RDBMS

中級者のための講座です。

こんなことが学べます

  • HibernateおよびJPA分野の世界的な専門家が教える、SQLパフォーマンスチューニングと最適化のノウハウを学びます。

  • バックエンドアプリケーションとデータベース間の効率的な相互作用を考慮したSQLの作成方法を習得します。

  • ORM環境でパフォーマンスを最大化するために、JOIN、サブクエリ、CTE、ウィンドウ関数など、さまざまなSQL戦略のうちどれを選択すべきかを判断する基準を提示します。

  • Oracle、SQL Server、MySQL、PostgreSQLなど代表的なRDBMSにおける性能改善クエリ戦略を比較し、各データベースでうまく機能する、または機能しない状況を明確に示します。

  • Upsert、Mergeのような高度なクエリ技法を、多様なRDBMS環境でどのように活用するか、実務事例を中心に学ぶことができます。

  • トランザクション分離レベルの問題、ロッキング戦略、JSONデータ処理、高度なインデックス戦略など、最新のSQLトピックを取り上げ、アプリケーションのパフォーマンスを最大限に高めることができる能力を養います。

Vlad - バンドバナー

グローバル専門家に学ぶ
高性能SQLチューニング戦略

今書いているSQL、本当に最適化されていますか?

DBのパフォーマンスは、コードの最適化ではなく、「クエリ設計」で判明します。

クエリの本質を理解する瞬間、データベースが異なります。」

多くの開発者がSQLを作成し、ロジックの実装に慣れていますが、実際のデータベースのパフォーマンスに影響を与えるのはどのようにクエリを書いたのでしょうか。

結合の順序、サブクエリの位置、インデックスがどのように利用されるかに応じて、同じ結果を返すクエリも数十倍のパフォーマンスの違いを生み出します。
ただし、実行計画を読み取らずにORMが生成したSQLをそのまま書き込んだり、使い慣れたパターンだけを繰り返す場合、ボトルネックの実体は常に「深く隠されたまま」運営に負担をかけます。

すべてのアプリケーション開発者がDBAレベルの深いSQL理解を必要とするわけではありませんが、アプリケーションを開発するときに決して見逃すべきではない重要なSQLパフォーマンス技術があります。

多くの開発者がORMだけをよく知ったり、逆にSQLだけをよく知っていることが多いのですが、これら2つを有機的に組み合わせて理解して活用することは多くありません。
このレッスンでは、ORMとSQLを別々の技術ではなく互いに相乗効果を与えるためのツールとして見ていきます。

SQLは単純なデータ検索言語ではなく、データベースとパフォーマンスの意思決定のツールです。
クエリの本質を理解した後、パフォーマンスの向上はもはや感ではなく、設計の領域になります。

性能中心に設計する
SQLの考え方

「高性能SQL」講義を受講すると

機能のリストではなく、戦略的構造を設計する実用SQL

JOIN、サブクエリ、CTE、ウィンドウ関数はそれ自体よりどのように組み合わせて、いつ選択するかが実践の核心です。このレッスンは単に機能をリストしません。データ構造と要件に基づいてさまざまな戦略を比較し、その中で最適なクエリ構造を設計する実務的思考フローを訓練します

クエリのパフォーマンスを「直接取得する」学習方法

単に文法を習得するのではなく、実際のクエリを実行し、応答速度を比較してみてボトルネックが発生する点、改善される構造をライン単位で探して体感できるように設計した講義です。 PostgreSQL、MySQL、Oracleなど、さまざまな環境でも通じるSQL設計原理を中心に説明されており、特定のツールに頼らずにパフォーマンスチューニングの核心概念を身につけることができます。

トランザクションからJSONまで、高度なSQLで実務レベルアップ

ウィンドウ関数、トランザクション分離レベル、楽観的/悲観的ロック、JSON処理まで - 実践では頻繁に遭遇しますが、正しく習得するのが難しい高度なトピックを体系的にカバーします。このレッスンを通じて、単純なクエリ作成能力を超えて、
性能・同時性・データ設計まで合わせる実戦型SQL実力を備えるようになります。

学習内容

さまざまなJOIN方式とパフォーマンス最適化戦略

INNER、OUTER、NATURAL、LATERAL JOINなど、SQLのさまざまな結合方式を比較し、状況に応じた選択基準とパフォーマンスの違いを分析します。実行計画を中心にクエリ最適化フローを学習し、実際にパフォーマンスのボトルネックが発生するポイントを特定する能力を養います。

サブクエリと派生テーブルを利用したクエリ構造化

JOINとサブクエリの長​​所と短所を比較し、EXISTS、IN、ANY / ALLなど、さまざまなサブクエリ式の内部動作原理を理解します。 Derived Table、共通テーブル式(CTE)を活用して複雑なクエリを構造的に再構築し、読みやすさとパフォーマンスを同時に確保する方法を実習します。

再帰クエリと階層型データ処理方式

Recursive CTEを活用して、ツリー構造や組織図など、階層的なデータを効果的に処理する方法を学びます。再帰クエリの実行方法とパフォーマンスに関する考慮事項をまとめ、実際のビジネスロジックを実装するために必要なSQL技術を習得します。

ウィンドウ関数で複雑な分析クエリを構成する

ROW_NUMBER、RANK、DENSE_RANK、LAG/LEADなどのウィンドウ関数を活用して、集計、ソート、ランクの取得など、複雑な分析ロジックをSQLで実装します。 WindowsフレームとPARTITION BYの内部動作を理解し、パフォーマンスを低下させることなくデータを集計する高度な技術を実践します。

実務でよく使われるSQL活用技法

UpsertとMergeの構文を活用して挿入と更新を同時に処理する方法を習得し、Pivo​​t/Unpivotを介してデータの形を柔軟に変形する手法を学習します。また、SQLの実行順序を正確に理解し、さまざまなページネーション方式の動作原理を習得し、クエリフローの理解度を高めます。

トランザクションとJSON処理までの高度なSQL

ACID特性とトランザクション分離レベルに基づいた並行性制御技術を習得し、悲観的/楽観的ロック戦略を比較します。 JSONデータ型をSQLで処理する方法も一緒に扱い、現代的なデータモデルに対応できる拡張されたSQL能力を備えています。

こんな方に
おすすめです!

学習対象は
誰でしょう?

  • ORMは使うけど、性能改善への欲求がある方

  • SQLチューニングはDBAの方が担当しており、SQLのパフォーマンス改善経験を切望している方

  • SQLは書けるものの、性能改善の方法や戦略の選択基準が不足していると感じる方

  • 実務で直面する複雑なクエリの問題を解決するセンスを磨きたい方

  • JOIN、CTE、トランザクション、JSONなど、高度なSQLのトピックまで体系的に学びたい開発者

前提知識、
必要でしょうか?

  • JAVA、Spring Framework の基本的な使い方

  • 基本的なSQL作成能力

  • リレーショナルデータベースの使用経験

こんにちは
です。

982

受講生

28

受講レビュー

4.6

講座評価

2

講座

My name is Vlad Mihalcea, and I’m a Java Champion. I wrote the High-Performance Java Persistence book, which became one of the best-selling Java books on Amazon.

 

I'm currently developing the amazing Hypersistence Optimizer, and in my free time, I develop various open-source projects (e.g., Hypersistence Utils and FlexyPool) and answer questions on StackOverflow.

 

저는 Java 챔피언이자 Hibernate ORM 프로젝트의 주요 기여자입니다. Hypersistence Optimizer 도구를 만들었으며, 이 도구는 애플리케이션 구성과 매핑을 스캔하여 데이터 액세스 계층 속도를 향상시키는 데에 필요한 변경 사항을 알려주는 도구입니다.

StackOverflow에서 Hibernate, Java, JPA 태그에 관련된 수천 개의 질문에 답변하며 골드 배지를 획득했습니다.

흥미로운 것을 발견하면 개인 블로그에 공유하는 것을 좋아합니다. 그는 오픈 소스 소프트웨어를 신뢰하며, 모든 개발자가 어떤 방식으로든 참여해야 한다고 생각합니다.

적절한 도구를 찾지 못하면 Hypersistence UtilsFlexyPool과 같은 새로운 오픈 소스 프로젝트를 시작하기도 합니다.

カリキュラム

全体

79件 ∙ (7時間 37分)

講義資料(こうぎしりょう):

授業資料
  • 1. ソースコード

講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価を受けていない講座です。
みんなに役立つ受講レビューを書いてください!