我該如何處理內存不足5000萬記錄nhibernate,我在nhibernate中使用了無狀態會話並解決了大約170萬條記錄,但對我的報告不利。 另一件事是我需要計算他們,所以我不能分開的結果。 你能讓我知道如何優化它嗎?內存超過5000萬記錄c#nhibernate
public IEnumerable<ATMDispenseReport> GetReport(string WhereClause)
{
var CurrentUnitOfWork = this.UnitOfWork as MainUnitOfWork;
var session = CurrentUnitOfWork.StatelessSession;
string SqlQuery = "MyQuery";
var lstATMDispenseReport =session.CreateSQLQuery(SqlQuery) .SetResultTransformer(Transformers.AliasToBean<ATMDispenseReport>())
.List<ATMDispenseReport>();
return lstATMDispenseReport;
}
你能舉一個例子說明你的數據是怎麼樣的以及你想要計算什麼?也許有一種方法可以在數據庫站點上進行計算,由sql查詢中的適當聚合啓動。 – Patrick
ORM中的「O」代表Object。對象有bevahour。報告沒有對象,因爲它們沒有任何行爲。即使您堅持使用ORM進行報告,您也無法創建具有1.7M行的報告 - 沒有人類(或機器)能夠使用它。你想做什麼?在RAM中加載1.7M行不會使報告的速度超過只返回最終報告數據的SQL語句 –
50M記錄是一個非常非常強的指標,您需要適當的報告模式和適當的ETL過程才能填充它。 –