數據庫讀寫性能提升
更新(xin)時間 2023-12-08 17:04:24
最近更新時間: 2023-12-08 17:04:24
分享文章
本節主要介紹(shao)數據庫(ku)讀寫性(xing)能提升
常見的排查點:
- 如果數據庫有直接報錯信息Timeout,需要檢查實例的連接數是否已達到上限。
- 檢查方法:通過查看監控指標,查看當前活動連接數是否已經達到當前實例支持的最大連接數。
- 檢查連接方式是否合理。
- 檢查方法:檢查連接實例時,集群實例是否同時連接了多個mongos節點,副本集是否同時連接了主節點和備節點。
- 解決方案:如果是集群實例,連接實例時建議同時連接多個mongos節點,這樣可以分擔負載并提高可用性;如果是副本集實例,建議同時連接主備節點,這樣不僅提升了數據讀寫性能,而且避免了在發生主備節點切換后,從客戶端寫入數據報錯的問題。
- 分析實例的監控指標是否存在異常。
- 檢查方法:通過查看監控指標,觀察CPU使用率、內存使用率等使用情況。
- 解決方案:如果CPU和內存指標異常,需要檢查客戶端業務或者實例數據是否過于集中,造成負載過高。客戶端業務過于集中,則需要客戶端進行架構優化。數據過于集中,則需要對數據進行必要的分片。
- 檢查慢日志是否過多。
檢查方法:請參見查看慢日志。
解決方案:請參見慢操作優化。
其他的注意點:
- 執行查詢時,只選擇需要返回的字段,不需要的字段不要返回。修改數據時,只修改變化需要修改的字段,不要整個對象直接存儲全部修改。從而減少網絡和進程處理的負載。
- 同一個業務場景,能一次查詢返回的必須一次查詢,減少和數據庫的交互次數。
- 單個實例中,數據庫的總的個數不要超過200個,總的集合個數不要超過500個。
- 業務上線前,一定要對數據庫進行性能壓測,評估業務峰值場景下,對數據庫的負載情況。
- 禁止同時執行大量并發事務,且長時間不提交。
- 業務正式上線前,所有的查詢類別,都應該先執行查詢計劃檢查查詢性能。
- 檢查實例規格的性能基線,分析當前的業務需求是否達到上限。