六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

體驗 TDengine 3.0 高性能的第一步,請學會控制建表策略

正如我們之前所言,在 3.0 當中,我們在產品底層做了很大的變化調整,除了架構更加科學高效以外,用戶體驗也是我們重點優(yōu)化的方向。以之前一篇文章為例:對于 Update 功能,用戶不再需要任何配置 ,默認即是比 2.0 更完善的機制。(https://mp.weixin.qq.com/s/7E8kl9W8IXROx_K0EGQPkg

切換到 3.0 版本之后(《如何把數(shù)據(jù)從 TDengine 2.x 遷移到 3.x ?》),我們面對的第一個問題就是建庫建表,在 3.0 版本中,這部分邏輯發(fā)生了重大變化,這對于 3.0 初體驗的用戶來說是十分重要的,是數(shù)據(jù)庫后續(xù)查詢/寫入性能保障的根基。有些表數(shù)量比較多的用戶剛換到 3.0 的時候,會感覺性能和 2.x 差一些,其實就是因為建庫時使用了默認配置,導致 vgroup 數(shù)量只有 2 個,因此無法利用到 TDengine 多線程并行的特性來處理數(shù)據(jù)。

相比起 2.0 ,3.0 的建表策略控制是很簡單的,它可以讓用戶無難度無成本地找到自己適合的配置。

簡而言之:只需要在建庫的時候指定合適的參數(shù)即可。

在 2.0 版本中,很多用戶都閱讀過這篇文章:https://mp.weixin.qq.com/s/H2GCESF40wnWYf4IKP_-9g,以期用自定義的建表邏輯來獲得更好的性能,更合理的開銷。

體驗 TDengine 3.0 高性能的第一步,請學會控制建表策略 - TDengine Database 時序數(shù)據(jù)庫

這篇文章中的幾個參數(shù)的邏輯著實是需要讀者好好理解一番的,而它復雜的根本在于,在 2.0 版本下,每個 vnode 的表數(shù)量在固定后是不可再調整的,所以只可以通過前期設定相對復雜的規(guī)則來實施控制。

而在 3.0 中,為了支持云原生場景下資源的靈活調配,不論是時序數(shù)據(jù)與元數(shù)據(jù)都需要分布式技術才可以做到。為此,我們把存在于 mnode 的普通表元數(shù)據(jù)移除(具體細節(jié)可參考:http://www.fjzmyy.cn/engineering/14534.html),讓其完全分布到了 vnode 上,采取了一致性哈希這種具有較好的容錯性和可擴展性的算法,以支持 vnode 的可拆分的特性(該特性會在未來的 3.x 企業(yè)版本中發(fā)布)

因此, 3.0 和 2.0 的建表流程是完全不一樣的,細節(jié)如下:

  1. 首先在建庫時,每個 vgroup 會負責存儲 0 至 2 的 32 次方-1 的等分長度;
  2. 建表階段,TDengine 3.0 首先會在客戶端通過對表名進行 hash 計算,得到一個 hash 值;
  3. 向管理節(jié)點發(fā)出 rpc 請求,取回數(shù)據(jù)庫配置和 vgroups 的相關內容等信息;
  4. 把建表請求中的 hash 值和取回的每個 vgroup 的 hash 范圍做一個比對;
  5. 把請求直接發(fā)送到對應的 vgroup 中的 vnode 上完成建表。(如果對 vgroup 和 vnode 的關系并不清晰,可以先移步?https://docs.taosdata.com/tdinternal/arch/

基于以上全新的建表方式,我們可以發(fā)現(xiàn),所建的每一個表的走向完全是受哈希函數(shù)來控制的,我們只需要控制好容器的數(shù)量就行了。

因此,在 database 級別,我們引入了這樣一個參數(shù)—— vgroups ,用來指定該數(shù)據(jù)庫使用的 vgroup 的數(shù)量。

比如:

create database test vgroups 8 ;

就會創(chuàng)建一個擁有 8 個 vgroup 的數(shù)據(jù)庫 test ,你在這個庫下新建的所有表,都會均勻地分配在 8 個 vgroup 里面。

體驗 TDengine 3.0 高性能的第一步,請學會控制建表策略 - TDengine Database 時序數(shù)據(jù)庫

而在他的上一級,還有更高級別的參數(shù) supportVnodes(默認 /etc/taos/taos.cfg 中配置),它決定了該數(shù)據(jù)節(jié)點可以支持的 vnode 數(shù)量,默認值為 0 ,代表 CPU 核數(shù)的2倍。

體驗 TDengine 3.0 高性能的第一步,請學會控制建表策略 - TDengine Database 時序數(shù)據(jù)庫

我們建庫時需要確保所有 dnode(數(shù)據(jù)節(jié)點)的 supportVnodes 之和,大于等于所有庫的 vnode 數(shù)目之和即可,否則會就報如下錯誤:Out of dnodes,提示你需要補充新的 dnode。

體驗 TDengine 3.0 高性能的第一步,請學會控制建表策略 - TDengine Database 時序數(shù)據(jù)庫

顯然,在 3.0 的架構下,用戶在建表的時候就省心多了,大家只需根據(jù)硬件資源規(guī)劃好 vgroups 的數(shù)量就行了。

在 vgroups 參數(shù)值的估算上,對于大部分場景依然保持和 2.0 一樣的邏輯。即——由于每個 vnode 都是一個相對獨立的工作單元,具有獨立的運行線程和內存空間,所以不超過該機器 CPU 核數(shù)的 2 倍即可。

但對于一些特定場景,vgroups 的值則需要結合多方因素做更精細化的計算,需要自己理解和多多調試,也歡迎聯(lián)系企業(yè)版團隊得到更深層次的性能優(yōu)化。