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

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

Tuning

そろそろ IIS のチューニングをする - その3( 新しいログの取得方法 ※IIS 8.5からです ) -

病み上がりです。今回はチューニングというわけではありませんが、チューニングに必要なログ取得について書きたいと思います。 IIS 8.0 ( Windows Server 2012 ) から、IIS 8.5 ( Windows Server 2012R2 )になって、ログの取得方法が大きく変更されています…

そろそろ IIS のチューニングをする - その2( CPU Throttling 設定 ※IIS8.0からです ) -

IIS8.0からアプリケーションプールのCPU使用率が閾値を超えた場合の動作として、『Throttle』『ThrottleUnderLoad』を設定可能になりました。ここに説明が記載されています。複数のアプリケーションプールに対して『Throttle』『ThrottleUnderLoad』設定する…

そろそろ IIS のチューニングをする - その1( keep-alive 設定 ) -

IIS のチューニングをそろそろ開始しなければいけません。しかし、IIS のチューニング自体まじめにやった経験がありません。Windows Azure に Windows Server 2012 R2 でも作って、色々調査してみます。ふと、思ったんですが、仮想マシンの作成やたら高速に…

.NET アプリケーションの高速化について探し始めてみた - その10 - ( RyuJIT(龍神) )

RyuJIT ってなんでしょう? RyuJIT とは The next-generation JIT compiler for .NET です。ここのブログを参照しました。 The world is moving to 64-bit computing even though it isn’t always faster or more efficient than 32-bit. A lot of programs …

.NET アプリケーションの高速化について探し始めてみた - その9 - ( MPGO )

MPGO とは、Managed Profile-Guided Optimaization の略です。Visual Studio 2012 と CLR 4.5 で導入されたツールです。実行中のアプリケーションの状態をプロファイリング、情報を生成し、その情報をアセンブリに埋め込みます。Ngen はこのプロファイリング…

SQL Server Profiler による実行プランの取得について

実行プランを取得する方法として、SQL Server Management Studio で取得する方法、DMVで取得する方法以外に、SQL Server Profiler で取得する方法があります。 まず、SQL Server Profiler を起動します。 イベントの選択タブをクリックし、すべてのイベント…

Nested に続いて Hash および Merge について説明してみる

『 SQL Server の実行プランを少しだけ詳しく説明したみた 』で Nested Loop に関して説明しました。今回は、 Hash , Merge について説明します。 ※関係ないですけど、新幹線の移動中はブログを書くのにもってこいの環境です。 それでは本題に戻ります。まず…

SQL Server の実行プランを少しだけ詳しく説明したみた

SQL Server Management Studio の知っておいたほうが良い機能について挙げてみる - その3 - で使用していた SQL を検証がしやすいよう下記のように変更したいと思います。( NESTED LOOPS をわざと発生するようにしています。) USE AdventureWorks2012SET STA…

.NET アプリケーションの高速化について探し始めてみた - その8 - ( .NETFramework の GC )

今回は、.NETFramework の GC の種類に関する記事です。ここの記事が参考になります。これは全く知見がありませんでした。下記のような種類があるそうです。 ワークステーション/コンカレント実行なし ―― メモリ割り当てに責任を持つマネージスレッドにおい…

SQL Server のチューニングについてまとめてみる - その1 - ( インデックスの調査 )

SQL Server のチューニングについてまとめていこうかと思います。まずは、インデックスを使用していないクエリの抽出方法です。SQL Server のチューニングには、dm_* で始まる動的管理ビューを多用します。今回は、主に以下の3テーブルを使用して、インデッ…

.NET アプリケーションの高速化について探し始めてみた - その7 - ( ExactSpelling 属性 )

ExactSpelling 属性は名前の文字列が完全に一致する時のみ利用可能とするかの属性です。ExactSpelling = true とすることで、完全に一致した関数のみとなります。ExactSpelling = false とすると、部分一致した関数を検索します。以下はサンプルです。 publi…

.NET アプリケーションの高速化について探し始めてみた - その6 - ( ConcurrentDictionary )

ConcurrentDictionary は、スレッド数と初期容量を設定することで若干高速化されます。スレッドセーフなクラスなので、Parallel クラスで処理することも可能です。ソースコードは以下の通りです。 //ConcurrentDictionaryへの要素追加に関する計測 var lisw …

.NET アプリケーションの高速化について探し始めてみた - その5 - ( ConcurrentDictionary のパフォーマンス計測 )

.NET アプリケーションの高速化について探し始めてみた - その4 - で取り上げた ConcurrentDictionary のパフォーマンスを計測してみたいと思います。検証しようかと思ったら、仮想環境を格納してある外付けハードディスクを忘れてしまいました...こんな時は…

.NET アプリケーションの高速化について探し始めてみた - その4 - ( ConcurrentDictionary )

Dictionary をスレッドセーフにするには、自前で Monitor などを使用してそれぞれのメソッドをロックする必要がありました。.NET 4.0 より ConcurrentDictionary というクラスが追加されています。(今更?) 複数のスレッドから同時にアクセスできるキーと値…

.NET アプリケーションの高速化について探し始めてみた - その3 - ( SuppressUnmanagedCodeSecurityAttribute属性 )

SuppressUnmanagedCodeSecurityAttribute() って知ってますか?ネットをぼーと探していたら見つけたのですが、ここにこの属性の説明が記載されています。 ※下記はMSDNから抜粋 // SuppressSecurity.cs using System; using System.Security; using System.Se…

.NET アプリケーションの高速化について探し始めてみた - その2 - ( DLL のベースアドレス )

昔々、dll の Load 時に配置アドレスの競合が発生してしまうと、再度配置場所を探す必要があり、少なからずレスポンスに影響が出ていました。それを未然に防止するため、予めベースアドレスを指定します。Visual Studio 2012 では下記のように設定します。 …

.NET アプリケーションの高速化について探し始めてみた - その1 - ( アセンブリの圧縮 )

今月・来月は、.NET アプリケーションの高速化について色々調査したいと思います。コードの最適化、NGEN等といった一般的な高速化手法があります。今回はネットで調べ物していた時に見つけたものを少し紹介したいと思います。RPX ( Rugland Packer for ( .Ne…