0

この問題について私に提案してください。

サービスのトランザクションマネージャーとしてorg.springframework.orm.hibernate3.HibernateTransactionManagerを使用しています。そして、このようにこのトランザクション内にコードをラップしました

TransactionStatus transactionDefinition = new DefaultTransactionDefinition();
DefaultTransactionDefinition transactionStatus = transactionManager.getTransaction(transactionDefinition);

//DaoCalls

transactionManager.commit(transactionStatus);

Dao呼び出しは、DBテーブルに対して多くのCRUD(削除、更新、挿入)操作を実行しています。

問題は、このテーブルが長時間ロックされていることです。そして、これらすべてのDao呼び出しは、単一のトランザクションで実行する必要があります。

誰かがこの問題について私に提案してもらえますか?

4

2 に答える 2

1

複雑な操作を実行するために、データベースにストアドプロシージャを作成することを検討します。これにより、実行中のロックとクエリをはるかに細かく制御でき、データベース自体で操作が行われるため、休止状態との間でデータを移動するオーバーヘッドがなくなります。

于 2012-04-16T09:18:53.940 に答える
1

いくつかのオプションしか表示されません。

  • クエリを最適化する
  • 可能であれば、いくつかのクエリを並行して実行します(java.utils.concurrent の Executor を使用します)。
  • 要件に応じて、ロックを減らすようにしてください(たとえば、読み取りまたは書き込み修復を使用して補正します)。
于 2012-04-16T09:13:23.880 に答える