台灣最大程式設計社群網站
線上人數
2110
 
會員總數:245250
討論主題:189111
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> 利用ajax實現"多線程"下載資料庫以減少client等待時間
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
利用ajax實現"多線程"下載資料庫以減少client等待時間
價值 : 10 QP  點閱數:2072 回應數:1

樓主

一個頭兩個大
初級專家
1530 29
1014 297
發送站內信

1,把1000萬筆資料依創建日期排序(用一般access會自動加入的索引"ID"排多即可),然後分割成每個只有20萬筆資料的mdb檔
2,在htm檔中用javascript指示當form submit時,那些mdb的網址在哪裡,才能確保用ajax送出時,會全部mdb都有去讀取.
3,若一頁要呈現有排序過的top 20筆資料,則對每個mdb檔都取出top 20筆後傳回網頁的javascript陣列,在javascript中將它們排序後,取出top 20筆呈現給client
4,xmlhttp中,記得一定要設open為true以確保全部mdb連線能"同時"送出.(詳情請參閱:http://wiki.moztw.org/index.php/AJAX_%E4%B8%8A%E6%89%8B%E7%AF%87)

此方法雖會增加伺服器的連線負擔,讓人覺得網頁應該會變慢,但事實上應該反而會讓網頁加快,理由如下:
1,(每個)mdb檔被某個client佔用做sql處理的時間被縮短,故後面遲來的client不必等太久,前面的人就會退出來讓他進
2,即使所有mdb檔都在同一架主機上,雖然會造成伺服器的連線數倍增,但就像flashget這類多線程下載軟體一樣,雖然會造成伺服負擔增加,但郤能縮短client的等待時間達好幾倍.
3,若把mdb檔分散到不同的主機上,就能分散每台主機的連線負擔

寫入資料庫時也一樣可用多線程,例如想對ID=782的資料做更動,送出去的所有mdb連線中,只有其中一個會成功對它的mdb做更動,其它的只會傳回找不到ID的訊息來讓您忽略

以上純屬個人想出來的理論,
手邊也沒資料筆數達數百萬到數千萬的資料庫可測試,
希望有興趣測試的前輩能做測試後,能報告一下自己測出來的實驗數據(多線程設計之前跟之後的各項數據),
以方便大家瞭解此法是否真的可行,與及找出當使用access時,每個mdb的資料最多只能到多少筆,才不會讓client覺得等太久.

搜尋相關Tags的文章: [ ajax ] , [ access ] , [ mdb ] , [ 多線程 ] , [ 效能 ] ,
本篇文章發表於2006-09-17 15:34
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

ihon
捐贈 VP 給 ihon 檢舉此回應
ajax 還是 n-tire 的架構, 非 javascript 直接操作資料庫
即使 client 改成多線程 loading 仍然在 server 上
本篇文章回覆於2006-09-21 10:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.