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
Nobushiro Takahara
October 19, 2023
Technology
0
360
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法に関する内容を記載しております。
Nobushiro Takahara
October 19, 2023
Tweet
Share
More Decks by Nobushiro Takahara
See All by Nobushiro Takahara
【初級・中級者向け】 Azure Database for PostgreSQL 基本
nobtak
0
500
【初級・中級者向け】 Logic Apps を使用した Azure SQL Databaseの自動スケールアップ
nobtak
0
630
Azure SQL Database への接続アーキテクチャおよび Azure内部/外部から接続する際のファイアウォール設定に関する注意点について
nobtak
0
1.1k
_初級_中級者向け__ゾーン冗長を考慮したAzure仮想マシン上にSQL_Server_Always_On可用性グループの構築について.pdf
nobtak
0
970
Other Decks in Technology
See All in Technology
[re:Inent2025事前勉強会(有志で開催)] re:Inventで見つけた人生をちょっと変えるコツ
sh_fk2
1
1.2k
abema-trace-sampling-observability-cost-optimization
tetsuya28
0
460
SOTA競争から人間を超える画像認識へ
shinya7y
0
690
InsightX 会社説明資料/ Company deck
insightx
0
200
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
200
20251102 WordCamp Kansai 2025
chiilog
1
530
NOT A HOTEL SOFTWARE DECK (2025/11/06)
notahotel
0
2.9k
マルチエージェントのチームビルディング_2025-10-25
shinoyamada
0
250
AI連携の新常識! 話題のMCPをはじめて学ぶ!
makoakiba
0
180
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
2
310
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
180
어떤 개발자가 되고 싶은가?
arawn
1
430
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Faster Mobile Websites
deanohume
310
31k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
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