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
320
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法に関する内容を記載しております。
Nobushiro Takahara
October 19, 2023
Tweet
Share
More Decks by Nobushiro Takahara
See All by Nobushiro Takahara
【初級・中級者向け】 Azure Database for PostgreSQL 基本
nobtak
0
440
【初級・中級者向け】 Logic Apps を使用した Azure SQL Databaseの自動スケールアップ
nobtak
0
570
Azure SQL Database への接続アーキテクチャおよび Azure内部/外部から接続する際のファイアウォール設定に関する注意点について
nobtak
0
1k
_初級_中級者向け__ゾーン冗長を考慮したAzure仮想マシン上にSQL_Server_Always_On可用性グループの構築について.pdf
nobtak
0
910
Other Decks in Technology
See All in Technology
さくらの夕べ Debianナイト - さくらのVPS編
dictoss
0
180
Vision Pro X Text to 3D Model ~How Swift and Generative Al Unlock a New Era of Spatial Computing~
igaryo0506
0
260
AWSのマルチアカウント管理 ベストプラクティス最新版 2025 / Multi-Account management on AWS best practice 2025
ohmura
4
200
ウォンテッドリーにおける Platform Engineering
bgpat
0
190
フロントエンドも盛り上げたい!フロントエンドCBとAmplifyの軌跡
mkdev10
2
240
AI Agentを「期待通り」に動かすために:設計アプローチの模索と現在地
kworkdev
PRO
2
380
7,000名規模の 人材サービス企業における プロダクト戦略・戦術と課題 / Product strategy, tactics and challenges for a 7,000-employee staffing company
techtekt
0
260
Amebaにおける Platform Engineeringの実践
kumorn5s
6
890
Devinで模索する AIファースト開発〜ゼロベースから始めるDevOpsの進化〜
potix2
PRO
6
2.7k
Стильный код: натуральный поиск редких атрибутов по картинке. Юлия Антохина, Data Scientist, Lamoda Tech
lamodatech
0
240
自分の軸足を見つけろ
tsuemura
2
580
似たような課題が何度も蘇ってくるゾンビふりかえりを撲滅するため、ふりかえりのテーマをフォーカスしてもらった話 / focusing on the theme
naitosatoshi
0
380
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The Pragmatic Product Professional
lauravandoore
33
6.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Code Review Best Practice
trishagee
67
18k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
How STYLIGHT went responsive
nonsquared
99
5.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
How to Ace a Technical Interview
jacobian
276
23k
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