Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Nobushiro Takahara
October 19, 2023
Technology
0
370
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法に関する内容を記載しております。
Nobushiro Takahara
October 19, 2023
Tweet
Share
More Decks by Nobushiro Takahara
See All by Nobushiro Takahara
【初級・中級者向け】 Azure Database for PostgreSQL 基本
nobtak
0
510
【初級・中級者向け】 Logic Apps を使用した Azure SQL Databaseの自動スケールアップ
nobtak
0
660
Azure SQL Database への接続アーキテクチャおよび Azure内部/外部から接続する際のファイアウォール設定に関する注意点について
nobtak
0
1.1k
_初級_中級者向け__ゾーン冗長を考慮したAzure仮想マシン上にSQL_Server_Always_On可用性グループの構築について.pdf
nobtak
0
1k
Other Decks in Technology
See All in Technology
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
640
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1.1k
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
170
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
480
プロポーザルに込める段取り八分
shoheimitani
1
670
プレビュー版のDevOpsエージェントを現段階で触ってみた
ad_motsu
1
100
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Making Projects Easy
brettharned
120
6.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
740
Fireside Chat
paigeccino
41
3.8k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Code Reviewing Like a Champion
maltzj
527
40k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
160
Transcript
クエリ パフォーマンスが著しく低下した 場合の一時的な対処方法 - SQL Server / Azure SQL Database
/ Azure SQL Managed Instance -
1. はじめに 2. 一時的な対処方法 1. 統計情報の更新 2. インデックスの再構築 3. 価格レベル、サービスレベル
(仮想コア数) を変更 3. Q/A
1. はじめに ある日突然、SQL Server/Azure SQL Database に対して実行しているクエリで、 • クエリの応答が著しく低下し、コマンドタイムアウトが発生 •
データベース側の CPU 負荷が高くなり、クエリ全体のパフォーマンスが低下 のような現象が経験したことがある方も多いのではないでしょうか。
1. はじめに クエリの性能問題が発生した場合、 • 処理時間の長いクエリやCPUリソースを消費しているクエリの特定 • 問題となるクエリを特定するための情報収集 • 収集した情報から問題となるクエリの分析 (クエリの実行プランなど)
• 分析した結果から対策の実施 (クエリ内容の変更、インデックスの追加など) を実施する必要があるなど、通常 解決までに時間を要する。
1. はじめに 今回は暫定的でも、すぐに クエリの性能問題を解消できる可能性がある一時的な 対処方法 について紹介します。
2. 一時的な対処方法 一時的な対処方法として、 1. 統計情報の更新 2. インデックスの再構築 3. 価格レベル、サービスレベル (仮想コア数)
を変更 ※ Azure SQL Database/Azure SQL Managed Instance のみ を項番の低い順から実施します。
2. 一時的な対処方法 (1. 統計情報の更新) インデックス、列の統計情報が最新の状態でない場合、オプティマイザで最適なクエリ の実行プランが生成できないことにより、 • クエリのパフォーマンスが著しく低下 • クエリの実行で通常よりも多くのリソース
(CPU、メモリ、Disk I/O) を消費 などの問題が発生する可能性があります。 そのため、統計情報の更新をすることで、クエリの性能問題を解決できることが期待 できます。
2. 一時的な対処方法 (1. 統計情報の更新) 統計情報を更新する方法として、 • データベース単位で統計情報を更新 • テーブル単位で統計情報を更新 •
テーブル上のインデックスで統計情報を更新 する方法があります。
2. 一時的な対処方法 (1. 統計情報の更新:データベース単位) <データベース単位で統計情報を更新> ・ 特定のクエリではなく全体的にクエリ パフォーマンスが低下している場合 ・ どのテーブルのインデックス、列
の統計情報を更新すべきか明確に特定できてい ない場合 sp_updatestats (Transact-SQL) https://learn.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-updatestats- transact-sql?WT.mc_id=DP-MVP-5004154&view=sql-server-ver16
2. 一時的な対処方法 (1. 統計情報の更新:テーブル単位) <テーブル単位で統計情報を更新> ・ 特定のクエリのみパフォーマンスが低下している場合 ・ 該当クエリで参照しているテーブルが特定できている場合 UPDATE
STATISTICS (Transact-SQL) https://learn.microsoft.com/ja-jp/sql/t-sql/statements/update-statistics-transact-sql?WT.mc_id=DP-MVP- 5004154&view=sql-server-ver16
2. 一時的な対処方法 (1. 統計情報の更新:インデックス単位) <テーブル上のインデックス単位で統計情報を更新> ・ 特定のクエリのみパフォーマンスが低下している場合 ・ 該当クエリで参照しているテーブル、インデックスが特定できている場合 UPDATE
STATISTICS (Transact-SQL) https://learn.microsoft.com/ja-jp/sql/t-sql/statements/update-statistics-transact-sql?WT.mc_id=DP-MVP- 5004154&view=sql-server-ver16
2. 一時的な対処方法 (1. 統計情報の更新:補足) ストアドプロシージャ、パラメータ化クエリでパフォーマンス低下が発生している場合は、 • キャッシュ上のクエリの実行プランを削除 • 次回実行時に強制リコンパイル 何れかの追加作業を実施します。
2. 一時的な対処方法 (1. 統計情報の更新:補足) <キャッシュ上のクエリの実行プランを削除> ※ DBCC FREEPROCCACHE コマンドで特定の実行プランのみを削除することも可能 DBCC
FREEPROCCACHE (Transact-SQL) https://learn.microsoft.com/ja-jp/sql/t-sql/database-console-commands/dbcc-freeproccache-transact- sql?WT.mc_id=DP-MVP-5004154&view=sql-server-ver16
2. 一時的な対処方法 (1. 統計情報の更新:補足) <次回実行時に強制リコンパイル> • パフォーマンスが低下しているストアドプロシージャが特定できている場合 • パラメータ化クエリが参照しているテーブルが特定できている場合
2. 一時的な対処方法 (2. インデックスの再構築) インデックスの断片化が発生することでクエリで参照されるデータページ数が増え、 ディスク I/O 負荷が増えることでクエリの性能問題が発生する可能性があります。 インデックスの再構築を実施することで、インデックスの断片化を解消し、かつ、フル スキャン
(100%) による統計情報の作成されることで、クエリの性能問題を解消できる ことが期待できます。
2. 一時的な対処方法 (2. インデックスの再構築) <インデックスの再構築> UPDATE STATISTICS (Transact-SQL) https://learn.microsoft.com/ja-jp/sql/t-sql/statements/update-statistics-transact-sql?WT.mc_id=DP-MVP- 5004154&view=sql-server-ver16
2. 一時的な対処方法 (3. 価格レベル、サービスレベル (仮想コア数) を変更) 統計情報の更新、インデックスの再構築を実施してもクエリの性能問題が解消しなかった 場合、 • データベースに割り当てられたリソース以上のワークロードが要求されている
• クエリ内容の見直しを処理されるデータ量を減らす などの対策が必要になる可能性があります。 そのため、Azure SQL Database/Azure SQL Managed Instance の価格レベル、サービス レベル (仮想コア数) を変更することで一時的にクエリの性能問題を解消することができる 可能性があります。
2. 一時的な対処方法 (3. 価格レベル、サービスレベル (仮想コア数) を変更) <価格レベル、サービスレベル (仮想コア数) を変更> Azure
ポータル上から 価格レベル、サービス (仮想コア数) を変更
3. Q/A