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
350
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法
クエリ パフォーマンスが著しく低下した場合の一時的な対処方法に関する内容を記載しております。
Nobushiro Takahara
October 19, 2023
Tweet
Share
More Decks by Nobushiro Takahara
See All by Nobushiro Takahara
【初級・中級者向け】 Azure Database for PostgreSQL 基本
nobtak
0
490
【初級・中級者向け】 Logic Apps を使用した Azure SQL Databaseの自動スケールアップ
nobtak
0
620
Azure SQL Database への接続アーキテクチャおよび Azure内部/外部から接続する際のファイアウォール設定に関する注意点について
nobtak
0
1.1k
_初級_中級者向け__ゾーン冗長を考慮したAzure仮想マシン上にSQL_Server_Always_On可用性グループの構築について.pdf
nobtak
0
950
Other Decks in Technology
See All in Technology
ドキュメントはAIの味方!スタートアップのアジャイルを加速するADR
kawauso
3
390
JOAI発表資料 @ 関東kaggler会
joai_committee
1
370
浸透しなさいRFC 5322&7208
hinono
0
120
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
okana2ki
0
190
モダンな現場と従来型の組織——そこに生じる "不整合" を解消してこそチームがパフォーマンスを発揮できる / Team-oriented Organization Design 20250825
mtx2s
6
590
新規案件の立ち上げ専門チームから見たAI駆動開発の始め方
shuyakinjo
0
140
7月のガバクラ利用料が高かったので調べてみた
techniczna
3
540
ZOZOTOWNフロントエンドにおけるディレクトリの分割戦略
zozotech
PRO
18
5.5k
Webアクセシビリティ入門
recruitengineers
PRO
1
340
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
4
1.2k
人を動かすことについて考える
ichimichi
2
330
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual Localization
takmin
0
430
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Scaling GitHub
holman
462
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
820
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Being A Developer After 40
akosma
90
590k
How STYLIGHT went responsive
nonsquared
100
5.7k
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