0

私たちの mysql ホスティング事業者には、同時データベース接続の制限があります。その制限を拡張するのはかなり費用がかかるため、次の質問が出てきました。

情報: 私は Web アプリを持っています (外部のコーダーによって開発されました - この質問について不思議に思うかもしれません)。

Web アプリは配布され、多くのサーバーにインストールされます (すべてのユーザーが自分の PC にインストールします)。これらのサテライトはデータを mysql db に送信しています。現在、サテライトはデータベースに直接投稿しています。セキュリティとエラー処理を改善するために、サテライトを XML-rpc (ワードプレス API) に投稿し、さらにデータベースに投稿したいと考えています。

質問: そのような API は同時接続の数を減らしますか? (現在、すべての衛星が直接接続しているため、1 ユーザー = 1 接続のようなものです)

10 個のサテライトが 1 つのファイルに投稿している場合、このファイルはデータを処理してデータベースに投稿します -> これは 1 つの接続でしたか? (または、処理された異なるデータ セットと同じ数の接続。)

一度にしか投稿できないので、API が少しスロットルするとどうなるでしょうか。これにより、接続が 1 つだけになるかどうか。

どんなポインタでも大歓迎です!前もって感謝します!

4

2 に答える 2

1

データベースへの同時接続を改善したい場合(実際には、データベースへの接続の作成は「高価」です)。ConnectionPool(Javaの)の使用を検討する必要があります。

同時データベース接続はどのようにカウントされますか?

並行性
(出典:iforce.co.nz

connectionlessサーバー_

  • コネクションレス型IPCAPIを使用します(例:コネクションレス型データグラムソケット)
  • 同時クライアントとのセッションはインターリーブできます。

connection-orientedサーバー_

  • コネクション型IPCAPIを使用します(例:ストリームモードソケット)
  • 同時クライアントとのセッションは、サーバーがスレッド化されていない限り、順次実行することしかできません。

クライアントサーバー分散コンピューティングパラダイム、NA)

設計とパフォーマンスの問題

  • データベース接続がボトルネックになる可能性があります。これは、接続プールを使用して対処できます。

  • コンパイルされたSQLステートメントは、ステートメントの代わりにPreparedStatementsを使用して再利用できます。これらのステートメントはパラメーター化できます。

  • 接続は通常、サーブレットによって直接作成されるのではなく、ファクトリ(DataSource)を使用して作成されるか、ネーミングサービス(JNDI)から取得されます。

  • 接続を解放する(接続を閉じるか、接続プールに戻す)ことが重要です。これはfinally節で実行する必要があります(どのような場合でも実行されるようにするため)。close()も例外をスローすることに注意してください!

        try
        {
            Console.WriteLine("Executing the try statement.");
            throw new NullReferenceException();
        }
    
        catch (NullReferenceException e)
        {
            Console.WriteLine("{0} Caught exception #1.", e);
        }
    
        catch
        {
            Console.WriteLine("Caught exception #2.");
        }
    
        finally
        {
            Console.WriteLine("Executing finally block.");
        }
    
  • OOとRDBMS間のインターフェースを開発する場合、さまざまな問題があります。これは「パラダイムの不一致」と呼ばれます。主な問題は、データベースが値による参照を使用するのに対し、オブジェクト指向言語はアドレスによる参照を使用することです。いわゆるミドルウェア/オブジェクト永続性フレームワークソフトウェアは、これを緩和しようとします。

ディートリッヒ、R。(2012)。Webアプリケーションアーキテクチャ、サーバーサイドスクリプトサーブレット。パーマストンノース:マッセー大学。

于 2013-03-23T11:52:39.817 に答える
1

集中型サービスを実装する方法によって異なります。

リクエストを受け取ったサービスがすぐに mysql にデータを送信する場合、同時リクエストがあると多くの接続が発生する可能性があります。ただし、接続プールを使用すると、開いている接続の数を正確に制御できます。制限内で、開くことができる接続は 1 つだけです。各リクエストは接続が解放されるまで待機する必要があるため、多数の同時リクエストがある場合、競合が発生する可能性があります。

サービスがリクエストを受信し、それらをどこか (データベース以外) に保存し、チャンクで処理する場合、接続を 1 つだけにすることもできます。ただし、この場合、一時データ バッファーへのアクセス (読み取りと書き込み) を制御する必要があるため、実装がより複雑になります。

于 2013-03-23T11:59:33.470 に答える