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

[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)

分享創造快樂