10

私は現在、非常に大きなデータベース (> 50GB) を扱っており、Akka 固有のスレッドとうまく連携する、最も効率的で使いやすいアプローチを理解しようとしています。

「withSession{ } 内にすべてをラップする」アプローチに関しては、これは簡単な修正ですが、アクター間の Akka のスレッド化が制限されるのではないかと懸念しています。私は、Akka のスレッド化がどのように機能するか、アクター システム全体を withSession 内にラップすることがどのように影響するかについて、それほど詳しくありません。

もう 1 つの方法は、データベースにアクセスするたびに withSession を呼び出すことですが、これは非効率的です。「withSession {」コード セグメントの実行には最大 6 ミリ秒かかり、何百万ものクエリを作成しています。

本質的に: スレッドを壊さずに Slick と Akka でデータベースにすばやくアクセスする最良の方法は何ですか?

暗黙的なセッションとトランザクションを使用するアプローチについて聞いたことがありますが、これらのいずれかに関するドキュメントを見つけるのに苦労しています。

4

1 に答える 1

4

遅刻しないよりはマシ:

推奨される方法は、jdbc 接続プール (c3p0 など) を使用することです。セッションが取得されて返され、その間に同じスレッドに保持されていることを確認する必要があります。withSessionプールから接続を遅延取得し、スコープの最後に返します。必要なときに接続をすばやく取得し、すぐにプールに戻します。

于 2014-03-25T21:21:03.780 に答える