Ubuntu系统下TDengine Database的安装与性能测试实战

张开发
2026/4/11 5:29:22 15 分钟阅读

分享文章

Ubuntu系统下TDengine Database的安装与性能测试实战
1. Ubuntu系统下TDengine的安装准备在开始安装TDengine之前我们需要先确认系统环境。我使用的是Ubuntu 22.04 LTS版本这也是目前比较稳定的长期支持版本。你可以通过以下命令查看自己的系统版本lsb_release -a如果显示的是其他版本也不用担心TDengine对Ubuntu各个版本都有很好的兼容性。不过建议使用18.04及以上版本因为老版本可能会缺少一些必要的依赖库。硬件要求方面TDengine对资源的需求相当友好。我在一台老旧的笔记本i5-4200U8GB内存机械硬盘上测试也能流畅运行。当然如果是生产环境建议至少4核CPU8GB内存SSD存储特别提醒一点TDengine默认使用6030端口安装前最好检查下这个端口是否被占用sudo netstat -tulnp | grep 60302. 安装TDengine的具体步骤2.1 下载安装包TDengine提供了多种安装方式我推荐使用deb包安装这是最省事的方法。官网提供了两个必要的deb包TDengine-server主程序taosTools配套工具集下载时需要注意版本匹配。我选择的是3.2.2.0版本下载命令如下wget https://www.taosdata.com/assets-download/3.0/TDengine-server-3.2.2.0-Linux-x64.deb wget https://www.taosdata.com/assets-download/3.0/taosTools-2.5.2-Linux-x64-comp3.deb2.2 安装过程安装顺序很重要必须先安装server再装toolssudo dpkg -i TDengine-server-3.2.2.0-Linux-x64.deb sudo dpkg -i taosTools-2.5.2-Linux-x64-comp3.deb安装过程中会有两个交互提示是否加入现有集群首次安装直接回车跳过输入邮箱获取技术支持可选我遇到过的一个坑是权限问题。如果安装失败可以尝试sudo chown -R tdengine:tdengine /var/lib/taos sudo systemctl daemon-reload2.3 服务管理安装完成后TDengine会自动注册为系统服务。常用命令如下# 启动服务 sudo systemctl start taosd # 查看状态 sudo systemctl status taosd # 设置开机自启 sudo systemctl enable taosd验证服务是否正常运行taos -h localhost如果看到欢迎界面说明安装成功了。3. 基础使用与配置3.1 首次连接数据库连接本地数据库非常简单taos在交互界面中我们可以执行SQL语句。先创建个测试数据库CREATE DATABASE test; USE test;TDengine的一个特色是超级表Super Table概念它类似于传统数据库中的表模板。创建一个监测设备数据的超级表CREATE STABLE devices (ts TIMESTAMP, temperature FLOAT, humidity INT) TAGS (device_id BINARY(16), location BINARY(32));3.2 配置文件调整主配置文件位于/etc/taos/taos.cfg有几个关键参数值得关注# 数据存储目录 dataDir /var/lib/taos # 单个vnode的内存缓存大小 cacheBlockSize 16 # 每个数据库的vnode数量 vgroups 4修改配置后需要重启服务生效sudo systemctl restart taosd4. 性能测试实战4.1 测试环境说明我的测试机器配置CPU: i5-1135G7内存: 16GB存储: NVMe SSDOS: Ubuntu 22.04 LTS使用内置的taosBenchmark工具进行测试它可以模拟各种负载场景。4.2 写入性能测试执行以下命令测试写入性能taosBenchmark -I stmt -n 10000000 -t 10这个命令会创建10个子表插入1000万条记录使用预处理语句方式写入在我的设备上写入速度达到了约15万条/秒。更惊人的是增加线程数后性能还能线性增长taosBenchmark -I stmt -n 10000000 -t 100 -T 8使用8个线程时写入速度突破了80万条/秒。4.3 查询性能测试先插入1亿条测试数据taosBenchmark -I stmt -n 100000000 -t 1000然后测试几种典型查询全表计数冷查询SELECT COUNT(*) FROM test.meters;首次执行耗时约300ms之后因为缓存可以降到50ms以内。条件查询SELECT AVG(current) FROM test.meters WHERE locationCalifornia.SanFrancisco AND ts NOW - 1h;即使在上亿数据中响应时间也能控制在100ms左右。时间窗口聚合SELECT FIRST(ts), AVG(current), MAX(voltage) FROM test.d10 INTERVAL(10s);这种时序数据库的典型操作TDengine仅需30ms就能完成。5. 生产环境优化建议经过多次测试我总结了几条优化经验内存配置 在taos.cfg中调整cacheBlockSize 32 # 增大内存块 maxVgroups 64 # 增加虚拟节点数磁盘IO优化使用单独的SSD作为数据盘关闭atime挂载选项mount -o remount,noatime /var/lib/taos查询优化对常用过滤条件建立TAG索引合理设计时间分区策略使用连续查询(CQ)预计算热点数据监控与维护 TDengine自带监控接口可以通过RESTful API获取curl -u root:taosdata localhost:6041/rest/sql -d SHOW DNODE建议定期执行压缩和均衡操作COMPACT DATABASE test; BALANCE VGROUP;6. 常见问题解决在实际使用中我遇到过几个典型问题启动失败 检查日志/var/log/taos/taosd.log常见原因是端口冲突磁盘空间不足权限问题写入速度下降 可能是触发了自动压缩可以通过调整配置缓解comp 2 # 压缩级别 minTablesPerVnode 1000连接数不足 修改最大连接数限制maxConnections 5000时区问题 确保系统时区与数据库时区一致SET TIME_ZONEUTC8;对于物联网场景TDengine的稳定版本已经能够支撑千万级设备接入。我在一个智能电表项目中实测单节点每天可以稳定处理20亿条数据查询响应时间始终保持在毫秒级。

更多文章