SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

検証用 SQL Server に導入するツール

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 8th, 2022 at 9:51 am

Posted in SQL Server

Tagged with

SQL Server のベストプラクティスについて公開されているドキュメント

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 15th, 2022 at 9:14 am

Posted in SQL Server

Tagged with

SQL Server Sample Databases

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

6月 16th, 2022 at 9:30 am

Posted in SQL Server

Tagged with

SQL Server-based environment updates

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 22nd, 2022 at 10:53 am

Tools and Documents for fault analysis in SQL Server-based environments

leave a comment

Tools and Documents for fault analysis in SQL Server-based environments.

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 7th, 2021 at 11:02 am

SQL Server / SQL Database アーキテクチャ ドキュメント

leave a comment

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 13th, 2020 at 11:36 pm

Posted in SQL Server

Tagged with

Microsoft Fabric の Synapse Data Warehouse の特性を把握するためのドキュメント

leave a comment

Microsoft Fabric の Synapse Data Warehouse は、OneLake に対して T-SQL のエンドポイントを提供し、T-SQL による既存データの参照 (SELECT) だけでなく、テーブルの作成 (CREATE TABLE) / 更新系 (INSERT / DELETE / UPDATE) を可能とする機能となっています。

Synase Analytics の Dedicated SQL Pool と Serverless SQL Pool と近しい機能がいくつか実装されています。(Data Warehouse に対してエラーが発生した際に「Synapse SQL」というメッセージが返ってくることがあるため、Data Warehouse でも Synapse の Serverless SQL プールの分散クエリのアーキテクチャは採用されているかと思いますが)

大きな変更点として実データを格納するデータストアとして、SQL Server ベースのデータベースではなく、Delta Lake が採用されているという点があるのではないでしょうか。

厳密には SQL Server のクエリエンジンを使用するため SQL Server ベースのデータベース相当のものも一部存在しているとは思いますが。

Fabric の Data Warehouse の特性を把握するために、一読しておく必要があるドキュメントとしてはどのようなものがあるかをまとめておきたい思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 26th, 2024 at 8:41 am

Posted in Microsoft Fabric

Tagged with

SQL Server のフィルター選択されたインデックスの利用について

leave a comment

SQL Server では フィルター選択されたインデックス (フィルター化インデックス) というインデックスを作成することができます。

このインデックスはインデックスの作成を行う際に、以下のクエリのように、インデックス作成時に WHERE 句を指定することで、特定の範囲のデータのみが含まれたインデックスを作成することができます。

CREATE NONCLUSTERED INDEX [NCIX_accesslog2_01] ON [frontdoor].[accesslog2]
(
	[time] ASC
)
WHERE ([time]>='2020-01-01' AND [time]<'2021-01-01')

フィルター選択されたインデックスは、特定のデータ範囲のみがインデックスに含まれますので次のようなメリットがあります。

  • インデックスで使用されるストレージサイズの削減
  • フィルター外のデータを追加 / 変更する場合のインデックス更新コストの削減
  • 該当データ範囲で Index Scan が発生した場合の、Scan コストの削減

特定のデータ範囲の検索向けに作成するインデックスとして便利な機能となるのですが、作成したインデックスが使用されるかどうかについては考慮が必要な点がありますので、本投稿で触れておきたいと思います。

フィルター選択されたインデックスの詳細な情報については次のドキュメントが参考となります。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 25th, 2024 at 10:34 pm

Posted in SQL Server

Tagged with

ストアドプロシージャのリコンパイルを同時実行性の低下を抑えて誘発させる

leave a comment

ストアドプロシージャを明示的にリコンパイルさせる方法として ストアド プロシージャの再コンパイル に記載されている sp_recompile を使用するという方法があります。

ストアドプロシージャはコンパイル時に指定されたパラメーターによって実行プランが生成されるため、コンパイル時に指定されたパラメーターが大多数の実行に対してマイノリティな設定の場合、頻繁に実行するクエリに対しては効率の悪い実行プランが生成されることがあります。

このような場合は、ストアドプロシージャをリコンパイルさせることで新しい実行プランを生成することがあります。

このリコンパイルを同時実行性の低下をできるだけ抑えて実行するにはどのような方法が考えられるでしょうか。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 24th, 2024 at 10:53 pm

Posted in SQL Server

Tagged with

SSMS のクエリ実行時に ARITHABORT を OFF にするだけではアプリケーションから実行しているクエリと同一にならなかった

leave a comment

SSMS からクエリを実行した場合と、アプリケーションからクエリを実行した場合の違いとして、Qiita で書いた アプリから動かすと遅いが SSMS から動かすと速いのは ARITHABORT の違いという情報の動作を理解する というような動作があります。

SET オプションが異なっていると、異なる実行プランとしてキャッシュが行われるため、SSMS とアプリケーションで同一のオプションを使用するというのが記載した内容となります。

この投稿では、「SET ARITHABORT OFF」を SSMS から実行し、アプリケーションと同一の SET オプションの状態とすることで SSMS とアプリケーションで同一のプランキャッシュを使用していました。

クエリの多重実行と SSMS から実行したクエリで同一のプランキャッシュを使用したかったので「SQLQueryStress」と「SET ARITHABORT OFF に設定した SSMS」でクエリを実行したところ、同一のプランキャッシュが使用されないという事象が発生しました。

そこで、同一の SET オプション以外にどのような要因が同一のプランキャッシュが使用されないことにつながっているのかを確認してみました。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 24th, 2024 at 7:44 pm

Posted in SQL Server

Tagged with

SQL Server のコンパイル時間とコンパイルの CPU 時間の関係について

leave a comment

SQL Server ではコンパイル時間を確認する方法としては次のような方法があります。

これらの情報からクエリのコンパイルにかかった時間を確認することができるのですが、値を正しく把握しておかないとコンパイル時間についてミスリードをする可能性があります。

Read the rest of this entry »

Written by Masayuki.Ozawa

4月 23rd, 2024 at 9:34 pm

Posted in SQL Server

Tagged with