歡迎光臨
每天分享高質量文章

[NewLife.XCode]資料層快取(網站效能翻10倍)

NewLife.XCode是一個有10多年曆史的開源資料中介軟體,支援nfx/netcore,由新生命團隊(2002~2019)開發完成並維護至今,以下簡稱XCode。

整個系列教程會大量結合示例程式碼和執行日誌來進行深入分析,蘊含多年開發經驗於其中,代表作有百億級大資料實時計算專案。

開源地址:https://github.com/NewLifeX/X (求star, 760+)

快取是一把尖刀,合理使用可大大提升吞吐率!

2006年,某某省電網門戶卒!

經查,首頁某個sql先後執行了8次,正好對應頁面上8大塊新聞串列。

實在忍無可忍,於是在底層用Hashtable做了一層sql/DataSet快取,當時.NET1.1好像還沒有泛型字典。

於是世界清靜了,效果還不錯,特別對於訪問量很大的入口網站。

XCode的資料層快取設計於2003年,那時候只做網站和普通MIS系統,資料庫效能還很差……

資料層快取:以查詢sql為key,把查詢結果快取起來,提升系統效能!

經過16年的發展,XCode裡面資料層快取曾經一度被幹掉,若干年後又請回來,現在是這個樣子:

資料層DAL內,所有查詢類方法 Query/Select/SelectCount 都先走一趟快取(預設配置關閉);

所有添刪改操作類方法 Execute 都清空本DAL連線的所有快取;

** 多年前,查詢方法指定要用到的表名,添刪改方法指定會影響到的表名,做到部分錶快取過期。現在資料庫效能大有提升,為了“簡約”設計理念,簡化了快取設計。

資料層快取只有一個快取時間的設定DataCacheExpire,位於配置檔案 config/xcode.config 中,預設0秒錶示不啟用。

設定快取時間的方式有多種:

  • 修改配置檔案 config/xcode.config 中的DataCacheExpire
  • 魔方,魔方設定頁面,修改資料中介軟體頁的“資料層快取”
  • 直接修改DAL類的Expire屬性
  • 連線字串中配置DataCache引數,如 DataCache=60

前面兩者的本質相同,也是最常見用法。

連線字串配置提供了個性化,針對部分連線需要開啟資料層快取,或者不同連線採用不能快取時間的場景。

2016年起,XCode採取了“簡約”且稍微“保守”的理念,於是資料層快取預設配置0秒,大部分場景推薦使用10~60秒。

各種網站,推薦過期時間60秒起,經實際線上專案壓測,吞吐率可輕易從300rps提升到10000rps以上,命中率99.99%。

每一個應用系統,總會有那麼一些表或資料很少改變,非常適合使用資料層快取,建議在實踐中獲得最優快取時間!

已同步到看一看
贊(0)

分享創造快樂