當前位置:編程學習大全網 - 源碼下載 - Tikv源代碼分析

Tikv源代碼分析

TiDB是PingCAP自主研發的開源分布式關系數據庫,具有商用數據庫的數據可靠性、可用性和安全性特點,支持在線彈性級別擴展,兼容MySQL協議和生態,創新性地實現了OLTP和OLAP的融合。

TIDB 3.0版本顯著提高了大規模集群的穩定性,支持150+存儲節點和300+TB存儲容量,可長期穩定運行。在易用性方面,引入了大量的優化來降低用戶的運維成本,包括Information_Schema中引入了幾個實用的系統視圖、EXPLAIN ANALYZE、SQL Trace等等。性能方面,尤其是OLTP性能,3.0相比2.1也有很大提升,其中TPC-C性能提升約4.5倍,Sysbench性能提升約1.5倍。就OLAP而言,TPC-H 50G Q15由於執行查看可以執行,到目前為止TPC-H的22個查詢都可以正常運行。新功能包括窗口功能、視圖(實驗功能)、分區表、插件系統和悲觀鎖(實驗功能)。

截至發稿時,TiDB已經在500+用戶的生產環境中長期穩定運行,覆蓋金融、保險、制造、互聯網、遊戲等多個領域,涉及交易、數據中心、歷史數據庫等多個業務場景。不同業務場景對關系數據庫的需求可以用“百花齊放”來形容,但是對關系數據庫最根本的需求並沒有改變,比如數據可靠性、系統穩定性、可擴展性、安全性和易用性。請跟隨我們的腳步,梳理壹下TiDB 3.0有哪些驚喜。

與2.1版本相比,3.0版本顯著提高了大規模集群的穩定性,支持單集群150+存儲節點,300+TB的存儲容量長期穩定運行。主要優化點如下:

1.優化Raft副本之間的心跳機制,根據區域的活躍度調整心跳頻率,減輕冷數據對集群的負擔。

2.該熱點調度策略支持更多的參數配置,采用更高的優先級,提高了熱點調度的準確性。

3.優化PD調度流程,提供調度限流機制,提高系統穩定性。

4.增加分布式GC功能,提高GC的性能,減少大型集群的GC時間,提高系統的穩定性。

眾所周知,數據庫查詢計劃的穩定性對業務非常重要。3.0版本采用多種優化方法來提高查詢計劃的穩定性,具體如下:

1.增加了快速分析功能,以提高收集統計信息的速度,減少集群資源的消耗及其對業務的影響。

2.增加增量分析功能,提高收集單調遞增指標統計信息的速度,減少集群資源消耗及其對業務的影響。

3.在CM-Sketch中加入TopN的統計信息,從而緩解CM-Sketch哈希沖突帶來的大量估算,提高成本估算的準確性和查詢計劃的穩定性。

4.引入Skyline剪枝框架,用規則來防止查詢計劃過分依賴統計信息,從而緩解由於統計信息的滯後性導致選擇的查詢計劃不是最優的情況,提高查詢計劃的穩定性。

5.增加了SQL計劃管理功能,支持在查詢計劃不準確時手動綁定查詢計劃,提高了查詢計劃的穩定性。

1.聯機事務處理

與2.1版本相比,Sysbench的點選擇、更新索引、更新非索引均提升約1.5倍,TPC-C性能提升約4.5倍。主要優化點如下:

1.TiDB不斷優化SQL執行器,包括:優化不存在子查詢到反半連接的轉換,優化多表連接時的連接順序選擇。

2.優化索引連接邏輯,擴展索引連接運算符的適用場景,提高成本估算的準確性。

3.TiKV的批量收發消息功能,可以提高寫密集型場景TPS 7%左右,讀密集型場景TPS 30%左右。

4.TiKV優化了內存管理,減少了叠代器鍵綁定選項的內存分配和副本,通過多列族***,提高了緩存命中率。

5.引入Titan存儲引擎插件,提升值超過1KB時的性能,緩解RocksDB的寫放大問題,減少對磁盤IO的占用。

6.TiKV增加多線程Raftstore和Apply功能,提高單個節點內的可擴展性,從而提高單個節點內的並發處理能力和資源利用率,降低延遲,大幅提升集群寫能力。

相比2019年初,TiDB Lightning的性能提升了3倍,從100GB/h提升到300GB/h,即從28MB/s提升到85 MB/s,優化點如下:

1.提高將SQL轉換為KV對的性能,減少不必要的開銷。

2.提高單表導入性能,支持批量導入。

3.提高TiKV-Importer導入數據的性能,支持分別導入數據和索引。

4.TiKV-Importer支持上傳SST文件的限速功能。

RBAC(Role-Based Access Control,基於角色的訪問控制)是商業系統中最常見的權限管理技術之壹,通過RBAC的思想可以構建最簡單的“用戶-角色-權限”訪問控制模型。在RBAC中,用戶與角色相關聯,權限與角色相關聯,角色與權限的關系壹般是多對多。用戶可以通過成為什麽角色來獲得該角色的權限,從而簡化權限的管理。這個版本的叠代RBAC函數是發達國家。

IP白名單功能(企業版功能):TiDB提供基於IP白名單的網絡安全訪問控制,用戶可以根據實際情況配置相關訪問策略。

審計日誌功能(企業版功能):審計日誌記錄用戶對數據庫執行的操作。通過記錄審計日誌,用戶可以進行故障分析、行為分析、安全審計等。在數據庫上幫助用戶獲得數據執行。

加密存儲(企業版特性):TiDB利用RocksDB自帶的加密功能實現加密存儲的功能,保證所有寫入磁盤的數據都是加密的,降低數據泄露的風險。

完善permission語句的權限檢查,增加ANALYZE、USE、SET GLOBAL、SHOW PROCESSLIST語句的權限檢查。

1.添加SQL查詢慢查詢,豐富TiDB慢查詢日誌內容,如:協處理器任務數、平均/最長/90%執行/等待時間、執行/等待時間最長的TiKV地址,簡化慢查詢定位,提高慢查詢問題排查效率,增強產品可用性。

2.增加系統配置項的合法性檢查,優化系統監控項等。,提高產品的可用性。

3.添加關於TableReader、IndexReader和IndexLookupReader運算符的內存使用情況的統計信息,以提高查詢內存使用情況統計的準確性和處理內存消耗較大的語句的效率。

4.制定日誌規範,重構日誌體系,統壹日誌格式,方便用戶了解日誌內容,有助於通過工具對日誌進行量化分析。

5.增加解釋分析功能,提高SQL調優的可用性。

6.增加SQL語句的跟蹤功能,方便故障排除。

7.添加unix_socket以連接到數據庫。

8.增加了快速恢復已刪除表的功能,可以在數據被誤刪除時快速恢復數據。

TiDB 3.0增加了TiFlash組件來解決復雜的分析和HTAP場景。TiFlash是壹個列存儲系統,與行存儲系統實時同步,具有低延遲、高性能、事務壹致性讀取的特點。來自TiKV的實時同步行存儲數據轉換成列存儲格式,通過Raft協議持久化到壹組獨立的節點上,解決了行列混合存儲和資源隔離的問題。TiFlash可以作為行存儲系統(TiKV)的實時鏡像,實時鏡像可以獨立於行存儲系統,物理隔離行存儲和列存儲,為HTAP場景提供完善的資源隔離方案和最佳推薦方案;還可以作為行存儲表的索引,用行存儲提供智能OLAP服務,復雜混合查詢性能提升約10倍。

TiFlash目前處於Beta階段,計劃在2019 12 31之前GA。歡迎申請試用。

未來,我們將繼續在系統穩定性、可用性、性能和彈性擴展方面進行投入,為用戶提供極致的靈活性、極致的性能體驗和極致的用戶體驗。

穩定性方面,V4.0將繼續完善V3.0非GA的主要特性,如悲觀事務模型、視圖、表分區、Titan行存儲引擎和TiFlash列存儲引擎;引入近似物理備份恢復解決分布式數據庫備份恢復問題;優化PD調度功能等。

在性能方面,4.0版本將繼續優化事務流程,減少事務資源消耗,提升性能,如:1PC,省略獲取提交ts的操作等。

在彈性擴展方面,PD會提供彈性擴展所需的元信息供外部系統調用,外部系統可以根據元信息和負載動態伸縮集群,達到節約成本的目的。

我們認為,戰勝“未知”最好的武器是社區的力量,基礎軟件需要堅定地走開源路線。截至發稿,我們已經完成了41篇源閱讀文章。在TiDB的開源社區中有265個貢獻者和6個提交者。在此,我們對社區貢獻者表示衷心的感謝,也希望有更多誌同道合的人加入進來,也希望大家在TiDB這個開源社區裏都能有所收獲。

TiDB 3.0 GA發行說明:/v3.0/releases/3.0-ga/

  • 上一篇:相機拍的照片放在電腦上處理,用的什麼軟件?也就是讓相片好看些。謝謝
  • 下一篇:12306訂票支付途徑
  • copyright 2024編程學習大全網