2012-10-10 51 views
1

讓我們來看一個表格適配器的示例(鍵入數據集)更好:每次創建新對象或將其存儲在會話中?

我正在將數據集存儲在會話中。但我不知道什麼是更好的表適配器。

一般來說,與存儲和獲取會話相比,會不會創建對象命中性能?

+1

我不這樣做,但是從多年的編程來看,這取決於你如何使用數據。如果您沒有完成數據處理,請始終緩存數據,並在不立即需要時釋放資源。最後一條規則必須服從你的工作量和資源來「有效地」執行這種類型的任何操作。 – 2012-10-10 06:27:59

+1

如果您在勸告下接受我,您將避免大量錯誤的代碼,並始終編寫面向任務的數據操作。這就是CPU在覈心層面的運作方式。對於高級語言來說,資源似乎是無限的,但從彙編的角度來看,基於假設等待狀態是一個壞主意,這意味着我們不應該再次運行或運行代碼。如果你說這種語言,你就可以贏得比賽,這就是手頭的任務。小而簡單的任務。 'load','get','set','save'然後你就可以建立你的應用程序所需要的東西,而不是別人認爲是你最好的選擇。 – 2012-10-10 06:51:01

+1

電腦被髮明來做兩件事情非常好。輸入和輸出。由工程師來決定這兩點之間會發生什麼。你可以在你的Abacus上添加它。 – 2012-10-10 07:03:42

回答

2

這兩種選擇使用不同的資源。

創建對象的新實例使用時間。在會話中存儲實例使用內存。

如果您每次創建新實例需要一個實例,它只會在您使用它時佔用內存。如果將它存儲在會話中,它會一直佔用內存,如果不從會話中刪除它,它甚至會在用戶離開後佔用內存一段時間。

如果您在保留表格適配器連接到數據庫的同時將它保留在會話中,那麼也會使用到數據庫的連接,這是一種更加有限的資源。這將嚴重限制網站可以處理的用戶數量。

通常,您應該只將事物存儲在實際具有狀態的會話中,即確實存在需要保留的數據。大多數物體花費的時間太短,以至於無法保持它們以避免再次創建它們。

+0

隨着工作量的增加,創建的時間不多。您的8%(總操作週期)跨多個域,應用程序和具有不同資源配置文件的客戶端分佈。它被我們稱之爲匆忙的惡夢浪費。這是懶惰的,懶惰的編程是不好的編程。它幾乎總是需要修改才能以適當方式執行的代碼,因爲在生產環境中,這會花費基礎架構資源。 – 2012-10-10 08:07:59

2

我不確定,爲什麼要將它存儲在會話中,但記住會話是網頁開發中最昂貴的昂貴的資源。

2

這總是取決於您的要求。

如果數據集中的數據較少,而且您正在頻繁地調用數據庫來獲取相同的數據,而不是將它存儲在會話中,但如果所有用戶的數據都相同,則應該使用高速緩存,因爲它比會話快。

但是,如果數據集中的數據比它更好地調用數據庫更好,因爲存儲數據會減慢應用程序速度,即性能可能會嚴重下降。

注意:這總是取決於數據大小以及您從數據庫中查詢數據的頻率。

1

這一切都取決於你的要求你想要做什麼以及你有多少數據。

根據我的會話是不是一個好的選擇來存儲數據集,因爲一旦它佔用內存將不可用。會話有一些限制,如果你的會話已過期,那麼它可以拋出空錯誤,你會需要刷新一段時間。

更好的是,當您需要使用大數據的數據集來調用數據庫時,因爲存儲數據會減慢應用程序的速度,即性能可能會嚴重下降。你可以在sql server中使用索引選項來快速返回數據。

相關問題