3

最近、SQL Server 2000 を使用する Delphi 7 から SQL Server 2008 を使用する Delphi 2010 に移行しました。dbExpress を使用しています。

新しいバージョンをインストールした後、システムが遅く不安定になっている大量のデータを持つサイトで見つけました。

dbExpress と SQL Server 2008 の間に問題があるかどうか教えてもらえますか? 助けてください!!!!!

4

1 に答える 1

1

プロファイラー トレースを実行すると、SQL Server にボトルネックがあるかどうかを確認できます。既定のプロファイラー トレース (RPC:Completed の TextData を含む) は、最初は十分なはずです。

プロファイラー トレースを分析して、最も時間がかかるものを確認できます。トレースをテーブルに簡単にロードして、そこで分析できます。テーブルにロードされる場合、期間列はマイクロ秒単位であることに注意してください。トレース ファイルをテーブルにすばやくロードする方法については、関数 fn_trace_gettable を参照してください。

特に大幅な変更後にパフォーマンスが低下する一般的な原因は、不適切なインデックス作成です。SQL Server 2005 以降、オプティマイザは必要なインデックスをインメモリ構造内に格納します。これらには、動的管理ビュー sys.dm_db_missing_index_details、sys.dm_db_missing_index_groups、および sys.dm_db_missing_index_groups_stats を使用してアクセスできます。

以下は、欠落インデックスを生成するための基本的なコードを含む、独自の欠落インデックス レポートを作成するための簡単なサンプル SQL です。

select
d.statement
,   d.equality_columns
,   d.inequality_columns
,   d.included_columns
,   s.user_seeks    Seeks
,   s.last_user_seek
,   cast (s.avg_total_user_cost as decimal (9,2)) Cost
,   s.avg_user_impact   [%]
, 'CREATE INDEX MissingIndex_ ON ' + d.statement + '('
    + case when equality_columns IS NOT NULL then equality_columns else '' end
    + case when equality_columns IS NOT NULL AND inequality_columns IS NOT NULL then ', ' else '' end
    + case when inequality_columns IS NOT NULL then inequality_columns else '' end
    + ')'
    + case when included_columns IS NOT NULL then ' INCLUDE (' + included_columns + ')' else '' end
AS SQL
from sys.dm_db_missing_index_details d
INNER JOIN sys.dm_db_missing_index_groups g ON d.index_handle = g.index_handle
INNER JOIN sys.dm_db_missing_index_group_stats s ON g.index_group_handle = s.group_handle
于 2012-05-19T13:12:40.923 に答える