CQRS批量操作的效能問題
假設Book是一個聚合實體,現在要刪除某一個Book沒有問題,通過倉儲Repository載入實體,然後呼叫其delete方法即可,但現在問題來了,如果DB中有上萬個Book需要一次性批量全部刪除,那麼應該如何設計呢,看下面的程式碼:
@[author]CommandHandler[/author] public void handle(RemoveAllBookCommand command, UnitOfWork unitOfWork) { List<BookEntry> entrys = bookRepository.findAllBooks(); if (entrys != null || !entrys.isEmpty()) { for (BookEntry entry : entrys) { Book book = (Book) this.repository.load(new StringAggregateIdentifier(entry .getIdentifier())); book.delete();//刪除Book } } } <p> |
這種設計有兩個缺點:
1. 脫了褲子放屁,還不如直接呼叫bookRepository.deleteAllBooks()
2. 效能降低,獲取所有的Data Book,然後呼叫實體中的delete方法
3. 分頁刪除,如果有100萬Book需要全部清零,那麼一定需要分多次呼叫findBooks獲得資料實體,這會嚴重影響效能
各位版友有何建議?
相關文章
- EF 批量增加問題
- 一個指令碼解決AD使用者批量操作問題指令碼
- hibernate批量查詢問題
- mybatis批量操作MyBatis
- ORACLE批量操作Oracle
- oracle對BLOB型別資料的操作與效能問題(轉載)Oracle型別
- Mysql執行批量sql時的格式問題MySql
- QtWebEngine效能問題QTWeb
- WebService效能問題Web
- Mybatis批量操作demoMyBatis
- DocumentFragment批量操作domFragment
- 對CQRS架構的幾點疑問架構
- 操作oracle出現的問題Oracle
- 多對多的操作問題
- redis大幅效能提升之使用管道(PipeLine)和批量(Batch)操作RedisBAT
- mybatis 的crud及批量cud操作MyBatis
- 效能優化問題優化
- JSF效能問題JS
- 兩個小問題深入淺出List的效能問題
- git 操作遇到問題Git
- 批量更新效能比較
- 批量載入效能案例
- 11gR2批量操作EM效能監控報表集
- sqlldr載入效能問題的排查SQL
- 【Fenng 】JDBC 的 setTimestamp 效能問題JDBC
- 高效能聊天程式的問題
- 如何解決soap的效能問題?
- Java操作hdfs出現的問題Java
- 關於java的“原子操作”問題Java
- 請問一個有關jdbc效能的問題JDBC
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- 初學jdonframework疑問。CQRS怎麼實現的?Framework
- mysql併發操作問題MySql
- Hibernate Blob 操作問題!
- .net Excel 批量插入效能慢Excel
- 一個CRM OData的效能問題分析
- mysql 字符集造成的效能問題MySql
- 解決吞吐效能問題時的思路