COPY性能 TEXT型 vs XML型

せっかくなのでTEXT型とXML型の性能差および、UNLOGGED TABLEによる性能向上効果も合わせて比較してみた。測定のモデルは以前示したものと同じ、約1GB(2,592,000件)のXMLデータをTEXT型とXML型にそれぞれCOPYしたときの処理時間を示す。

測定結果

数値の単位はms。

通常テーブル UNLOGGEDテーブル
XML 58126.714 47997.477
TEXT 22930.184 14488.658

考察

  • 同じサイズのデータをCOPYするのにXML型はTEXT型と比較すると非常に時間がかかる。
    • 通常テーブルだと2.5倍
    • UNLOGGEDテーブルだと3.3倍。WAL書き込みがない分、処理時間の比率がより高くなる。
  • TEXT型の場合、UNLOGGEDテーブル化することで40%近いロード性能向上効果がある。
  • XML型の処理に時間がかかる原因はlibxml2によるXMLパース処理であると思われる。
    • XML型とTEXT型との処理の差異はlibxml2によるXMLパース処理のみと仮定。
    • XML型処理内のXMLパース処理時間比率をざっくり計算すると
      (47997.477 - 14488.658 / 47997.477) = 69.8%

結論

  • つまりXML型のロード処理を高速化するためには、XMLパース処理を高速化しないことにはどうにもならない?