1 つの KDB 接続を再利用する複数のスレッドを持つアプリケーションがあります。パフォーマンスの観点から、プロセスを高速化するためにマルチスレッド KDB インスタンスへの複数の接続を開くことは良いことですか? また興味深いのは、複数のスレッドから単一の接続にパブリッシュすると、潜在的なマイナス面の影響があることです。Java アプリがあり、exxeleron Java ライブラリを使用しています。
1 に答える
1
KDB への 1 つのソケット接続自体はそれほどリソースを消費しないという事実は別として、最終的には、ディスクのシークとメモリの割り当てが最大のボトルネックであることがわかると思います。データベース。そうは言っても、あなたが尋ねるので...
簡単な仮定に進みましょう。
- KDB データベースは履歴データベースです。その側のマルチスレッドオプションは負のポート番号であり、
-s
同時に設定することはできません - あなたはそれ
A
にアクセスする単一のプロセスを持っています。
負のポート番号を使用すると、マルチスレッドの入力キューが得られます。したがって、A
複数のクエリを実行できる場合は、それらを同時にディスパッチでき、KDB+ は呼び出しごとにブロックされません。ただしA
、結果の受信ストリームを特定のクエリへの応答として識別できるようにする必要があります。あなたはそれを同様に照会し(<queryId>;<actualQuery>)
、最初の要素を解析して識別できると思います。ただし、この使用例では、複数の が必要なようですA
。
-s
マルチスレッド クエリを取得すると、q クエリをそのように記述する必要があります (パーティション間のクエリのように、無料で取得できる場合もあります) 。すべての呼び出しでブロックするため、複数の を使用しても実際の利点はありませんA
。
于 2015-01-29T15:23:38.500 に答える