リモートSQL Serverのロードを削減する方法 -- c# フィールド と sql フィールド と sql-server フィールド と networking フィールド と network-programming フィールド 関連 問題

How to reduce remote SQL Server loads?












7
vote

問題

日本語

クライアント側とサーバーの辺を使ってC#にアプリケーションを作成したいです。それはローカルネットワークを越えて作業します。クライアント側は、リモートSQL Serverの更新を確認する必要があります。更新時間間隔を2秒に設定しました。 20クライアントサイドアプリケーションがある場合は、2秒ごとにリモートSQL Serverにクエリを送信し、サーバーをかなりロードします。サーバーの負荷を軽減する方法や更新を確認する方法がわかりますか?

英語

I want to create an application in C# with client and server sides. It will work over local network. Client sides must check for updates on a remote SQL Server. Lets say we've set update time interval to 2 seconds. If i have 20 client side applications, then they'll send query to the remote SQL Server every 2 sec and it will load server quite a lot. Now I want to know is there any way to reduce server load or it's only way to check for updates?

</div
              
 
 

回答リスト

14
 
vote
vote
ベストアンサー
 

私の観点から、クライアントがDB Sererを直接接続できるようにする必要はありません。ここでもう1つの階層があるはずですが、更新に関する情報とキャッシュ情報のみをキャッシュします。クライアントはこの追加情報に接続してキャッシュされた情報を操作する必要があります。

アップデート 私が理解している限りでは、すべてのクライアントが2秒ごとにDBサーバーをPingするため、この問題が表示されます。この問題に対する解決策は、DBサーバーにのみアクセスできるようにする特別なモジュールを作成し、それを更新のために要求することです。たとえば、2秒ごとに。アップデートの準備ができている場合は、DBとStoreからそれを取得できるはずです。これは私が追加の層の下で意味するものです。

今、あなたのクライアントに戻りましょう。それらはこのモジュールと通信して、準備完了更新について情報を入手することができなければなりません(この情報はキャッシュされているので、それを得るのは本当に速いです。また、すべてのクライアント要求にサーバーをpingする必要はありません)。アップデートの準備ができている場合は、クライアント側に取ってクライアント側で作業してください。

この追加の層とクライアント間の通信は。あなたは.NETと協力しているので、私の観点から.NETの間でプロセス通信を実行するための標準的なアプローチとなるWCFを見てください。ネットワークには多くの情報がありますが、リンクをまもなく投稿します。

これは私のお気に入りのWCFブックです:

プログラミングWCFサービス

MSDNエントリ:

Windows通信財団

 

From my point of view, there is no need to allow clients to connect the DB serer directly. There should be one more tier here which will only connect to the server and cache information about the updates. Your clients should connect to this additional information and work with the cached info.

UPDATE As far as I understand, the problem appears because all your clients ping your DB server every two seconds. The solution to this problem is to create a special module which will only have access to the DB server and asks it for the update. For example, every two seconds. If the update is ready, it should be able to fetch it from the DB and store. This is what I meant under the additional tier.

Now, let's return to your clients. They should be able to communicate with this module and get information from it about a ready update (this information is cached and thus it is really fast to obtain it. Also you needn't ping the server at every client request). If update is ready, fetch it to the client side and work on client side.

As for the communication between this additional tier and clients. Since you are working with .NET, I would suggest that you take a look at the WCF which, from my point of view, becomes a standard approach of implementing the between-process communication in .NET. There are a lot of information in the network about it, I will post the links shortly.

Here is my favorite WCF book:

Programming WCF Services

MSDN entry:

Windows Communication Foundation

</div
 
 
         
         

関連する質問

6  ソケットはどのようにJVMで実装されていますか?  ( How are sockets implemented in jvm ) 
私は知っており、ソケットがJava仮想マシンにどのように実装されているか。 ネイティブライブラリが含まれていますか? とif、Cライブラリ? このトピックに関する情報はどこで見つかりますか? オフィスJavaチュートリアルはそこでは私を助けません。 いく...

0  このURLにブラウザ以外のアプリケーションと接続できないのはなぜですか?  ( Why cant i connect with a non browser application to this url ) 
だれでも、このURLがブラウザ以外のアプリケーション(wget、curl、elinks!)によって送信されているのかを拒否する理由を知っています。 http://sube.garanti.com.tr href="https://sube.garanti...

0  ネットワークへのアクセスへの接続(ホームグループ)  ( Connecting to access on network homegroup ) 
私は2つのマシンを持っています:Windows 7とMSIを実行しているRoy-PC Windows 10を実行しています。 私は両方の機械でアクセスとVisual Studio 15を持っています。 私が接続しようとしているDBはRoy-PC上にあります。 ...

5  IPv6を介してリモートMACアドレスを取得します  ( Get a remote mac address via ipv6 ) 
IPv6を介して同じネットワーク内の別のPCからMACを取得することは可能です(WMIのない)。 IPv4では簡単(ARP)です。 IPv6は、「ネイザディスカバリプロトコル」(NDP)を使用してMACアドレスを取得します。これには.NETにメソッドがあり...

0  Windows ServiceからネットワークPCを停止します  ( Issue shutting does network pc from windows service ) 
C#Windowsサービスからネットワーク上のリモートコンピュータをシャットダウンしようとしています。テストアプリで下のコードを実行するとうまく機能しますが、サービスからの実行は何も起こらないとき。 私はそれが権限と関係があるかもしれませんが、確かではないか...

1  C#のネットワークプログラミング  ( Network programming with c sharp ) 
私はパケット監視であるプロジェクトを提供しています。 指定されたネットワークインターフェイスによって受信する各パケットをキャプチャしたい。 私は私のプロジェクトをやり直すべきものを知りたいのですが.... 私は最初にソケットプログラミングを学ぶべきですか? C...

24  SSL接続をどのようにテストしますか?  ( How would you test an ssl connection ) 
私のネットワークアプリケーションでOpenSSLを試しています。送信されたデータが暗号化されているかどうか、そして盗聴者からは見られないかどうかをテストします。 どのツールを確認するために使用できますか?これをプログラム的に行うことができますので、単体テストに...

0  Android ConnectivityManager情報  ( Android connectivitymanager information ) 
私はAndroidのConnectivityManagerをより良いグリップしようとしています、そしてそれが本当にフードの下でどのように働くか。 APIを使用することは簡単ですが、それが始まるときなどのより低いレベルを探しています。そのようなものやバックグラウ...

0  チャットアプリのエラー[クローズ]  ( Error in chat app ) 
この質問はデバッグの詳細を必要としています。現在答えを受け付けていません。 この質問を改善したいですか? ...

1  C#Localhost Portの使用量を検出します  ( C sharp detect localhost port usage ) 
事前に、あなたのアドバイスをありがとうございました。 現在、Puttyを使用しているプログラムで作業して、ローカルホストを介してSSHサーバーの後ろのサービスにアクセスするために、ローカルポート転送を使用するサーバーとのSSH接続を作成します。 IE:クラ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有