嗨,大家好,我需要您的意見。我處於需要使用ajax的情況,所以我需要每30秒查詢一次用戶信息.....哪個更有效率的查詢服務器(比如check首先是一個文本文件),如果有用戶信息的更新,則可以進行完整的數據庫查詢或直接每30秒直接查詢數據庫。請說明您的推理,以便我可以衡量我的決定...... 。提前致謝。服務器或數據庫
服務器或數據庫
回答
取決於您擁有的用戶數量,但做一些輪詢將不可能擴展。
你應該看看comet體系結構。您應該編寫一些中間件,只在需要時纔會與數據庫進行交互,並在內存或平面文件中執行大部分操作。中間件會在你的前端(web服務器)和實際的後端(數據庫)之間進行一些緩存。
我建議你也查看memcachedb(或任何鍵/值DB engine)來編碼你的中間件。
如果你沒有太多的用戶可以保留一些輪詢方案。
我想在Web服務器上緩存,使用壽命爲30秒,並拉取所有用戶數據以減少往返數據庫的次數。我也有客戶端使用Web緩存,而不是去數據庫。
它是最小增益很大的開銷,否則
如果您有少數用戶和少量的網絡客戶端,然後實現最簡單的解決辦法。
推理:除非您遇到嚴重的性能問題,否則不需要優化此類內容。我開始思考這個當:
- 有成千上萬的用戶在DB
- 此信息是查詢每秒數百個Web客戶端
,但如果你有10個用戶,那麼這可能意味着每10秒需要10個網頁瀏覽器詢問這些信息。你應該擔心你的服務器,因爲這將是無聊死了窮人CPU;)
+1 for KISS ..... – 2009-11-12 09:29:46
我會措施第一如果簡單版本(好像查詢數據庫直接第一)不是足夠好。
然後,如果這樣做不夠好,尋找更好的解決方案(仍然是測量結果)。
有很多ifs和取決於遠程給你很好的建議。
不知道我看到需要緩存,但也許我很天真? Cache如何知道數據是否已更改?
SELECT ... lots of columns FROM MyTable WHERE UserID = 1234 AND LastUpdated > @MyLastUpdated
只有在AND爲真時纔會做任何認真的工作?如果返回零行,它沒有改變 - 或者UserID = 1234不再存在,但是如果你需要知道查詢可以改變也可以返回)。因此,我不認爲它有必要執行「自@MyLastUpdated以來更改過的用戶ID = 1234」查詢,然後是完整的SELECT *。
如果您在列列表中檢索LastUpdated的值,請存儲該值,然後在下次檢查UserID = 1234是否發生更改時將其作爲參數提供。
(LASTUPDATED是不是你最後一次檢查的時間,但該記錄的最後更新,很明顯,但它確實需要由相同的時鐘每一次創建的時間上課的SQL框本身(而不是客戶端的PC !!),並考慮到秋季夏令時發生的情況。)
- 1. Advantage數據庫或SQL服務器
- 2. 虛擬化數據庫服務器或Web服務器?
- 3. Sql數據庫服務器
- 4. iOS - 服務器數據庫
- 5. 數據庫服務器CPU
- 6. 從服務器MySql數據庫更新本地服務器MySql數據庫
- 7. Redis在Web服務器前端或數據庫服務器後端
- 8. Wso2數據服務服務器超時數據庫連接
- 9. 訪問數據庫或web服務
- 10. Nodejs連接數據庫或REST服務
- 11. 使用客戶端訪問數據庫或服務器來訪問數據庫
- 12. Sql Azure是否通過數據庫或數據庫服務器收費
- 13. 如何數據庫表從一個數據庫服務器複製到另一臺數據庫服務器
- 14. 向遠程數據庫服務器發送數據和從遠程數據庫服務器發送數據
- 15. Architeture Web服務器,應用服務器和數據庫服務器
- 16. SSIS服務器和數據庫服務器的配置
- 17. php-mssql服務器數據庫連接使用wamp服務器
- 18. SQL服務器登錄錯誤遠程服務器數據庫
- 19. 亞馬遜擴展Web服務器的數據庫服務器
- 20. 從服務器A複製MongoDB數據庫到服務器B
- 21. 用於(遊戲)服務器通信的Web服務或共享數據庫?
- 22. 直接連接到SQL數據庫或通過客戶端 - 服務器服務
- 23. 檢查服務器上字數據庫的密碼或使用Web服務?
- 24. 如何確定是否存在SQL服務器或數據庫
- 25. 直接從服務器提供文件或使用數據庫?
- 26. 簡介的圖片存儲數據庫或服務器系統
- 27. Amazon AWS或專用服務器上的數據庫
- 28. 將SQL服務器數據庫導入到HDFS或HIVE
- 29. 服務器日誌記錄 - 在數據庫或日誌文件?
- 30. 應用程序服務器作業或數據庫作業?
+1 for Conditional GET – Piskvor 2009-11-12 09:15:05