0

私はvsでデータベースアプリケーションをc#で作っていました。最初はSQLサーバーで作成されたデータベースを使用していました.My app.configは

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
 <connectionStrings>
<add name="ConString" connectionString="Data Source=ARAVIND-HP\SQLEXPRESS;Initial Catalog=businessdata;Integrated Security=True"
    providerName="System.Data.sqlClient" />


</connectionStrings>
</configuration>

この後、代わりにローカルデータベースを使用しました。データベースをプロジェクト ソリューションにコピーしました。Visual Studio は app.config を自動的に構成しました。新しい app.config は

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
<configSections>
</configSections>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
  <add name="Small_Business_Management.Properties.Settings.businessdataConnectionString1"
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\businessdata.mdf;Integrated Security=True"
    providerName="System.Data.SqlClient" />


  </connectionStrings>
  </configuration>

このローカル データベースを使用すると、SQL Server データベースを使用した場合よりも操作の実行に 1 ~ 2 秒 (場合によってはそれ以上) かかることに気付きました。このパフォーマンスの違いはなぜですか?

4

1 に答える 1

4

SQL Server はローカル コンピュータでも実行できるソフトウェア ピースであるため、ここでは 2 つのことを混同しています。

ポイントは、「実際の」データベースサーバーと比較して、ローカルコンピューターが最も悪いということです。ほとんどの人は、大量のメモリと IO を備えたワークステーションを持っていません (ただし、IO 側は SSD で変わります)。SO、問題は「ローカル対非ローカル」ではなく「ワークステーション対サーバー」です。はい、技術的にどのように設定されているかによって、サーバーは小さなローカルワークステーションよりもはるかに強力になる可能性があります。IO 要件を処理するために、100 以上のコア、テラバイトの SSD キャッシュ、および 100 を超えるディスクを備えたデータベース サーバーを見てきました。

マイナス面としては、サーバーがデータを送信する必要があることは明らかです。ローカルにインストールされた SQL Server のメモリ転送よりも遅い 1 ギガビットでも。ただし、(a) 大量のデータを取得し、(b) その上で重い処理を行わない場合にのみ関連します。これは、より学術的なケースになります。

さて、あなたの場合はさらに良くなります。LocalDbを使用する代わりに、ローカルSQL Serverをインストールしていません(または使用しないでください)-これは明らかに「サーバーレベル」のシステムではありません。Localdb は「改善された Express」( http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx ) であり、とりわけ Express はリソース使用量 (メモリ、CPU) が制限されています。あなたのサーバーはおそらく本物のサーバーなので、Express が望むよりも多くの rssources を使用します。

  • 1 ソケットまたは 4 コアのいずれか少ない方に限定
  • 1GB

それは今日の基準ではかなり哀れです。同じように、小規模なデータベースの場合は非常に多く、データベースが小規模な場合は非常に多くなります。しかし、より大きなものをヒットしてから、小さなデータベースをその上に置くと、物事は飛びます。

だから、それは依存します。はい、サーバーはローカル マシンよりもはるかに強力です。

状況からそれが正しいことを願っています-別の代替手段は、同じマシンで両方を開始することです。この場合、それは単に起動時間である可能性があります。LocalDb は、使用されていないときにデータベースを IIRC で閉じるため、メモリの可用性に関係なく、「コールド」になります。SQL Server はデータベースをアクティブに保つため、「ホット」です (つまり、ロードされたページはまだメモリ内にあり、localdb はそれらをディスクから再度取得する必要があります)。

「場合による」が多い。いくつかの「構成上」。

于 2013-01-15T11:15:59.173 に答える