ブックマーク / cero-t.hatenadiary.jp (2)

  • 100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋

    要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事Java + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある

    100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋
    nishitki
    nishitki 2020/08/13
  • AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋

    以前のエントリーで、AWS LambdaJavaを使ってDynamoDBを呼び出した際に、初回起動にとても時間が掛かったという話を書きました。 http://d.hatena.ne.jp/cero-t/20160101/1451665326 今回は、この辺りの原因をもう少し追求してみます。 なぜ1回目と3回目のアクセスが遅いのか? AWS Lambdaの中身はよく知りませんが、おそらく、アップロードしたモジュールをTomcatみたいなコンテナとして起動させて、外部からコールしているんだろうと予想しました。それであれば、2回目以降のアクセスが早くなることは理解ができます。 ただ、1回目と3回目だけが極端に遅くて、2回目、4回目以降は早くなるというところは腑に落ちません。 その辺りを調べるべく、staticなカウンタを使って、値がどんな風に変化するかを調べてみました。 こんなソースコードです

    AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋
    nishitki
    nishitki 2016/01/07
  • 1