都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

SQL, Server, のチューニングについてまとめてみる の検索結果:

Summary of SQL Server tuning - Part 3 - (How much performance does it improve?)

…ummary of SQL Server Tuning - Part 1 - (Examine indexes) - 都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo "Let's start with a quick way to see how many indexes are missing for a query that executing the against …

Summary of SQL Server Tuning - Part 2 - (Filtered Index)

…that the "SQL Server Tuning" series ended with "Part 1” lol. So I thought it would be a good idea to end with Part 1, so I'd like to put together Part 2 (Too random ….). In this post, I explain about "filtered index". This feature added in …

Summary of SQL Server Tuning - Part 1 - (Examine indexes)

…tuning of SQL Server. First, let's look at how to extract queries that don't use indexes, SQL Server tuning makes heavy use of dynamic management views that start with "dm_*". At this time, mainly use the following three tables to find quer…

年末に記事書いてみる / I'll write an article at the end of the year.

The year is almost over. There weren't many articles this year, either. Next year will be a year of new challenges, so I will try my best to write articles next year. Have a happy new year, everyone!Following article is still being read. Tu…

SQL Server のチューニングについてまとめてみる - その 25 - ( パーティションを有効に使ってみる )

…ン インデックスは、SQL Server の Enterprise Edition、Developer Edition、および Evaluation Edition でのみ使用できます。 管理と拡張性だけではなく、WHERE 句の条件として指定することによりパフォーマンスが飛躍的に向上します。それでは早速実験してみましょう。パーティション分割されたテーブル(パーティションID 1から20 まで存在するテーブル)にクエリを投げてみます。パーティションが 20 存在し、アクセスし…

SQL Server のチューニングについてまとめてみる - その 24 - ( これもチューニングについてまとめてみるだった )

一応、その 24 でww ryuchan.hatenablog.com ここ二日寝続けたので、腰痛が悪化...(´;ω;`)カラー版 9割の腰痛は自分で治せる (中経の文庫)作者: 坂戸孝志出版社/メーカー: KADOKAWA/中経出版発売日: 2013/12/17メディア: 文庫この商品を含むブログを見る一回3秒 これだけ体操 腰痛は「動かして」治しなさい (講談社+α新書)作者: 松平浩出版社/メーカー: 講談社発売日: 2016/07/21メディア: 新書この商品を含む…

SQL Server のチューニングについてまとめてみる - その 23 - ( 色々な観点が必要です。 )

…件数が多いことから SQL Server はクラスターシークから Parallel 処理に切り替えますので、その後の処理もすべて Parallel 処理に切り替わりますので、余計な CPU コストも使用することになってしまいます。 すこしトリッキーかもしれませんが、下記のように変更するのも一つの手法です。 ;WITH SalesOrderDetail_CTE( SalesOrderID, SalesOrderDetailID, CarrierTrackingNumber, O…

今年書いた記事を振り返ってみる

…薄めになったりww SQL Server とあまり関係ない記事増やしたりww 来年は記事数を目標にするのはやめます。ryuchan.hatenablog.comryuchan.hatenablog.com シアトルは良い思い出でになりました。色々な事由により、もう行くことはないような気もします。(環境が変われば...)ryuchan.hatenablog.comryuchan.hatenablog.comryuchan.hatenablog.comryuchan.hatena…

SQL Server のチューニングについてまとめてみる - その 22 - ( これだけ分かっていればいいと思われる記事をまとめてみる )

…をまとめてみます。 SQL Server のチューニングについてまとめてみる - その1 - ( インデックスの調査 )ryuchan.hatenablog.comsys.dm_db_missing_index_group_stats、sys.dm_db_missing_index_groups および sys.dm_db_missing_index_details を使った不足インデックスの調査です。 SQL Server のチューニングについてまとめてみる - その20 …

SQL Server のチューニングについてまとめてみる - その21 - ( あるプロジェクト向けに書いてみた )

最近、SQL Server の診断をする機会が増えてきています。時間がない中でやっていることもあり、超簡易診断しかできていませんが....その方法について説明します。 データベースを作成します。 とりあえず 2G くらいにしておきましょう。 データベースが作成されました。 下記のクエリを SQL Server Management Studio で実行します。 USE [データベース名] SELECT st.text, qp.query_plan, qs.* INTO Per…

SQL Server のチューニングについてまとめてみる - その20 - ( きちんとパラメータ化してみる )

… 色々なシステムの SQL Server に関するレビューをしていると、まだまだパラメータ化されていないクエリが多数存在します。それによる影響としては、 クエリのパターンが毎回変化するため、その都度 SQL Server 上でリコンパイルが走ってしまい、サーバに負荷をかけてしまう。 キャッシュプランがクエリのパターン数分キャッシュされることになり、キャッシュとして無駄なものをサーバに抱えてしまう。 などが挙げられます。 よくあるパターンとしては、下記のような関数を作成し、クエ…

SQL Server のチューニングについてまとめてみる - その19 - ( プランがちゃんと再利用されているか確認してみる )

…の再利用率が悪いと SQL のコンパイルが頻繁に実行されてしまい、その結果 CPU 使用率が高くなってしまいます。私の経験ではコンパイルに要した時間は最高で35秒です。DB サーバの負荷が異常に上がってしまい、変な汗をかいた記憶がありますwww 下記の記事で少し触れています。 ryuchan.hatenablog.com さて、クエリの再利用率ですが sys.dm_os_performance_counters を使用します。( カウンターは、Batch Requests/s…

SQL Server のチューニングについてまとめてみる - その18 - ( とあるプロジェクト向けメモ )

下記の資料は、SQL Server 2008 ベースですが、SQL Server 2012 以上のエディションにも問題なく適用できる手法です。 The Data Loading Performance Guide パーティションテーブルへのデータインポートであれば、下記の部分から参考になります。 Bulk Loading a Partitioned TableBulk loading into partitioned tables provides the fastest p…

SQL Server のチューニングについてまとめてみる - その17 - ( FOR XML PATH の連結をもう少し高速化してみる )

… @str これを、SQL Server 2012 からサポートされた CONCAT 関数を使用すると下記の通りになります。 DECLARE @str NVARCHAR(MAX) SET @str = ( SELECT CONCAT( 'a=', CAST( OrderTrackingID AS NVARCHAR ), ',b=', CAST( SalesOrderID AS NVARCHAR ) , ',c=', CarrierTrackingNumber ) FROM S…

SQL Server のチューニングについてまとめてみる - その16の補足 - ( TABLOCK の動作を確認してみる )

またも、移動時間に記事を書きます。前回の記事に対して補足です。 ryuchan.hatenablog.com データインポート時は下記のようにしたほうがよさそう。 Sales.OrderTracking のクラスタ化インデックスおよび非クラスタ化インデックスをすべて削除する。 DBCC TRACEON(610,-1) を実行する。 bcp AdventureWorks2016CTP3.Sales.OrderTracking in "C:\exportfile.txt" -c …

SQL Server のチューニングについてまとめてみる - その16 - ( BCP とか、一括系の操作を高速化してみる )

…alhost -T SQL Server Management Studio で下記のコマンドを実行し、Sales.OrderTracking のデータを消去します。 TRUNCATE TABLE Sales.OrderTracking 先ほどエクスポートしたデータをインポートします。下記のコマンドをコマンドプロンプトで実行します。 bcp AdventureWorks2016CTP3.Sales.OrderTracking in "C:\exportfile.txt" -c…

今週のお題「マイベストエントリー」 を書いてみた

今週のお題「マイベストエントリー」 はてなブログのランキングだと、下記の記事が一番読まれてそう。 ryuchan.hatenablog.com DSC-QX10のC#でのプログラミングも結構読まれてる。 ryuchan.hatenablog.com ryuchan.hatenablog.com 個人的には、下記の記事が好きです。 ryuchan.hatenablog.com りんなの記事もいいかな。 ryuchan.hatenablog.com ryuchan.hatenab…

統計情報を更新すると、『 クエリはリコンパイルされるよね普通 』と思いつつ、なんかうまくいってない感じがすごくするので、sp_recompile を実験してみる

…eries. 通常、SQL が発行されるとプランがキャッシュされます。過去のブログでキャッシュプランの確認方法を書いていますので、確認してみてください。SQL Server のチューニングについてまとめてみる - その7 - ( プランキャッシュの状態を確認する ) - 都内で働くSEの技術的なひとりごとryuchan.hatenablog.com 実験するまでもないんですが、質問される可能性があるので実験しますー。まず、下記のような何の変哲もないクエリを実行してみます。 D…

SQL Server 勉強会のネタとタイムスケジュールを考えてみる

…敵♪ 近々、社内で SQL Server の勉強会を実施するのですが、そろそろ勉強会の資料を作らないといけません。TIPS 的なものにしたいと思うので、ブログからネタを集めたいと思います。ゼロから考えるのは、時間的にちょっと辛い...便利な SQL の関数とか、構文とか、その他色々まとめてみる - その1 ( OFFSET n ROWS - FETCH NEXT n ROWS ONLY ) - - 都内で働くSEの技術的なひとりごとryuchan.hatenablog.com…

SQL Server のチューニングについてまとめてみる - その15 - ( 無駄なキャッシュプランを探してみる )

…novo with SQL Server 2014 です。 試してみる 早速試してみましょう。無駄にキャッシュされている可能性が高い sys.dm_exec_cached_plans の usecounts が一回のものを抽出します。 SELECT [SQL文] = st.text, [SQLタイプ] = cp.objtype, [キャッシュ容量] = cp.size_in_bytes FROM sys.dm_exec_cached_plans cp CROSS APPLY …

インデックスの統計内容について参照してみる

…novo with SQL Server 2014 です。 試してみる インデックス統計の情報を参照するために、sys.stats および sys.dm_db_stats_properties を使用してクエリを作成してみましょう。下記のクエリを SQL Server Management Studio で実行してみましょう。 SELECT [テーブル名] = t.name, [統計名] = s.name, [統計の自動作成] = s.auto_created, [NOREC…

こんな時、RECOMPILE したほうがいいよねと思って記事書いてみた

…みたいと思います。 SQL Server のチューニングについてまとめてみる - その7 - ( プランキャッシュの状態を確認する ) - 都内で働くSEの技術的なひとりごと SQL Server のチューニングについてまとめてみる - その7 - ( プランキャッシュの状態を確認する ) - 都内で働くSEの技術的なひとりごと クエリの内容は下記の通りです。 SELECT [SQL文] = SUBSTRING(st.text, (qs.statement_start_off…

SQL Server のチューニングについてまとめてみる - その14 - ( 少しでもオーバーヘッドを少なくしてみる )

… Azure 上の SQL Server 2014 を使用します。 早速試してみる 以下のクエリを実行してみましょう。 select * from [Production].[WorkOrder] 上図の下の画像で書きのように出力されています。 (72591 row(s) affected) これは SQL Server がクエリ実行時に何件ヒットしたか、更新したかなどをクライアント側へ通知しています。これもネットワークのオーバーヘッドとなってしまうので、無効化したほうがいい…

SQL Server のチューニングについてまとめてみる - その13 - ( その 12 の補足 )

…て少し触れました。 SQL Server のチューニングについてまとめてみる - その12 - ( SQL Server のメモリ関係で必要なカウンタを抽出してみる ) - 都内で働くSEの技術的なひとりごと SQL Server のチューニングについてまとめてみる - その12 - ( SQL Server のメモリ関係で必要なカウンタを抽出してみる ) - 都内で働くSEの技術的なひとりごと 上記の記事では、SQL Server Management Studio を使用…

SQL Server のチューニングについてまとめてみる - その12 - ( SQL Server のメモリ関係で必要なカウンタを抽出してみる )

…マンス計測で必要な SQL Server のパフォーマンスカウンタ ( sys.dm_os_performance_counters ) をまとめていきたいと思います。今回はメモリー関連です。 使用する環境を説明してみる 久しぶりの Microsoft Azure です。特に意味ないですが、A7 マシン上の SQL Server 2014 を使用したいと思います。 メモリー関連のカウンタをまとめてみる メモリー関連のパフォーマンスカウンタは、かなりの数がありますので、その中で…

データベースファイルが格納されているドライブの残容量をチェックしてみる

…てみる 開発環境の SQL Server って容量監視とか意外とやらないですよね。プログラムを組んでやってしまいがちですが、SQL Server の動的管理関数を使ったクエリでも容量監視はできますので、紹介したいと思います。 使用する環境を説明してみる Microsoft Azure 上の SQL Server 2014 を使います。 実験してみる 動的管理関数である、sys.dm_os_volume_stats (Transact-SQL) を使ってみましょう。使い方は下記…

SQL Server のチューニングについてまとめてみる - その11 - ( dm_exec_query_optimizer_info でチューニングの効果を確認してみる )

…(Transact-SQL) を使用して最適化情報を取得したいと思います。 使用する環境を説明してみる 久しぶりに Azure 環境を使います。SQL Server 2014 です。 早速ためしてみる 下記のクエリを SQL Server Management Studio で実行します。 select * from sys.dm_exec_query_optimizer_info 個別のステートメント (クエリ) の最適化ごとの平均経過時間 (秒単位)や内部コスト単位での、…

はてな記法は最高なので、今さらながら紹介してみた

…て思い知りました。 SQL Server のチューニングについてまとめてみる - その10 - ( 実行プランの StatementText の中に、調査用に使用するための文字列を埋め込んでみる ) - 都内で働くSEの技術的なひとりごと SQL Server のチューニングについてまとめてみる - その10 - ( 実行プランの StatementText の中に、調査用に使用するための文字列を埋め込んでみる ) - 都内で働くSEの技術的なひとりごと 下記のような記号で …

SQL Server のチューニングについてまとめてみる - その10 - ( 実行プランの StatementText の中に、調査用に使用するための文字列を埋め込んでみる )

…とを説明してみる 『SQL Server のチューニングについてまとめてみる』も今回で10回目になりました。それを記念してブログを『はてな記法 』で書いてみます。( 何で記念に『はてな記法』なのかは意味不明ですが... ) 今回は、実行プラン中に独自文字列を保持するようにしてみます。 使用する環境を説明してみる 私の Windows 8.1 Update1、64ビット 上で 動作している SQL Server 2014 を使用します。データベースは、AdventureWork…

SQL Server のチューニングについてまとめてみる - その9 - ( TempDB の動きも気にしてみる )

…上で 動作している SQL Server 2014 です。使用するデータベースは、AdventureWorksDW2014 です。 実際にためしてみる では、早速下記のクエリを SQL Server Management Studio で実行してみましょう。( なんか適当なクエリになってます。 ) 1ページあたりの容量は 8KByte なので、memory_usage、user_objects_alloc_page_count、user_objects_dealloc_pag…