下記のようなテーブルの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
プレビュー