Ignite / PASS で発表された Azure Arc 対応 SQL Server (Azure Arc Enabled SQL Server) の新機能となる、モニターによるメトリック収集 (パフォーマンスダッシュボード) について情報を残しておきたいと思います。
Archive for the ‘SQL Server’ tag
SQL Server / Azure SQL Update (2023/11: PASS 2023, Ignite 2023)
本日、PASS Data Community SUMMIT 2023 / Ignite 2023 が開催され、SQL Server / Azure SQL の様々な Update が発表されましたのでまとめておこうと思います。
発表の全体については、次の情報から参照することができます。
Ignite 2023
- What’s new in SQL Server and Azure SQL: 2023 Year in Review
- Power what’s next with limitless relational databases from Azure
- Ignite 2023 Book of News
PASS Data Community SUMMIT 2023
- PASS Summit 2023 ? Microsoft Keynote ? Limitless growth, limitless opportunities: Data and innovation in an AI world
- PASS Summit 2023 ? Redgate Keynote ? The New Database Landscape ? Revealing Shifts and Charting the Next Horizon
- PASS Summit 2023 ? Community Keynote ? AIOps and ChatGPT ? Prepare to Ride the Next Wave
クエリストアで取得されるロックを確認する
クエリストアにより情報が取得される仕組みについては クエリ処理 で解説が行われています。
基本的な仕組みとしてはこのドキュメントで解説されている次の図となります。
クエリ実行実のいくつかのタイミングでクエリストアの情報にアクセスがされるのですが、処理のタイミングによってはクエリストアに対してロックの取得が行われます。
実行されているワークロードによりますが、クエリストアに対して取得されるロックが同時実行性に影響を与え、クエリストアに関係するロックの解析が必要となるケースがあります。
SQL Server 2022 の blocked_report の出力内容の強化
SQL Server ではブロッキング (ロック競合) 情報を取得する方法として Blocked Process Report イベント クラス の情報を拡張イベントで取得するという手法があります。
SQL Server 2022 では、この情報に出力される内容が強化されていることに先日気づきました。
ENABLE_PARALLEL_PLAN_PREFERENCE ヒントを使用した場合に確認しておきたいポイント
SQL Server では「ENABLE_PARALLEL_PLAN_PREFERENCE」という、クエリの並列化のコストを満たしていない状態でも、並列化の指示を出すための ヒント句 がアンドキュメントなクエリヒントとして提供されています。
このクエリヒントを使用すると、シングルスレッドで実行されているクエリを並列化することができる可能性があるのですが、並列化された際に確認をしておきたいポイントがあります。
SQL Server / SQL Database Update (2023/08 中旬~9 末)
時間が取れず、直近の SQL Server ベースの環境のアップデートをまとめられていませんでしたので、SQL Server / SQL Database Update (2023/08 上旬) 以降に発表されたものをまとめておきたいと思います。
- Azure updates
- SQL Server
- Azure Arc Enabled SQL Server
- Azure Arc Enabled SQL Managed Instance
- Azure SQL Edge
SQL Server 2016 で特定のクエリの実際の実行プランを容易な操作で取得する
現在の SQL Server では、軽量クエリプロファイリングが提供されており、様々なアプローチで「実行中のクエリの実際の実行プラン」を取得する方法が提供されています。
本機能は SQL Server 2014 SP2 / SQL Server 2016 から実装が行われ、Azure SQL Database / SQL Server 2019 以降では既定で有効になっています。
この機能を活用することで、冒頭に記載した「実行中のクエリの実際の実行プラン」を取得することができます。
SQL Server で DB の管理者権限を付与した状態でデータへのアクセスを無効にする
SQL Server ではデータベースの操作を行うためには sysadmin 固定サーバーロールまたは db_owner 固定データベースロールの権限が必要となることがあります。
これらの権限はインスタンスまたはデータベースの管理者の権限が付与されるため様々な操作が可能となります。
特定の操作を可能にするため、sysadmin / db_owner の権限を付与する必要があるが、データの秘匿性を担保するためデータへのアクセスについては拒否したいというケースもあるのではないでしょうか。
本投稿では管理者の権限を付与した状態でデータへのアクセスを拒否する方法についてまとめておきたいと思います。
この方法は SQL Server だけでなく SQL Database でも使用することができます。
SQL Server のクエリのデバッグ実行について (2024-08 更新)
SQL Server ではクエリのデバッグ実行をするための T-SQL デバッガーの機能が含まれており、サポートするツールからのクエリ実行について、ステップ実行しながらデバッグをすることができます。
普段は管理用のクエリを書くことが多く、ユーザーから実行されるクエリを書くことに直接携わることは少ないのですが、ユーザーワークロードのクエリ実行で確認したいことがあり、デバッグ実行したほうが早いかなと思い、投稿時点の T-SQL デバッグの情報についてまとめてみました。
sys.dm_db_index_operational_stats と sys.dm_db_index_usage_stats の違いについて
SQL Server / SQL Database のインデックスの使用状況を確認するための代表的な情報として次の DMV があります。
どちらもインデックスの使用状況を取得することができますが、情報には特色がありますので本投稿でまとめておきたいと思います。
