TDengine產品提供一個數據庫數據的測試工具,支持數據的插入、查詢、訂閱等功能和性能的驗證。
(工具的參數內容有可能因版本更新而改變,請以 help 實際輸出的聯機幫助信息為準。)
TAOSDEMO命令幫助
root@taos-ec1:/dump# ./taosdemo --help
Usage: taosdemo [OPTION...]
?
-f The meta file to the execution procedure. Default is './meta.json'.
-u The TDengine user name to use when connecting to the server. Default is 'root'.
-P The password to use when connecting to the server. Default is 'taosdata'.
-c Configuration directory. Default is '/etc/taos/'.
-h The host to connect to TDengine. Default is localhost.
-p The TCP/IP port number to use for the connection. Default is 0.
-d Destination database. Default is 'test'.
-a Set the replica parameters of the database, Default 1, min: 1, max: 3.
-m Table prefix name. Default is 't'.
-s The select sql file.
-N Use normal table flag.
-o Direct output to the named file. Default is './output.txt'.
-q Query mode--0: SYNC, 1: ASYNC. Default is SYNC.
-b The data_type of columns, default: INT,INT,INT,INT.
-w The length of data_type 'BINARY' or 'NCHAR'. Default is 16
-l The number of columns per record. Default is 4.
-T The number of threads. Default is 10.
-i The sleep time (ms) between insertion. Default is 0.
-r The number of records per request. Default is 100.
-t The number of tables. Default is 10000.
-n The number of records per table. Default is 10000.
-x Not insert only flag.
-y Default input yes for prompt.
-O Insert mode--0: In order, 1 ~ 50: disorder ratio. Default is in order.
-R Out of order data's range, ms, default is 1000.
-g Print debug info.
-V, --version Print version info.
taosdemo支持兩種配置參數的模式,一種是命令行參數,一種是使用json格式的配置文件。
一、命令行參數
-f:指定taosdemo所需參數的meta文件。當使用該參數時,其他所有命令行參數都失效。可選項,缺省是NULL。
-u: 用戶名。可選項,缺省是“root“。
-P: 密碼。可選項,缺省是“taosdata”。
-c: 配置文件taos.cfg所在的路徑。因為taosdemo通過包含taos的動態庫,去鏈接taosd服務,所以需要做好配置文件。可選項,缺省是 “/etc/taos”路徑。
-h:taosd服務的FQDN。可選項,缺省是“localhost“。
-p: taosd服務的端口號。可選項,缺省是6030。
-d:數據庫名稱。可選項,缺省是“test”。
-a:副本個數,可選項。1 – 3,缺省是1。
-m:表名的前綴。可選項,缺省是“t”。
-s::執行該文件包含的多條 SQL 查詢命令。
-N:使用普通建表模式。有該選項時,全部創建普通表,否則缺省創建超級表,再根據超級表創建子表;
-o:指定執行結果輸出文件的路徑。可選項,缺省是./output.txt。
-q:查詢模式,0:同步模式;1:異步模式。可選項,缺省是0。
-b:列的類型。可選項,缺省是:INT,INT,INT,INT。
-w:BINARY或NCHAR數據類型的長度。可選項,缺省是16。
-l:列的個數。可選項,缺省是4。
-T:并發線程數。可選項,缺省是10。
-i:兩次sql插入的時間間隔,缺省是0。
-r:每條插入請求包含的記錄數,缺省是30000
-t:表的個數。可選項,缺省是10000。
-n:每個表插入的記錄數。可選項,缺省是10000。
-x:不僅僅插入數據。有該選項時,taosdemo還會進行查詢操作。
-y:提示詢問輸入時缺省輸入yes。
-O:插入亂序數據的比例,0:順序插入;> 0:亂序數據的百分比。可選項,缺省是0。
-R:亂序百分比不為0時,亂序時間戳范圍,單位:毫秒。可選項,缺省是1000。
-g:打印debug信息
-V: 打印taosdemo的debug信息。
–help: 打印命令參數列表。
二、json格式的配置文件中所有參數說明
taosdemo支持3種功能的測試,包括插入、查詢、訂閱。但一個taosdemo實例不能同時支持3中功能,一個taosdemo實例只能支持其中的一種功能,通過配置文件來指定進行哪種功能的測試。
1、插入功能測試的json配置文件
{
"filetype": "insert",
"cfgdir": "/etc/taos",
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"thread_count": 4,
"thread_count_create_tbl": 4,
"result_file": "./insert_res.txt",
"confirm_parameter_prompt": "no",
"insert_interval": 0,
"interlace_rows": 100,
"num_of_records_per_req": 100,
"databases": [{
"dbinfo": {
"name": "db",
"drop": "yes",
"replica": 1,
"days": 10,
"cache": 16,
"blocks": 8,
"precision": "ms",
"keep": 3650,
"minRows": 100,
"maxRows": 4096,
"comp":2,
"walLevel":1,
"cachelast":0,
"quorum":1,
"fsync":3000,
"update": 0
},
"super_tables": [{
"name": "stb",
"child_table_exists":"no",
"childtable_count": 100,
"childtable_prefix": "stb_",
"auto_create_table": "no",
"batch_create_tbl_num": 5,
"data_source": "rand",
"insert_mode": "taosc",
"insert_rows": 100000,
"childtable_limit": 10,
"childtable_offset":100,
"interlace_rows": 0,
"insert_interval":0,
"max_sql_len": 1024000,
"disorder_ratio": 0,
"disorder_range": 1000,
"timestamp_step": 10,
"start_timestamp": "2020-10-01 00:00:00.000",
"sample_format": "csv",
"sample_file": "./sample.csv",
"tags_file": "",
"columns": [{"type": "INT"}, {"type": "DOUBLE", "count":10}, {"type": "BINARY", "len": 16, "count":3}, {"type": "BINARY", "len": 32, "count":6}],
"tags": [{"type": "TINYINT", "count":2}, {"type": "BINARY", "len": 16, "count":5}]
}]
}]
}
“filetype”: 本taosdemo實例進行哪種功能測試。”insert”表示數據插入功能。必選項。
“cfgdir”: 配置文件taos.cfg所在的路徑。因為taosdemo通過包含taos的動態庫,去鏈接taosd服務,所以需要做好配置文件。可選項,缺省是 “/etc/taos”路徑。
“host”: taosd服務的FQDN。可選項,缺省是“localhost“。
“port”: taosd服務的端口號。可選項,缺省是6030。
“user”: 用戶名。可選項,缺省是“root“。
“password”: 密碼。可選項,缺省是“taosdata”。
“thread_count”: 插入數據時的并發線程數。可選項,缺省是1。
“thread_count_create_tbl”: 建子表時的并發線程數。可選項,缺省是1。
“result_file”: 測試完成后結果保存文件。可選項,缺省是本實例啟動目錄下的”./insert_res.txt”。
“confirm_parameter_prompt”: 執行過程中提示是否確認,為no時,執行過程無需手工輸入enter。可選項,缺省是no。
“insert_interval”: 兩次發送請求的間隔時間。可選項,缺省是0,代表無人工設置的時間間隔,單位為ms。。
“interlace_rows”: 設置輪詢插入每個單表數據的條目數,如果interlace_rows*childtable_count*supertable_num小于num_of_records_per_req時,則請求插入的數目以interlace_rows*childtable_count*supertable_num為準。可選項,缺省是0。
“num_of_records_per_req”: 每條請求數據內容包含的插入數據記錄數目,該數據組成的sql不能大于maxslqlen,如果過大,則取taood限制的1M長度(1048576)。可選項,缺省是INT64_MAX。0代表不插入數據,建議配置大于0。
“databases”: [{
“dbinfo”: { ?
“name”: 數據庫名稱。必選項。
“drop”: 如果數據庫已經存在,”yes“:刪除后重建;”no“:不刪除,直接使用。可選項,缺省是”no“。
“replica”: 副本個數,可選項。1 – 3,缺省是1。
“days”: 數據文件存儲數據的時間跨度,可選項。缺省是10天。
“cache”: 內存塊的大小,單位是MB,可選項。缺省是16MB。
“blocks”: 每個VNODE(TSDB)中有多少cache大小的內存塊,可選項。缺省是6塊。
“precision”: 數據庫時間精度,可選項。”ms”:毫秒, “us”:微秒。缺省是“ms”。
“keep”: 數據保留的天數,可選項。缺省是3650天。
“minRows”: 文件塊中記錄的最小條數,可選項。缺省是100。
“maxRows”: 文件塊中記錄的最大條數,可選項。缺省是4096.
“comp”:文件壓縮標志位,可選項。0:關閉,1:一階段壓縮,2:兩階段壓縮。缺省是2。
“walLevel”:WAL級別,可選項。1:寫wal, 但不執行fsync; 2:寫wal, 而且執行fsync。缺省是1。
“cachelast”:允許在內存中保留每張表的最后一條記錄。1表示允許。
“quorum”:異步寫入成功所需應答之法定數,1-3,可選項。缺省是1。
“fsync”:當wal設置為2時,執行fsync的周期,單位是毫秒,最小為0,表示每次寫入,立即執行fsync. 最大為180000,可選項。缺省是3000。
“update”: 支持數據更新,0:否;1:是。可選項。缺省是0。 ? },
“super_tables”: [{ ?
“name”: 超級表名稱,必選項。
“child_table_exists”: 子表是否已經存在,“yes”:是;”no”:否。指定“是”后,不再建子表,后面相關子表的參數就無效了。可選項,缺省是“no”。
“childtable_count”: 建立子表個數 。該值需要大于0。當child_table_exists為“no”時,必選項,否則就是無效項。
“childtable_prefix”: 子表名稱前綴。當child_table_exists為“no”時,必選項,否則就是無效項。確保數據庫中表名沒有重復。
“auto_create_table”: 子表的創建方式,“yes”:自動建表;”no”:提前建表。當child_table_exists為“yes”時無效。可選項,缺省是“no”。
“batch_create_tbl_num”: 一個sql批量創建子表的數目。
“data_source”: 插入數據來源,”rand”:實例隨機生成;“sample”:從樣例文件中讀取。可選項。缺省是“rand”。
“insert_mode”: 插入數據接口,”taosc”:調用TDengine的c接口;“resetful”:使用restfule接口。可選項。缺省是“taosc”。
“insert_rows”: 插入記錄數,0:一直插入,永不退出;>0:每個子表插入記錄數,完成后實例退出。可選項,缺省是0。
“childtable_offset”: 插入數據時,子表起始值。只在drop=no && child_table_exists= yes,該字段生效。
“childtable_limit”: 插入數據時,子表從offset開始,偏移的表數目。使用者可以運行多個 taosdemo 實例(甚至可以在不同的機器上)通過使用不同的 childtable_offset 和 childtable_limit 配置值來實現同時寫入相同數據庫相同超級表下多個子表。
“interlace_rows”: 跟上面的配置一致,不過該處的配置優先,每個stable可以有自己單獨的配置。
“insert_interval”: 同上。
“max_sql_len”: 同上
“disorder_ratio”: 插入數據時的亂序百分比,可選項,缺省是0。
“disorder_range”: 亂序百分比不為0時,亂序時間戳范圍,單位:ms。可選項,缺省是1000,即1秒或1000毫秒。
“timestamp_step”: 每個子表中記錄時間戳的步長,單位:ms。可選項,缺省是1,即1毫秒。
“start_timestamp”: 子表中記錄時間戳的起始值,支持”2020-10-01 00:00:00.000″和“now”兩種格式,可選項,缺省是“now”。
“sample_format”: 當插入數據源選擇“sample”時,sample文件的格式,”csv”:csv格式,每列的值與子表的columns保持一致,但不包含第1列的時間戳。可選項,缺省是”csv”。目前僅僅支持csv格式的sample文件。
“sample_file”:sample文件,包含路徑和文件名。當插入數據源選擇“sample”時,該項為必選項。
“tags_file”: 子表tags值文件,只能是csv文件格式,且必須與超級表的tags保持一致。當該項為非空時,表示子表的tags值從文件中獲取;為空時,實例隨機生成。可選項,缺省是空。
“columns”: [{ 超級表的column列表,最大支持1024列(指所有普通列+超級列總和)。默認的第一列為時間類型,程序自動添加,不需要手工添加。
“type”: 該列的數據類型 ,必選項。
“len”: 該列的長度,只有type是BINARY或NCHAR時有效,可選項,缺省值是8。
“count”:該類型的連續列個數,可選項,缺省是1。
}],
“tags”: [{ 超級表的tags列表,type不能是timestamp類型, 最大支持128個。
“type”: 該列的數據類型 ,必選項。
“len”: 該列的長度,只有type是BINARY或NCHAR時有效,可選項,缺省值是8。
“count”:該類型的連續列個數,可選項,缺省是1。
}]
2、查詢功能測試的json配置文件
{
"filetype": "query",
"cfgdir": "/etc/taos",
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"confirm_parameter_prompt": "no",
"databases": "db",
"query_times": 2,
"query_mode": "taosc",
"specified_table_query": {
"query_interval": 1,
"concurrent": 3,
"sqls": [
{
"sql": "select last_row(*) from stb0 ",
"result": "./query_res0.txt"
},
{
"sql": "select count(*) from stb00_1",
"result": "./query_res1.txt"
}
]
},
"super_table_query": {
"stblname": "stb1",
"query_interval": 1,
"threads": 3,
"sqls": [
{
"sql": "select last_row(ts) from xxxx",
"result": "./query_res2.txt"
}
]
}
}
?
“filetype”: 本taosdemo實例進行哪種功能測試。”query”表示數據查詢功能。必選項。
“cfgdir”: 配置文件taos.cfg所在的路徑。因為taosdemo通過包含taos的動態庫,去鏈接taosd服務,所以需要做好配置文件。可選項,缺省是 “/etc/taos”路徑。
“host”: taosd服務的FQDN。可選項,缺省是“localhost“。
“port”: taosd服務的端口號。可選項,缺省是6030。
“user”: 用戶名。可選項,缺省是“root“。
“password”: 密碼。可選項,缺省是“taosdata”。
“confirm_parameter_prompt”: 執行過程中提示是否確認,為no時,執行過程無需手工輸入enter。可選項,缺省是no。
“databases”: 數據庫名稱。必選項。
“query_times”: 每種查詢類型的查詢次數
“query_mode”: 查詢數據接口,”taosc”:調用TDengine的c接口;“resetful”:使用restfule接口。可選項。缺省是“taosc”。
“specified_table_query”: { 指定表的查詢
“query_interval”: 執行sqls的間隔,單位是毫秒。可選項,缺省是0。
“concurrent”: 并發執行sqls的線程數,可選項,缺省是1。每個線程都執行所有的sqls。
“sqls”: [{ 可以添加多個sql語句,最多支持100條。
“sql”: 查詢語句。必選項。
“result”: 查詢結果寫入的文件名。可選項,缺省是空,表示查詢結果不寫入文件。
}] ? },
“super_table_query”: { 對超級表中所有子表的查詢
“stblname”: 超級表名稱。必選項。
“query_interval”: 執行sqls的間隔,單位是毫秒。可選項,缺省是0。
“threads”: 并發執行sqls的線程數,可選項,缺省是1。每個線程負責一部分子表,執行所有的sqls。
“sqls”: [{ 可以添加多個sql語句,最多支持100條。
“sql”: “select count(*) from xxxx”。查詢語句,其中表名必須寫成 “xxxx”,實例會自動替換成子表名。restful使用db.xxxx。
“result”: 查詢結果寫入的文件名。可選項,缺省是空,表示查詢結果不寫入文件。
}] ? }
注意:
1、每條sql語句后的保存結果的文件不能重名,且生成結果文件時,文件名會附加線程號。
2、 查詢結果顯示:如果查詢線程結束一次查詢距開始執行時間超過30秒打印一次查詢次數、用時和QPS。所有查詢結束時,匯總打印總的查詢次數和QPS。
3、使用restful的接口時,需要使用dbname.tablename的形式做查詢操作,eg:select last_row(*) from db.stb0。
3、訂閱功能測試的json配置文件
{
"filetype":"subscribe",
"cfgdir": "/etc/taos",
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"databases": "db",
"confirm_parameter_prompt": "no",
"specified_table_query":
{
"concurrent":1,
"mode":"sync",
"interval":0,
"restart":"yes",
"keepProgress":"yes",
"sqls": [
{
"sql": "select * from stb00_0 ;",
"result": "./subscribe_res0.txt"
}]
},
"super_table_query":
{
"stblname": "stb0",
"threads":1,
"mode":"sync",
"interval":10000,
"restart":"yes",
"keepProgress":"yes",
"sqls": [
{
"sql": "select * from xxxx where ts > '2021-02-25 11:35:00.000' ;",
"result": "./subscribe_res1.txt"
}]
}
}
“filetype”: 本taosdemo實例進行哪種功能測試。”subscribe”表示數據查詢功能。必選項。
“cfgdir”: 配置文件taos.cfg所在的路徑。因為taosdemo通過包含taos的動態庫,去鏈接taosd服務,所以需要做好配置文件。可選項,缺省是 “/etc/taos”路徑。
“host”: taosd服務的FQDN。可選項,缺省是“localhost“。
“port”: taosd服務的端口號。可選項,缺省是6030。
“user”: 用戶名。可選項,缺省是“root“。
“password”: 密碼。可選項,缺省是“taosdata”。
“databases”: 數據庫名稱。必選項。
“confirm_parameter_prompt”: 執行過程中提示是否確認,為no時,執行過程無需手工輸入enter。可選項,缺省是no。
注意:這里的訂閱查詢sql目前只支持select * ,其余不支持。
“specified_table_query”: { 指定表的查詢
“concurrent”: 并發執行sqls的線程數,可選項,缺省是1。每個線程都執行所有的sqls。
“mode”: 訂閱模式。目前支持同步訂閱,缺省是sync。
“interval”: 執行訂閱的間隔,單位是毫秒。可選項,缺省是0。
“restart”: 訂閱重啟。”yes”:如果訂閱已經存在,重新開始,”no”: 繼續之前的訂閱。
“keepProgress”: 保留訂閱信息進度。yes表示保留訂閱信息,no表示不保留。該值為yes,restart為no時,才能繼續之前的訂閱。
“sqls”: [{
“sql”: 查詢語句。必選項。
“result”: 查詢結果寫入的文件名。可選項,缺省是空,表示查詢結果不寫入文件。
}] ? },
“super_table_query”: { 對超級表中所有子表的查詢
“stblname”: 超級表名稱。必選項。
“threads”: 并發執行sqls的線程數,可選項,缺省是1。每個線程都執行所有的sqls。
“mode”: 訂閱模式。
“interval”: 執行sqls的間隔,單位是毫秒。可選項,缺省是0。
“restart”: 訂閱重啟。”yes”:如果訂閱已經存在,重新開始,”no”: 繼續之前的訂閱。
“keepProgress”: 保留訂閱信息進度。yes表示保留訂閱信息,no表示不保留。該值為yes,restart為no時,才能繼續之前的訂閱。
“sqls”: [{
“sql”: ” select count(*) from xxxx “。查詢語句,其中表名必須寫成 “xxxx”,實例會自動替換成子表名。 ?
“result”: 查詢結果寫入的文件名。可選項,缺省是空,表示查詢結果不寫入文件。 ?
}] ? } ?
注意:每條sql語句后的保存結果的文件不能重名,且生成結果文件時,文件名會附加線程號。
文檔依據版本更新。



























