TDengine 中的數據庫

數據庫概念

時序數據庫 TDengine 中數據庫概念,等同于關系型數據庫 MYSQL PostgreSQL 中的數據庫,都是對資源進行分割管理的單位。
TDengine 數據庫與關系型數據庫最大區別是跨庫操作,TDengine 數據庫跨庫操作除了少量幾個SQL 能支持外,其它幾乎不支持,所以在前期數據建模時要注意這點,盡可能的把橫向有關聯的設備規劃到一個數據庫中方便關聯查詢。

下面介紹對數據庫的主要操作 SQL 語句:

創建數據庫

CREATE DATABASE [IF NOT EXISTS] db_name [database_options]database_options:database_option ...database_option: {VGROUPS value| PRECISION {'ms' | 'us' | 'ns'}| REPLICA value| BUFFER value| PAGES value| PAGESIZE  value| CACHEMODEL {'none' | 'last_row' | 'last_value' | 'both'}| CACHESIZE value| COMP {0 | 1 | 2}| DURATION value| MAXROWS value| MINROWS value| KEEP value| KEEP_TIME_OFFSET value| STT_TRIGGER value| SINGLE_STABLE {0 | 1}| TABLE_PREFIX value| TABLE_SUFFIX value| DNODES value| TSDB_PAGESIZE value| WAL_LEVEL {1 | 2}| WAL_FSYNC_PERIOD value| WAL_RETENTION_PERIOD value| WAL_RETENTION_SIZE value| COMPACT_INTERVAL value| COMPACT_TIME_RANGE value| COMPACT_TIME_OFFSET value
}

參數說明

  • VGROUPS:數據庫中初始 vgroup 的數目。

  • PRECISION:數據庫的時間戳精度。ms 表示毫秒,us 表示微秒,ns 表示納秒,默認 ms 毫秒。

  • REPLICA:表示數據庫副本數,取值為 1、2 或 3,默認為 1; 2 僅在企業版 3.3.0.0 及以后版本中可用。在集群中使用,副本數必須小于或等于 DNODE 的數目。且使用時存在以下限制:

    • 暫不支持對雙副本數據庫相關 Vgroup 進行 SPLITE VGROUP 或 REDISTRIBUTE VGROUP 操作
    • 單副本數據庫可變更為雙副本數據庫,但不支持從雙副本變更為其它副本數,也不支持從三副本變更為雙副本
  • BUFFER: 一個 VNODE 寫入內存池大小,單位為 MB,默認為 256,最小為 3,最大為 16384。

  • PAGES:一個 VNODE 中元數據存儲引擎的緩存頁個數,默認為 256,最小 64。一個 VNODE 元數據存儲占用 PAGESIZE * PAGES,默認情況下為 1MB 內存。

  • PAGESIZE:一個 VNODE 中元數據存儲引擎的頁大小,單位為 KB,默認為 4 KB。范圍為 1 到 16384,即 1 KB 到 16 MB。

  • CACHEMODEL:表示是否在內存中緩存子表的最近數據。默認為 none。

    • none:表示不緩存。
    • last_row:表示緩存子表最近一行數據。這將顯著改善 LAST_ROW 函數的性能表現。
    • last_value:表示緩存子表每一列的最近的非 NULL 值。這將顯著改善無特殊影響(WHERE、ORDER BY、GROUP BY、INTERVAL)下的 LAST 函數的性能表現。
    • both:表示同時打開緩存最近行和列功能。
      Note:CacheModel 值來回切換有可能導致 last/last_row 的查詢結果不準確,請謹慎操作。推薦保持打開。
  • CACHESIZE:表示每個 vnode 中用于緩存子表最近數據的內存大小。默認為 1 ,范圍是[1, 65536],單位是 MB。

  • COMP:表示數據庫文件壓縮標志位,缺省值為 2,取值范圍為 [0, 2]。

    • 0:表示不壓縮。
    • 1:表示一階段壓縮。
    • 2:表示兩階段壓縮。
  • DURATION:數據文件存儲數據的時間跨度。可以使用加單位的表示形式,如 DURATION 100h、DURATION 10d 等,支持 m(分鐘)、h(小時)和 d(天)三個單位。不加時間單位時默認單位為天,如 DURATION 50 表示 50 天。

  • MAXROWS:文件塊中記錄的最大條數,默認為 4096 條。

  • MINROWS:文件塊中記錄的最小條數,默認為 100 條。

  • KEEP:表示數據文件保存的天數,缺省值為 3650,取值范圍 [1, 365000],且必須大于或等于 3 倍的 DURATION 參數值。數據庫會自動刪除保存時間超過 KEEP 值的數據從而釋放存儲空間。KEEP 可以使用加單位的表示形式,如 KEEP 100h、KEEP 10d 等,支持 m(分鐘)、h(小時)和 d(天)三個單位。也可以不寫單位,如 KEEP 50,此時默認單位為天。企業版支持多級存儲功能, 因此, 可以設置多個保存時間(多個以英文逗號分隔,最多 3 個,滿足 keep 0 <= keep 1 <= keep 2,如 KEEP 100h,100d,3650d); 社區版不支持多級存儲功能(即使配置了多個保存時間, 也不會生效, KEEP 會取最大的保存時間)。了解更多,請點擊 關于主鍵時間戳

  • KEEP_TIME_OFFSET:自 3.2.0.0 版本生效。刪除或遷移保存時間超過 KEEP 值的數據的延遲執行時間,默認值為 0 (小時)。在數據文件保存時間超過 KEEP 后,刪除或遷移操作不會立即執行,而會額外等待本參數指定的時間間隔,以實現與業務高峰期錯開的目的。

  • STT_TRIGGER:表示落盤文件觸發文件合并的個數。對于少表高頻寫入場景,此參數建議使用默認配置;而對于多表低頻寫入場景,此參數建議配置較大的值。

  • SINGLE_STABLE:表示此數據庫中是否只可以創建一個超級表,用于超級表列非常多的情況。

    • 0:表示可以創建多張超級表。
    • 1:表示只可以創建一張超級表。
  • TABLE_PREFIX:當其為正值時,在決定把一個表分配到哪個 vgroup 時要忽略表名中指定長度的前綴;當其為負值時,在決定把一個表分配到哪個 vgroup 時只使用表名中指定長度的前綴;例如,假定表名為 “v30001”,當 TSDB_PREFIX = 2 時 使用 “0001” 來決定分配到哪個 vgroup ,當 TSDB_PREFIX = -2 時使用 “v3” 來決定分配到哪個 vgroup

  • TABLE_SUFFIX:當其為正值時,在決定把一個表分配到哪個 vgroup 時要忽略表名中指定長度的后綴;當其為負值時,在決定把一個表分配到哪個 vgroup 時只使用表名中指定長度的后綴;例如,假定表名為 “v30001”,當 TSDB_SUFFIX = 2 時 使用 “v300” 來決定分配到哪個 vgroup ,當 TSDB_SUFFIX = -2 時使用 “01” 來決定分配到哪個 vgroup。

  • TSDB_PAGESIZE:一個 VNODE 中時序數據存儲引擎的頁大小,單位為 KB,默認為 4 KB。范圍為 1 到 16384,即 1 KB到 16 MB。

  • DNODES:指定 VNODE 所在的 DNODE 列表,如 ‘1,2,3’,以逗號區分且字符間不能有空格,僅企業版支持。

  • WAL_LEVEL:WAL 級別,默認為 1。

    • 1:寫 WAL,但不執行 fsync。
    • 2:寫 WAL,而且執行 fsync。
  • WAL_FSYNC_PERIOD:當 WAL_LEVEL 參數設置為 2 時,用于設置落盤的周期。默認為 3000,單位毫秒。最小為 0,表示每次寫入立即落盤;最大為 180000,即三分鐘。

  • WAL_RETENTION_PERIOD: 為了數據訂閱消費,需要 WAL 日志文件額外保留的最大時長策略。WAL 日志清理,不受訂閱客戶端消費狀態影響。單位為 s。默認為 3600,表示在 WAL 保留最近 3600 秒的數據,請根據數據訂閱的需要修改這個參數為適當值。

  • WAL_RETENTION_SIZE:為了數據訂閱消費,需要 WAL 日志文件額外保留的最大累計大小策略。單位為 KB。默認為 0,表示累計大小無上限。

  • COMPACT_INTERVAL:自動 compact 觸發周期(從 1970-01-01T00:00:00Z 開始切分的時間周期)。取值范圍:0 或 [10m, keep2],單位:m(分鐘),h(小時),d(天)。不加時間單位默認單位為天,默認值為 0,即不觸發自動 compact 功能。如果 db 中有未完成的 compact 任務,不重復下發 compact 任務。僅企業版 3.3.5.0 版本開始支持。

  • COMPACT_TIME_RANGE:自動 compact 任務觸發的 compact 時間范圍,取值范圍:[-keep2, -duration],單位:m(分鐘),h(小時),d(天)。不加時間單位時默認單位為天,默認值為 [0, 0]。取默認值 [0, 0] 時,如果 COMPACT_INTERVAL 大于 0,會按照 [-keep2, -duration] 下發自動 compact。因此,要關閉自動 compact 功能,需要將 COMPACT_INTERVAL 設置為 0。僅企業版 3.3.5.0 版本開始支持。

  • COMPACT_TIME_OFFSET:自動 compact 任務觸發的 compact 時間相對本地時間的偏移量。取值范圍:[0,23],單位: h(小時),默認值為 0。以 UTC 0 時區為例,如果 COMPACT_INTERVAL 為 1d,當 COMPACT_TIME_OFFSET 為 0 時,在每天 0 點下發自動 compact,如果 COMPACT_TIME_OFFSET 為 2,在每天 2 點下發自動 compact。僅企業版 3.3.5.0 版本開始支持。

創建數據庫示例

create database if not exists db vgroups 10 buffer 10

以上示例創建了一個有 10 個 vgroup 名為 db 的數據庫, 其中每個 vnode 分配 10MB 的寫入緩存

使用數據庫

USE db_name;

使用/切換數據庫(在 REST 連接方式下無效)。

刪除數據庫

DROP DATABASE [IF EXISTS] db_name

刪除數據庫。指定 Database 所包含的全部數據表將被刪除,該數據庫的所有 vgroups 也會被全部銷毀,請謹慎使用!

修改數據庫參數

ALTER DATABASE db_name [alter_database_options]alter_database_options:alter_database_option ...alter_database_option: {CACHEMODEL {'none' | 'last_row' | 'last_value' | 'both'}| CACHESIZE value| BUFFER value| PAGES value| REPLICA value| STT_TRIGGER value| WAL_LEVEL value| WAL_FSYNC_PERIOD value| KEEP value| WAL_RETENTION_PERIOD value| WAL_RETENTION_SIZE value| MINROWS value| COMPACT_INTERVAL value| COMPACT_TIME_RANGE value| COMPACT_TIME_OFFSET value  
}

修改 CACHESIZE

修改數據庫參數的命令使用簡單,難的是如何確定是否需要修改以及如何修改。本小節描述如何判斷數據庫的 cachesize 是否夠用。

  1. 如何查看 cachesize?

通過 select * from information_schema.ins_databases; 可以查看這些 cachesize 的具體值(單位為 MB)。。

  1. 如何查看 cacheload?

通過 show <db_name>.vgroups; 可以查看 cacheload(單位為字節)。

  1. 判斷 cachesize 是否夠用

如果 cacheload 非常接近 cachesize,則 cachesize 可能過小。 如果 cacheload 明顯小于 cachesize 則 cachesize 是夠用的。可以根據這個原則判斷是否需要修改 cachesize 。具體修改值可以根據系統可用內存情況來決定是加倍或者是提高幾倍。

:::note
其它參數在 3.0.0.0 中暫不支持修改

:::

查看數據庫

查看系統中的所有數據庫

SHOW DATABASES;

顯示一個數據庫的創建語句

SHOW CREATE DATABASE db_name \G;

常用于數據庫遷移。對一個已經存在的數據庫,返回其創建語句;在另一個集群中執行該語句,就能得到一個設置完全相同的 Database。

查看數據庫參數

SELECT * FROM INFORMATION_SCHEMA.INS_DATABASES WHERE NAME='db_name' \G;

會列出指定數據庫的配置參數,并且每行只顯示一個參數。

刪除過期數據

TRIM DATABASE db_name;

刪除過期數據,并根據多級存儲的配置歸整數據。

落盤內存數據

FLUSH DATABASE db_name;

落盤內存中的數據。在關閉節點之前,執行這條命令可以避免重啟后的預寫數據日志回放,加速啟動過程。

調整 VGROUP 中 VNODE 的分布

REDISTRIBUTE VGROUP vgroup_no DNODE dnode_id1 [DNODE dnode_id2] [DNODE dnode_id3]

按照給定的 dnode 列表,調整 vgroup 中的 vnode 分布。因為副本數目最大為 3,所以最多輸入 3 個 dnode。

自動調整 VGROUP 中 LEADER 的分布

BALANCE VGROUP LEADER

觸發集群所有 vgroup 中的 leader 重新選主,對集群各節點進行負載再均衡操作。(企業版功能)

查看數據庫工作狀態

SHOW db_name.ALIVE;

查詢數據庫 db_name 的可用狀態,返回值 0:不可用 1:完全可用 2:部分可用(即數據庫包含的 VNODE 部分節點可用,部分節點不可用)

查看 DB 的磁盤空間占用

select * from  INFORMATION_SCHEMA.INS_DISK_USAGE where db_name = 'db_name'   

查看DB各個模塊所占用磁盤的大小

SHOW db_name.disk_info;

查看數據庫 db_name 的數據壓縮壓縮率和數據在磁盤上所占用的大小

該命令本質上等同于:

select sum(data1 + data2 + data3)/sum(raw_data), sum(data1 + data2 + data3) from information_schema.ins_disk_usage where db_name="dbname"

訪問官網

更多內容歡迎訪問 TDengine 官網

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70946.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源電商項目、物聯網項目、銷售系統項目和社區團購項目

以下是推薦的開源電商項目、物聯網項目、銷售系統項目和社區團購項目&#xff0c;均使用Java開發&#xff0c;且無需付費&#xff0c;GitHub地址如下&#xff1a; ### 開源電商項目 1. **mall** GitHub地址&#xff1a;[https://github.com/macrozheng/mall](https://git…

如何設計一個短鏈系統?

短鏈系統設計的關鍵要點: 系統功能實現 短鏈生成:接收長鏈接,先檢查是否已有對應短鏈,存在則直接返回。否則,使用分布式 ID 生成器(如號段模式、SnowFlake 算法、數據庫自增 ID、Redis 自增等)生成唯一 ID,或通過哈希算法(如 MurmurHash)處理長鏈接得到哈希值。再將生…

數據結構(初階)(三)----單鏈表

單鏈表 概念 概念&#xff1a;鏈表是?種物理存儲結構上?連續、?順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。 結點 與順序表不同的是&#xff0c;鏈表的結構類似于帶車頭的火車車廂&#xff0c;&#xff0c;鏈表的每個車廂都是獨立…

游戲引擎學習第129天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 小妙招: vscode:定位錯誤行 一頓狂按F8 重構快捷鍵:F2 重構相關的變量 回顧并為今天的內容做準備 今天的工作主要集中在渲染器的改進上&#xff0c;渲染器現在運行得相當不錯&#xff0c;得益于一些優化和組織上的改進。我們計…

文字描邊實現內黃外綠效果

網頁使用 <!DOCTYPE html> <html> <head> <style> .text-effect {color: #ffd700; /* 黃色文字 */-webkit-text-stroke: 2px #008000; /* 綠色描邊&#xff08;兼容Webkit內核&#xff09; */text-stroke: 2px #008000; /* 標準語法 *…

yolov8 目標追蹤 (源碼 +效果圖)

1.在代碼中 增加了s鍵開始追蹤 e鍵結束追蹤 顯示移動距離(代碼中可調標尺和像素的比值 以便接近實際距離) 2.繪制了監測區域 只在區域內的檢測 3.規定了檢測的類別 只有人類才繪制軌跡 import osimport cv2 from ultralytics import YOLO from collections import defaultdic…

2.5 運算符2

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的 2.5.3 賦值運算符 賦值運算符將值存儲在左操作數指定的對象中。有兩種賦值操作&#xff1a; 1、簡單賦值&#xff0c;使用。其中第二…

地彈與振鈴

地彈&#xff08;Ground Bounce&#xff09;和振鈴&#xff08;Ringing&#xff09;是數字電路中常見的信號完整性問題&#xff0c;兩者都與高速開關和寄生參數有關&#xff0c;但表現形式和成因不同。以下是它們的對比及解決方法&#xff1a; 1. 地彈&#xff08;Ground Bounc…

解決Deepseek“服務器繁忙,請稍后再試”問題,基于硅基流動和chatbox的解決方案

文章目錄 前言操作步驟步驟1&#xff1a;注冊賬號步驟2&#xff1a;在線體驗步驟3&#xff1a;獲取API密鑰步驟4&#xff1a;安裝chatbox步驟5&#xff1a;chatbox設置 價格方面 前言 最近在使用DeepSeek時&#xff0c;開啟深度思考功能后&#xff0c;頻繁遇到“服務器繁忙&am…

二十三種設計模式

2 工廠方法模式 工廠模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在工廠模式中&#xff0c;我們在創建對象時不會對客戶端暴露創建邏輯&#xff0c;并且是通…

基于C語言對CAPL語法基礎的理解

.CAPL是基于C語言開發的&#xff0c;專門用于CANalyzer和CANoe工具環境&#xff0c;但是CAPL簡化了C語言&#xff0c;移除了復雜的指針概念&#xff0c;和一些不常用的關鍵字。 2.CAPL 腳本是基于事件驅動的&#xff0c;任何事件都有可能觸發CAPL腳本的執行&#xff0c;比如&a…

【Java SE】Java中String的內存原理

參考筆記&#xff1a; Java String 類深度解析&#xff1a;內存模型、常量池與核心機制_java stringx、-CSDN博客 解析java中String的內存原理_string s1 new string("ab");內存分析-CSDN博客 目錄 1.String初識 2.字符串字面量 3.內存原理圖 4. 示例驗證 4.…

Prometheus + Grafana 監控

Prometheus Grafana 監控 官網介紹&#xff1a;Prometheus 是一個開源系統 監控和警報工具包最初由 SoundCloud 構建。自 2012 年成立以來&#xff0c;許多 公司和組織已經采用了 Prometheus&#xff0c;并且該項目具有非常 活躍的開發人員和用戶社區。它現在是一個獨立的開源…

【Python爬蟲(95)】Python爬蟲進階:構建大型垂直領域爬蟲系統

【Python爬蟲】專欄簡介:本專欄是 Python 爬蟲領域的集大成之作,共 100 章節。從 Python 基礎語法、爬蟲入門知識講起,深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐,覆蓋網頁、圖片、音頻等各類數據爬取,還涉及數據處理與分析。無論是新手小白還是進階開發…

Node.js定義以及性能優化

Node.js Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行時&#xff0c;廣泛用于構建高性能的網絡應用。以下是一些常見的 Node.js 面試題及其解答&#xff0c;幫助你準備面試&#xff1a; 1. 什么是 Node.js&#xff1f; Node.js 是一個基于 Chrome V8 引擎的 JavaSc…

開源|Documind協同文檔(接入deepseek-r1、支持實時聊天)

Documind &#x1f680; 項目介紹 Documind 一個支持實時聊天和接入deepseek-r1模型AI助手的協同文檔編輯項目 前端&#xff1a;NextJS React TailwindCSS ShadcnUl Tiptap Zustand后端&#xff1a;NextJS Convex Liveblocks Clerk項目預覽&#xff1a;Documind 預覽…

JVM內存模型詳解:各個區域的作用與原理

引言 Java虛擬機&#xff08;JVM&#xff09;是Java程序運行的核心環境&#xff0c;它負責管理程序的內存、執行字節碼以及提供跨平臺的支持。理解JVM的內存模型對于編寫高效、穩定的Java程序至關重要。本文將詳細介紹JVM的內存模型&#xff0c;并深入探討各個內存區域的作用和…

機器學習之集成學習思維導圖

學習筆記—機器學習-集成學習思維導圖 20250227&#xff0c;以后復習看&#xff08;周老師的集成學習&#xff09; PS&#xff1a;圖片看不清&#xff0c;可以下載下來看。 往期思維導圖&#xff1a; 機器學習之集成學習Bagging&#xff08;隨機深林、VR-樹、極端隨機樹&…

【http://noi.openjudge.cn/】4.3算法之圖論——1538:Gopher II

[【http://noi.openjudge.cn/】4.3算法之圖論——1538:Gopher II] 題目 查看提交統計提問 總時間限制: 2000ms 內存限制: 65536kB 描述 The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at di…

Apache Spark中的依賴關系與任務調度機制解析

Apache Spark中的依賴關系與任務調度機制解析 在Spark的分布式計算框架中,RDD(彈性分布式數據集)的依賴關系是理解任務調度、性能優化及容錯機制的關鍵。寬依賴(Wide Dependency)與窄依賴(Narrow Dependency)作為兩種核心依賴類型,直接影響Stage劃分、Shuffle操作及容…