为了加快数据的批量插入速度,Timescale 提供了一个名为 timescaledb-parallel-copy
的开源 并行导入器 程序。该程序通过使用多个工作线程同时运行多个 COPY
函数来实现迁移的并行化。
PostgreSQL 的原生 COPY
函数是事务性的且单线程的,不适合导入大量数据。如果文件至少按超表的时序维度进行时间顺序排列,timescaledb-parallel-copy
通过并行化此操作来提高性能。这使您能够充分利用硬件资源。
timescaledb-parallel-copy
通过保留行顺序来高效地导入数据。轮询方式在并行工作线程之间共享插入操作,可确保数据库更少地切换块。这改进了内存管理并尽可能使磁盘操作保持顺序。
- 安装 Go 运行时 版本 1.13 或更高版本。
- 创建 Timescale 服务.
- 收集 您的服务 的连接详细信息。
- 在数据库上创建 超表 以插入数据。确保您使用与
.csv
文件中的数据匹配的模式。
从 github 存储库安装
timescaledb-parallel-copy
go install github.com/timescale/timescaledb-parallel-copy/cmd/timescaledb-parallel-copy@latest检查
timescaledb-parallel-copy
的版本timescaledb-parallel-copy --version更改到包含要导入的
.csv
文件的目录。要将数据导入云上的
tsdb
数据库,请将<NUM_WORKERS>
设置为数据库中 CPU 数量的两倍。例如,如果您有 4 个 CPU,<NUM_WORKERS>
应为8
。timescaledb-parallel-copy \--connection "host=<CLOUD_HOST> \user=tsdbadmin password=<CLOUD_PASSWORD> \port=<CLOUD_PORT> \sslmode=require" \--db-name tsdb \--table <TABLE_NAME> \--file <FILE_NAME>.csv \--workers <NUM_WORKERS> \--reporting-period 30s注意
要将数据导入本地主机上的
tsdb
数据库,连接 参数应为"host=localhost user=postgres sslmode=disable"
关键字
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面.