看板 C_Sharp 關於我們 聯絡資訊
各位大大,這個問題在我心裡一直困擾很久了,雖然也做過測式,但還是不太了解。 需求:從資料庫中,以英文名稱對應中文姓名,例:傳入jack 得到 大明。 做一個class 其中function來讓程式呼叫 狀況一: 不使用MVC的狀況下,在gridview中的,RowCreated的事件中, 呼叫這個class,假設有十列,若這樣對應的話,在class中就會產生十次連 線去做對應這件事? 狀況二: 用MVC的狀況下,在controller中,若以linq來做 例如: var c = from v in aaaa select {.chiname = getchiname(row("english"))} 請問這樣的寫法下,假設資料一樣十行,也會產生十次連線嗎? 問題,其實很想用一次連線去做這件事,但因為分散資料庫,所以無法做關連, linked server也遇到了sql版本不同,效能很慘的狀況,所以得分散,不知道 各位是怎麼解決這樣的事的,這樣若有十個人用,就會產生100次以上的連線, 很可怕。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.121.234
MacPerson:答案是.... singleton module?最近書上看到給您作個參考 09/26 22:53
wind681201:可是假如第一個是jack,第二個是marry,還是得再連一次 09/26 23:37
soup514:singleton也是個做法 其實就是將資料load到記憶體 09/27 00:38
soup514:每次取用就不用回db抓 但要考慮資料大小 更新頻率 09/27 00:39
soup514:資料量很大 或許可以考慮hashtable方式 沒取過的才去db取 09/27 00:40
Litfal:連線的部分,.net會用Pool的方式去管理,應該不太需要擔心 09/27 08:03
Litfal:效能的部分,則要看系統是怎麼回事...以你的情況而言,獨體 09/27 08:11
Litfal:要用快取機制你得確保資料庫只有你會更新,或是容許一定的 09/27 08:12
Litfal:誤差。 09/27 08:12
MacPerson:L大給您請教 pooling機制 假設在 connetion string 已經 09/27 22:53
MacPerson:預設pooling 那元po所擔心的連線數問題是不是就解了? 09/27 23:00
MacPerson:因此在撰寫程式時 就不需擔心連線數問題.. 都交給poolin 09/27 23:01
Litfal:我是建議先這樣,Connection和DataContext保持用完即丟。 09/28 12:00
Litfal:原PO有多資料庫,會分別對應到不同的Pool,這的確會造成較 09/28 12:02
Litfal:大的負擔。 09/28 12:02