2017-01-17 7 views
0

NHibernateを使用するWPFアプリケーションがあります。アプリケーションまたはこのドメインを利用するアプリケーションの起動は非常に遅いです。データベーススキーマの検証には30秒かかりますが、その理由はわかりません。データベースには230個のテーブルがあります。以下は、主要なボトルネックがどこにあるかを示すdotTraceのスクリーンショットです。構成の構築は遅かったですが、私はここや他の場所で説明した手順に従って、構成をキャッシュしてファイルから読み込みました。それはかなり助けになりました。しかし今、データベースと話す必要があるときに問題があるようです。どんな洞察力も大変高く評価されます。また、問題の診断に役立つ追加情報が必要な場合はお知らせください。スキーマの検証に関してNHibernate BuildSessionFactoryのパフォーマンスを向上させる方法

dotTrace profile

enter image description here

+0

ダミークエリを送信して実際のデータベーステーブルスキーマを取得することができますか?私はこれをやって、おそらく別の設定NHibernateを覚えていない?トレースはわずか30秒ではなく、30秒です。 –

+0

@エリックハート33,000msは33秒です。 – TyCobb

+0

トレースは〜33k msと思われます。 30秒くらいでしょうか? –

答えて

0

各テーブルのスキーマクエリとスキーマの検証、自動スキーマ生成、hbb2ddlを使用しているようです。他の操作を行っている可能性もありますが、トレースには表示されません。言ったように検証は、ここで例えば、おそらくデフォルトの設定です:

https://weblogs.asp.net/ricardoperes/nhibernate-pitfalls-schema-auto-action

は、私はNHibernateはで作業する場合、これは設定されていませんでした。私は異なるNHibとDBのテーブルスキーマを持つことができ、実際にテーブルにアクセスするまではエラーは発生しません。それでも、約100テーブルのセッションファクトリを構築するには、プロファイラ(Ant)で数秒かかりました。

おそらく、スキーマが変更されていない限り、デバッグの検証を無効にすることをお勧めします。

各スキーマ問合せが20ミリ秒、ネットワーク待ち時間にDBとクライアントの処理を加えた場合、少なくとも230個の表では5秒になります。実際の往復時間が長い場合は、より多くの

SQL Serverプロファイラでは、アプリケーションから受信したもの、特にスキーマクエリが入ってくる時間の長さ、およびデータベースでの所要時間を表示することもあります。

+0

これを無効にする方法を検討しましたが、その方法を説明するものは見つかりませんでした。 SchemaAutoActionを設定する必要があるようです。 –

関連する問題