對於有大量傳入讀取和更新(最終成爲數據庫I/O)的大型網站(流量明智),緩解性能影響的最佳方法是什麼?我能想到的一個解決方案是 - 寫入,緩存然後延遲寫入(使用單獨的作業);爲了閱讀,使用memcached的概念。其他更好的解決方案?緩解大型網站數據庫I/O bottoleneck的最佳方法是什麼?
回答
不要忘記優化您的查詢。大多數情況下,它不是磁盤I/O,而是書寫質量差的查詢,後者成爲瓶頸。
如果內容不會經常更改,您還可以緩存查詢結果以及整個網頁。
它非常依賴於使用模式和數據類型。根據交易是否會得到支持,您是否對完全一致或「最終一致性」感興趣,數據有多大(它是否都適合大容量內存?),數據有多複雜和查詢,列表可能會繼續......很多變量,只有在列出所有約束/要求後,您才能做出正確的決定。兩個一般建議,但:
- 使用固態硬盤
- 使用分佈式體系結構與分佈「的NoSQL」(鍵/值)的方法(前提是你沒有使用複雜的關係和交易)
以下是對數據庫性能的最常見的解決方案:
- 緩存(內存緩存等)
- 內存添加到您的數據庫
- 多個數據庫服務器(主/從或分片)
- 使用不同的數據庫類型(NoSQL的,Redis的等)
- 索引,以加快讀PERF。 (小心,太多會影響寫入性能)
- 固態硬盤(快速固態硬盤將有很大的幫助)
- RAID
- 優化/優化SQL查詢
10年前的標準答案 - 除了優化你的特定數據庫 - 通過兩種方式使用MySQL進行擴展。
讀取可以通過兩種方式進行擴展。首先是緩存,它引入了可能的不一致性並創建了一個單獨的緩存層。通過創建可讀取數據庫的「只讀副本」,也可以在MySQL中對讀取進行縮放。任何寫入都必須應用於所有服務器,因此複製無助於寫入吞吐量。
寫入通過分片進行縮放。例如,想象所有名字爲'a'的用戶都被分配給某個服務器。現在設想一個更復雜的分片算法,其中特定行的主ID使用散列函數進行散列,並分配給服務器池中的一個。
Facebook是分級MySQL架構的最高級支持者之一。你可以讓單個表格「加入」,但你必須編寫自定義代碼,因爲你可能不得不從服務器跳到服務器 - 想象你想要得到朋友的時間線帖子,你不能簡單地加入它,你必須寫一些應用代碼。
一旦你分割你的數據庫,你不能做連接和範圍查找變得困難。這個子集有時被稱爲CRUD操作,因此MySQL是過度殺傷。許多中國社交網絡意識到這一點,並使用分片Redis(它比MySQL快得多),並編寫了自己的分片層和應用程序邏輯層。
想象一下分片中的下一個問題 - 您想要添加一個新服務器,並開始將某些用戶分配給該新服務器。
另一種方法是使用分佈式數據庫,通常使用NoSQL或NewSQL名稱,並有多種方法。有些人,比如MongoDB,有一個分片系統來管理這個映射,但需要手動步驟來添加服務器。 Cassandra有一個更靈活的集羣方案,稱爲chorded體系結構。像CouchBase和Aerospike這樣的系統使用隨機分佈機制來消除對碎片層的需求。這些數據庫中的某些數據庫每臺服務器每秒可能會有超過100,000到200,000個請求,而橫向擴展則會增加新的服務器 - 足夠用於非常大的操作。採用這種聚類方式,您通常可以獲得更高水平的冗餘和可靠性。
其他分佈式方法以更高效的方式表示數據,如圖形數據庫。如果您有一個更好地表示爲圖的問題,那麼聚類圖數據庫可能更合適。
- 1. 什麼是緩存數據庫查詢的最佳方法
- 2. 開始開發大型網站的最佳方式是什麼?
- 3. 什麼是以編程方式刪除大型數據庫的最佳方法
- 4. 訪問超大型數據庫的.Net的最佳方法是什麼?
- 5. 從網站上抓取數據的最佳方式是什麼?
- 6. 抓取網站數據(內容)的最佳方式是什麼?
- 7. 什麼是Ruby中大緩存的最佳解決方案?
- 8. 嘗試理解大型Java Swing代碼庫的最佳方法是什麼?
- 9. 處理大型數據表的最佳方式是什麼?
- 10. 2個網站的最佳解決方案是什麼
- 11. 找出我的網站緩慢的原因的最佳方法是什麼?
- 12. 什麼是適用於大流量網站的最佳AWS解決方案?
- 13. 翻譯大量文本數據的最佳方法是什麼?
- 14. 在大型網站上轉移到HTTPS的最佳方式是什麼?
- 15. 從網站查看大型文本文件的最佳方式是什麼?
- 16. 將大型列表插入SQL數據庫的最佳方式是什麼? [ANDROID]
- 17. 確定ASP.net網站客戶端的最佳方法是什麼?
- 18. 檢測網站國家代碼的最佳方法是什麼?
- 19. 寫一個移動網站的最佳方法是什麼?
- 20. 什麼是數據庫開發的最佳方法Android
- 21. 在數據庫中存儲IP的最佳方法是什麼?
- 22. 用H2數據庫測試JPA的最佳方法是什麼?
- 23. 什麼是複製數據庫的最佳方法?
- 24. 在php中連接數據庫的最佳方法是什麼?
- 25. 實現數據庫同步的最佳方法是什麼?
- 26. 創建數據庫驅動的Java網站的最佳方法?
- 27. 什麼是SSIS包的最佳網站
- 28. 將網站導入Visual Sourcesafe 2005數據庫的最佳方法
- 29. 將數據庫集成到網站的最佳方法?
- 30. 什麼是Android的最佳數據庫?