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

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

チューニング の検索結果:

実行プランの読み方をまとめてみる - その1 ( 述語 ( Predicates ) とシーク述語 ( Seek Predicates ) について説明してみる ) -

…としたパフォーマンスチューニングが出来ていない状況が多く見受けられます。オペレータが、Index Seek になっていてもきちんとプロパティを参照して、問題ないか見極めましょう。※SQL Server 2016 の本が、2016/6/15 販売ということは...SQL Server 2016 High Availability Unleashed (includes Content Update Program)作者: Paul Bertucci出版社/メーカー: Sams …

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

…は、実際の運用環境でチューニングした手順(現象発生~調査~SQLチューニング、インデックスチューニング~効果測定)を解説するようにします。それと合わせて、下記記事の内容を合わせて説明しますー。ryuchan.hatenablog.com ryuchan.hatenablog.com ryuchan.hatenablog.com アジェンダは下記の通り。 はじめに(13:30~13:45) Session1(13:45~14:45) 休憩(14:45~15:00) Sessio…

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

…L Server のチューニングについてまとめてみる - その7 - ( プランキャッシュの状態を確認する ) - 都内で働くSEの技術的なひとりごとryuchan.hatenablog.com 実験するまでもないんですが、質問される可能性があるので実験しますー。まず、下記のような何の変哲もないクエリを実行してみます。 DECLARE @ParmDefinition nvarchar(500); SET @ParmDefinition = NULL EXECUTE sp_ex…

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

…L Server のチューニングについてまとめてみる - その6 - ( CONVERT_IMPLICIT、暗黙の型変換の怖さを知ろう ) - 都内で働くSEの技術的なひとりごとryuchan.hatenablog.com SQL Server のチューニングについてまとめてみる - その10 - ( 実行プランの StatementText の中に、調査用に使用するための文字列を埋め込んでみる ) - 都内で働くSEの技術的なひとりごとryuchan.hatenablog.…

DBCC TRACEON を動いているシステムに設定しちゃうので、ちゃんと MSDN とか読んでみてやり方を予習してみる

…。先日、DBMS のチューニングで、NO STATS が結構発生していたので、列統計が存在しないものを一気に作成しました。そこで実際発生したのが、複雑かつ超絶に長いクエリのコンパイルによるクエリタイムアウトとパラメータスニッフィングが発生しました。(なんと運が悪い....) SQL のコンパイル時間は、SQL Server Management Studio で参照することが可能です。下記のクエリを実行してみましょう。(データベースはいつもの AdventureWorks で…

待ち事象の一つである、『 TRANSACTION_MUTEX 』 を取り上げてみる

…L Server のチューニングにおいて、データベースサーバにどのような待ち事象が発生しているかを把握することは非常に重要です。SQL Server の待ち事象で代表的なものは、ASYNC_NETWORK_IO、SOS_SCHEDULER_YIELD、PAGEIOLATCH_***、WRITELOG 等があります。今回は 『 TRANSACTION_MUTEX 』 について取り上げたいと思います。待ち事象については、sys.dm_os_wait_stats で確認することがで…

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

…くしていきましょう。チューニングはまだまだ続く....続く....続く....※今までの記事でクエリの書き方が統一されていなかったですね。次回から今回の記事のような記述にします。テーブルの別名は、『AS』を付けないとか。なんか気分によって付けたり、付けなかったりするんですよね。※Kindle版と書籍版。Microsoft SQL Server 2014 Query Tuning & Optimization作者: Benjamin Nevarez出版社/メーカー: McGra…

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

…L Server のチューニングについてまとめてみる - その2 - ( フィルタ選択されたインデックス ) - 都内で働くSEの技術的なひとりごとSQL Server のチューニングについてまとめてみる - その2 - ( フィルタ選択されたインデックス ) - 都内で働くSEの技術的なひとりごと 推定実行プランとかSQL Server Management Studio の知っておいたほうが良い機能について挙げてみる - その1 - ( 推定実行プラン ) - 都内で働く…

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

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

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

…leted successfully.と表示されています。これで、件数を返すためのオーバーヘッドを取り除くことができました。 おわりになにか言ってみる チューニングは地道に続けましょう。SQL Server Tuning Scripts: Performance Optimization Secrets作者: Robin Schumacher出版社/メーカー: Rampant Techpress発売日: 2014/05/27メディア: ペーパーバックこの商品を含むブログを見る

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

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

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

今回やることを説明してみる 新年最初の記事はパフォーマンスカウンタです。(ちょっと地味ですね。)パフォーマンス計測で必要な SQL Server のパフォーマンスカウンタ ( sys.dm_os_performance_counters ) をまとめていきたいと思います。今回はメモリー関連です。 使用する環境を説明してみる 久しぶりの Microsoft Azure です。特に意味ないですが、A7 マシン上の SQL Server 2014 を使用したいと思います。 メモリー…

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

…L Server のチューニングについてまとめてみる - その4 - ( クエリパフォーマンスの結果をメールで送る ) - 都内で働くSEの技術的なひとりごと SQL Server のチューニングについてまとめてみる - その4 - ( クエリパフォーマンスの結果をメールで送る ) - 都内で働くSEの技術的なひとりごと 今回のクエリを上記の記事内容のように設定して、自分宛てにおくってしまえば、容量不足でデータベースサーバが落ちちゃうこともないですよね? おわりに何か書いてみ…

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

… 2014 です。 早速ためしてみる 下記のクエリを SQL Server Management Studio で実行します。 select * from sys.dm_exec_query_optimizer_info 個別のステートメント (クエリ) の最適化ごとの平均経過時間 (秒単位)や内部コスト単位での、最適化プランに対する推定コストの平均などを参照することが可能です。 おわりに何か書いてみる チューニング前後などに使用すると、ざっくりとした指標になるので便利です。

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

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

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

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

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

今回のやることを説明してみる TempDB に関して気にしない人、多いです。一時テーブル ( ローカル、グローバル )とか、インデックスのリビルド時とか ( SORT_IN_TEMPDB = ONのとき )、データの並べ替えなどお世話になることが多いです。そこで今回は、TempDB にどれだけお世話になっているか見てみましょう。 使用する環境を説明してみる 今回は、Microsoft Azure 上の仮想サーバではなく、私の Windows 8.1 Update1、64ビット…

SQL Server のチューニングについてまとめてみる - その8 - ( 未使用なインデックスを抽出してみる )

今回のやることを説明してみる 未使用のインデックスが多く存在すると、追加・更新スピードなどに影響を及ぼします。よくあるクエリですが、未使用インデックスを抽出するクエリを作成したいと思います。 使用する環境を説明してみる Microsot Azure 上で 動作している Windows Server 2012 R2、SQL Server 2014 で動作確認をします。データベースは、AdventureWorks2012 を使用します。 実際にためしてみる 未使用インデックスのク…

SQL Server のチューニングについてまとめてみる - その7 - ( プランキャッシュの状態を確認する )

実行プランのキャッシュ状態、パフォーマンスをチェックするクエリです。オブジェクトの種類が Adhoc か Prepared なのかとか、その他色々気になりますよね? SELECT [SQL文] = SUBSTRING(st.text, (qs.statement_start_offset/2)+1, ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_off…

SQL Queries 2012 Joes 2 Pros® Volume 5: XML Querying Techniques for SQL Server 2012 を読もうとしたら、もう Nexus7 は売ってしまって読めないことが分かったので、急遽 Windows 8 上でなんとかならないか調べてみた

…L Server のチューニングについてまとめてみる - その6 - ( CONVERT_IMPLICIT、暗黙の型変換の怖さを知ろう ) - 都内で働くSEの技術的なひとりごと</a> SQL Server のチューニングについてまとめてみる - その6 - ( CONVERT_IMPLICIT、暗黙の型変換の怖さを知ろう ) - 都内で働くSEの技術的なひとりごと しかし、既に Nexus7 は売ってしまって、Kindle を使用することができません。(スマフ…

SQL Server のチューニングについてまとめてみる - その6 - ( CONVERT_IMPLICIT、暗黙の型変換の怖さを知ろう )

…L Server のチューニングについてまとめてみる - その5 - ( クエリプランから不足インデックス情報を取得する ) - 都内で働くSEの技術的なひとりごと</a> SQL Server のチューニングについてまとめてみる - その5 - ( クエリプランから不足インデックス情報を取得する ) - 都内で働くSEの…

SQL Server のチューニングについてまとめてみる - その5 - ( クエリプランから不足インデックス情報を取得する )

…おいて、DBMS のチューニングを始めなければいけません。ここ数日で、『SQL Server のチューニングについてまとめてみる』を充実させていきます。クエリプランから不足するインデックスを抽出したいと思います。クエリプランは、XML で格納されているため、通常の方法では抽出することはできません。 そこで、XQuery を使用してクエリプランの XML にアクセスします。今回使用している関数は、value() メソッド (xml データ型)、exist() メソッド (xml…

SQL Server の構造について記事にしてみる - その1 (インデックスの基礎知識) -

…L Server のチューニングについてまとめてみる - その2 - ( フィルタ選択されたインデックス ) - 都内で働くSEの技術的なひとりごと を参照してください。 1. クラスタ化インデックス クラスタ化インデックスとは、1テーブルに1つのみ定義可能なインデックスで、リーフノードにキーで並び替えられたデータ行も一緒に保持することが可能なインデックスです。キーの値はなるべく小さくすることで、より高速な検索を実現することが可能です。 図2:クラスタ化インデックス 2. 非…

設定の内容とか、ログの使用量とかのデータベースの状態を把握してみる

…L Server のチューニングについてまとめてみる - その3 - ( パフォーマンスがどれくらい改善される? ) - 都内で働くSEの技術的なひとりごと 取り上げたデータベースごとにインデックスがない件数も付加してみましょう。( ほとんど遊んでますねwww ) SELECT DB_NAME(database_id) as [データベース名], count(*) as [期待しているインデックスが存在しない数]FROM sys.dm_db_missing_index_det…

SQL Server のチューニングについてまとめてみる - その4 - ( クエリパフォーマンスの結果をメールで送る )

本日(7/10)は関東地方に台風が迫ってますね。関東のみなさま、早めに帰宅しましょう。台風はさておき、クエリのパフォーマンスを DMV から取得することはよくやりますよね?今回は、毎日定期レポート的にパフォーマンスの結果をメールに送信するようなことをやってみたいと思います。( 私はこんなメール受信したくないですけどww ) クエリパフォーマンスに関してはよく使用する下記のクエリで取得することが可能です。 SELECT [平均実行時間(msec)] = total_elapse…

SQL Server のチューニングについてまとめてみる - その3 - ( パフォーマンスがどれくらい改善される? )

…L Server のチューニングについてまとめてみる - その1 - ( インデックスの調査 ) - 都内で働くSEの技術的なひとりごと に関する補足です。 まずは、自分のデータベースに対していろいろなクエリを投げている状態で、そのクエリに対するインデックスがどのくらい不足しているかをざっくり参照する方法から試してみましょう。sys.dm_db_missing_index_details から取得できます。以下のクエリを SQL Server Management Studi…

SQL Server のチューニングについてまとめてみる - その2 - ( フィルタ選択されたインデックス )

…L Server のチューニングについてまとめてみる 』シリーズは『 その1 』で終わってましたね (笑) その1 で終わるのもどうかと思ったので、その2 をまとめてみたいと思います。( 適当すぎる.... ) 今回は、SQL Server 2008 から機能追加された、フィルタ選択されたインデックスについて説明します。 フィルタ選択されたインデックスは、例えば、テーブルのあるフィールドの内容が大部分 NULL の場合、そのフィールドの値が NULL ではないレコードだけを含…

そろそろ IIS のチューニングをする - その6( Performance Tuning for Web Servers )

IIS 8.5 に関するチューニングガイドがここにありますね。既にブログで紹介したものもありますが、一度読んでおくことをお勧めします。それ以外にも、Windows Server のチューニングに関しても記載がありますね。いい情報です。

そろそろ IIS のチューニングをする - その5( 『規定のドキュメント』の設定 )

規定のドキュメントを決定するのも結構大事です。頻繁にアクセスされるページなどは、規定のドキュメントの設定を使用して上位にもってくることでパフォーマンスを向上させることが可能です。既に設定されているリストの中に、該当するドキュメントが存在する場合、右上にメッセージが表示されます。(下記のリストは追加することも可能です。) 細かいことですが上記の対応するだけで、特に、『静的なドキュメント』の場合はカーネルモードでキャッシュされるため、大幅なパフォーマンス向上を期待できます。 20…

そろそろ IIS のチューニングをする - その4( http.sysのレジストリ設定 )

http.sys のレジストリ設定です。ここもチューニングする必要あります。 以上。