1つのアプリケーションで使用されるデータベースを備えたSQL Expressサーバーがあります。 DBを最適化しようとしていますが、DBがOLTPまたはOLAPのどちらであるかがわかりません。
分析サーバーがインストールされておらず、DBはSQL Serverインスタンス内にあるため、OLTPである必要がありますが、DBで読み取り/書き込み比率を実行すると、次のようになります。
Reads Writes Read% Write %
DB file 400 000 75 000 85% 15%
DB log 250 30 000 1% 99%
標準OLTP DBは書き込みよりも読み取りが多いはずですよね?これはおそらくOLAP DB。
ハイパースレッディングテクノロジの使用、MAXDOP設定、およびキャッシュをライトスルーとして構成するか、ライトバックとして構成するかについて、私はこれを尋ねています。
私が使用しているクエリは次のとおりです。
SELECT DB_NAME(DB_ID()) AS [Database Name] ,
[file_id] , num_of_reads , num_of_writes , num_of_bytes_read , num_of_bytes_written ,
CAST(100. * num_of_reads / ( num_of_reads + num_of_writes ) AS DECIMAL(10, 1)) AS [# Reads Pct] ,
CAST(100. * num_of_writes / ( num_of_reads + num_of_writes ) AS DECIMAL(10,1)) AS [# Write Pct] ,
CAST(100. * num_of_bytes_read / ( num_of_bytes_read + num_of_bytes_written ) AS DECIMAL(10, 1)) AS [Read Bytes Pct] ,
CAST(100. * num_of_bytes_written / ( num_of_bytes_read + num_of_bytes_written ) AS DECIMAL(10,1)) AS [Written Bytes Pct]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) ;
上級DBAからの考えは?
DBAの観点から見ると、OLAPとOLTPの主な違いは、クエリに適用するチューニング方法です。読み取り/書き込み比率は、あなたに役立つ何か。
私は違いを説明するために使用する小さな「魔法の象限」を持っています(あなたの場合、BI/DWとETLをOLAPと同じと考えてください):
基本的に、クエリ結果を生成するために大量のデータを操作する必要がある場合、あなたはOLAPです。逆に、ほとんどデータに触れずに戻り値を生成できる場合は、OLTPです。
明らかに、インデックス作成戦略が不十分な場合、OLTPはOLAPのように見える場合があります-常にテーブルスキャンを実行することになるためです。良いその区別をする方法は、システム内の最も重要な上位10のクエリがどの程度のデータに触れなければならないかを調べることです。
ワークロードの大部分が確定したら、ワークロード固有のチューニング手法の適用を開始できます。以下に、検討する可能性のあるワークロード固有のトリックをいくつか示します(常に特定のワークロードに合わせて調整してください)。
OLAP:
OLTP: