无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

創建數據表時提示more dnodes are needed

Simon Guan

2019-12-03 / ,

問題描述

TDengine Database 的客戶提出的問題是:服務器配置是48G總節點50個,創建一個數據庫和一個,在超級表下面現在有45000個子表,節點使用數量為46個,如果子表再增加的話,只能加配置了嗎?

創建數據表時提示more dnodes are needed - TDengine Database 時序數據庫

問題分析

當出現more dnodes are needed的出錯信息時,表示沒有更多的vnode用于創建表,這種情況有三種原因:

  • 硬盤空間不足,導致無法創建新的vnode
  • 硬盤沒有寫權限,導致無法創建新的vnode
  • 當前機器配置支持的vnode數目已經達到上限

前兩種情況很好解釋,如果是第三種原因,怎么在不改變機器配置的情況下增加可用表數目呢?TDengine Database的數據存儲在vnode上,一個vnode包含固定數量的表,每臺機器又包含了固定數量的vnode,可從這兩個方面調整參數。

1.增加vnode表數目

在創建數據庫的時候指定參數

create database db tables 2000 cache 10240 ablocks 4 tblocks 50 

這些參數含義如下:

  • tables:每個vnode允許創建表的最大數目
  • cache: 內存塊的大小,單位為字節
  • tblocks: 每張表最大的內存塊數
  • ablocks: 每張表平均的內存塊數

增加每個vnode的最大表數目需要更改tables參數,但該參數不能無限大,通常在4-20000之間。通過修改配置,可以提高機器能創建的最大表數目。但是TDengine的設計中,每張表都占用固定內存,大致公式是:

cache*ablocks + tblocks*8 + 1000

以上數據庫配置,每張表需要占用的內存約為42K,例如創建100萬表,需要42GB內存,各位可以自己計算一下當前機器配置能夠承載的表數目。也有的同學可能會想降低alockscache的大小,以便最大化表數目,那么需要注意以下幾點:

  • ablocks 最好大于2,至少需要大于1
  • cache 至少為每行數據總字節數的20倍,例如兩列的表,第一列為 timestamp,第二列為int,則每行數據為12字節,那么cache至少為240

當把這些參數都調整很小時,系統性能會下降,這也是題中應有之意。

2.增加vnode總數目

TDengine Database的vnode數目與計算機CPU核數有關,每個CPU核可以支持8個vnode,當總vnode數目小于50時,系統默認設置為50,當總vnode數目大于256時,系統默認設置為256。如果需要修改這個數字,可在配置文件/etc/taos/taos.cfg中修改numOfTotalVnodes參數。
還有一個參數maxTables需要關注,表示系統能夠創建的最大表數目,默認值為650000,當預計創建的表數量大于此值時,需要到/etc/taos/taos.cfg中修改。

結論

遺憾的是,以上這兩類方法,均不能動態修改。增加vnode表數目的方法,需要刪除數據庫;增加vnode總數目的方法,需要卸載數據庫重新安裝。
因此,各位在進行測試的時候,根據自己的數據量和機器配置,預先調整好參數。