コネクション・プーリングスレッドセーフを経由してデータベーストランザクションをマルチスレッド化されていますか?

SDO:

シナリオ例:

各スレッドはのConnectionPoolから新しい接続を取得し、すべてのスレッドが並行していくつかのDBトランザクションを実行するために進んで、Javaのスレッドプールを使用します。例えば、同じテーブルに100個の値を挿入します。

テーブル/データベースと、この何とか混乱はするか、またはそれは、スレッド間の同期に必要なあらゆる種類のなしで完全に安全なのですか?


私はそれが難しいこのテーマについての信頼できる情報を見つけるために見つけます。私が集めたものからDBエンジンは、すべての場合(PostgreSQLの明らかにバージョン9.x以降)、自分の/でこれを取り扱います。この更を説明する任意のよく書かれた記事はありますか?

ボーナス質問:DBは、単一のHDD上で実行されるときに並列トランザクションを利用することがさえポイントですか?

Ancoron:

長いデータベース自体がに準拠しているほどのACID(すべての今して、誰かがいくつかの本当に奇妙な状況でバグを見つけたが)あなたは大丈夫です。

あなたが同時トランザクションを収集するためのいくつかの時間(のための増加値持つ限りとしてPostgreSQLのためにそれは完全にメイクセンスを行います。ボーナスの質問にCOMMIT_DELAYを)、その後、バッチに、ディスクI / Oのを組み合わせることができます。場合は、かなり危険なことがほとんどがチューニングスループット取引のための他のパラメータもありますDの urabilityがあなたの主要な関心事の一つであるが。

また、単にデータベースのアイドル時間が追加されます、データベースクライアントにも順次実行、データベース・コールの間にいくつかの作業を行う必要があることに注意してください。だから、ここでも、並列処理は、限り、あなたはそれのために実際のリソース(CPUを、...)持っているとしてとして(のに役立ちます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=214799&siteId=1
おすすめ