为了加快数据的批量插入速度,Timescale 提供了一个名为 timescaledb-parallel-copy 的开源 并行导入器 程序。该程序通过使用多个工作线程同时运行多个 COPY 函数来实现迁移的并行化。

PostgreSQL 的原生 COPY 函数是事务性的且单线程的,不适合导入大量数据。如果文件至少按超表的时序维度进行时间顺序排列,timescaledb-parallel-copy 通过并行化此操作来提高性能。这使您能够充分利用硬件资源。

timescaledb-parallel-copy 通过保留行顺序来高效地导入数据。轮询方式在并行工作线程之间共享插入操作,可确保数据库更少地切换块。这改进了内存管理并尽可能使磁盘操作保持顺序。

  1. 从 github 存储库安装 timescaledb-parallel-copy

    go install github.com/timescale/timescaledb-parallel-copy/cmd/timescaledb-parallel-copy@latest
  2. 检查 timescaledb-parallel-copy 的版本

    timescaledb-parallel-copy --version
  3. 更改到包含要导入的 .csv 文件的目录。

  4. 要将数据导入云上的 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 上编辑此页面.