下記のようなテーブルの1000万件のデータをカウントするプログラムをjavaで作成したのですが、resultsetのところでoutofmemoryが発生してしまいました。
住所 テーブル (テーブル名・カラム名は仮)
名前   id      住所
佐藤      1111   東京
佐藤      2222   東京
田中      3333   東京
清水      4444   東京
山田  5555   埼玉
SELECT 住所,COUNT(DISTINCT 名前) AS カウントFROM 住所テーブル GROUP BY 住所
試したこととして、fetchsizeを指定(100~10000)したり、postgreなのでautocommitをfalseにしなくてはいけない等を試しましたが、解消されませんでした。
おそらく原因はSELECT結果を格納するメモリが足りないのではなくて、SELECT処理自体がメモリを使うのかなと思っているのですが、
もしDBのデータが100億件とか増えた場合、SELECT処理自体のメモリ使用量が変わるなどはあるのでしょうか?
(これだとDB使う意味が薄れるのですが....)
fetchsize指定の仕方が間違っているとかは調査していていつか気づくと思っているのですが、根本的にSELECT処理自体のメモリ使用量が増える場合全く気づけないのでこの場で質問させていください

回答1件
あなたの回答
tips
プレビュー





