最近、Linux サーバーに PostgreSQL データベースをデプロイしました。
ストアド プロシージャの 1 つに約 20 から 24 秒かかります。空のデータベースでも同じストアド プロシージャを実行しましたが (行が返されません)、同じ時間がかかっています。集計関数が原因で遅延が発生することがわかりました。
ここで関数ARRAY_TO_JSON(ARRAY_AGG(
を削除すると、結果は1秒以内にフェッチされます。
以下は私のコードスニペットです:
SELECT ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(A))) FROM (
select billservice.billheaderid,billservice.billserviceid AS billserviceid,.....(around 120 columns in select ).....
)A;
実行計画の説明:
以前、私は PostgreSQL データベースを Windows サーバーにデプロイしましたが、同じストアド プロシージャにかかる時間はわずか 1 ~ 1.5 秒でした。どちらの場合も、同じ量のデータを持つ同じデータベースでテストしました。また、両方のサーバーはRAM、プロセッサなどの同じ構成を持っています。また、同じPostgreSQL構成もあります。Linux サーバーでストアド プロシージャを実行すると、CPU 使用率が 100% になります。
同じ解決策があれば教えてください。