タグ

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

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

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

    100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋
    ikosin
    ikosin 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 せろ部屋
  • https://cero-t.hatenadiary.jp/entry/20151212/1449929908

  • BootのO/RマッパーにMyBatisを使いたい。 - 谷本 心 in せろ部屋

    DBアクセス層に何を使うかって、当によく話題になりますよね。 「これで間違いないでしょ」っていう鉄板の選択肢がないから、だと思うわけですが 「SQLを書きたい日人」な僕としては、消去法的にMyBatisを使っています。 消去法って言うからには、消えた選択肢があるわけで。 Hibernate : アイドントライク ハイバネートサン JPA : アイドントライク ハイバネートサン Doma : アイドントライク APT S2JDBC : キャノット ユーズ ウィズ スプリング DBflute : 少し文化が違うんです。 Mirage : 開発止まっちゃったし。 ホントはMirageあたりが大好物で、過去に実案件に投入した時には まったく問題が起きなくて素晴らしかったのですが 開発が止まっていることと、実績的なアレでなかなか使いにくいんです。 そんなわけで消去法的に残ったMyBatisを使う

    BootのO/RマッパーにMyBatisを使いたい。 - 谷本 心 in せろ部屋
  • 1