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
300
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法に関する内容を記載しております。
Nobushiro Takahara
October 19, 2023
Tweet
Share
More Decks by Nobushiro Takahara
See All by Nobushiro Takahara
【初級・中級者向け】 Azure Database for PostgreSQL 基本
nobtak
0
370
【初級・中級者向け】 Logic Apps を使用した Azure SQL Databaseの自動スケールアップ
nobtak
0
510
Azure SQL Database への接続アーキテクチャおよび Azure内部/外部から接続する際のファイアウォール設定に関する注意点について
nobtak
0
950
_初級_中級者向け__ゾーン冗長を考慮したAzure仮想マシン上にSQL_Server_Always_On可用性グループの構築について.pdf
nobtak
0
830
Other Decks in Technology
See All in Technology
「ばん・さく・つき・たー!」にならないためにSHIROBAKOから 学んだこと
ysknsid25
3
650
スタサプ ForSCHOOLアプリのシンプルな設計
recruitengineers
PRO
2
410
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
350
[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービスを活用した負荷テスト・障害テスト
naoto_yasuda
0
140
【shownet.conf_】ローカル5Gを活用したウォーキングツアーの体感向上
shownet
PRO
0
320
Rubyはなぜ「たのしい」のか? / Why is Ruby a programmers' best friend? #tqrk15
expajp
4
1.8k
【shownet.conf_】放送局とShowNetが共創する、未来の放送システム ~Media over IP 特別企画の裏側~
shownet
PRO
0
330
O'Reilly Superstream: Building a RAG App to Chat with Your Data
pamelafox
0
110
Hazard pointers with reference counter
ennael
PRO
0
120
【shownet.conf_】トポロジ図の歩き方
shownet
PRO
0
480
エムスリー全チーム紹介資料 / Introduction of M3 All Teams
m3_engineering
1
270
SQLによるオブザーバビリティの進化とClickHouseの実力
mikimatsumoto
0
160
Featured
See All Featured
KATA
mclloyd
27
13k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
1
280
Six Lessons from altMBA
skipperchong
26
3.4k
Thoughts on Productivity
jonyablonski
67
4.2k
Large-scale JavaScript Application Architecture
addyosmani
509
110k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
Making the Leap to Tech Lead
cromwellryan
130
8.8k
Designing with Data
zakiwarfel
98
5.1k
Building Applications with DynamoDB
mza
90
6k
Automating Front-end Workflow
addyosmani
1365
200k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
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