JSON -> JSONB 列转换在 Postgres 9.4 中的大致速度

Roughly how fast is JSON -> JSONB column conversion in Postgres 9.4

我希望从 Postgres 9.3 迁移到 9.4,并且在 JSON 列中有大量数据。虽然这很好,但我想看看迁移到更高效的列存储(JSONB 似乎是 — 一项非常令人兴奋的技术!)。

要实际迁移,我想知道类似

的迁移特征
ALTER TABLE table_with_json
    ALTER COLUMN my_json
    SET DATA TYPE jsonb
    USING my_json::jsonb;

(来自 )。

理想情况下,最好知道迁移 100 万和 1000 万条目需要多长时间,以及它如何扩展。

虽然我可以自己得到这些数字,但我认为这个问题可能对其他人有帮助。如果我最终自己尝试这个,我一定会为其他人提供答案,但不确定什么时候会发生。

从 JSON 迁移到 JSONB 花费了 282 秒。它基本上与插入数据所需的时间匹配 SQL INSERT.

测试环境:

  • PostgreSQL9.5
  • 4 核,16GB 内存
  • 2KB/行 JSON 内容
  • 520 万行

一些用于测试实例迁移的餐巾纸背面数字:

  • PostrgeSQL 9.6
  • 2 vcpu 核,8GB RAM,EBS 最大带宽 450 MBit/s
  • 930K 行
  • 20KB/行 json

用了 66:40min - 4000 秒。
在迁移期间,写入 IOPS 约为 250,读取为 50,cpu 在整个 运行.

期间保持在 60%