jdbc를 사용해서 mysql에 10만개의 쿼리를 insert하는데 너무 느리네요ㅠㅠ

greathero의 이미지

PreparedStatement랑 addBatch기능을 사용해서 쿼리를 insert하는데
setAutoCommint은 false로 지정했고요.

10만개 insert하는데 12분정도 걸리는거 같습니다.

이게 정상적인 성능인건지 아니면 심하게 느린건지...

모르겠네요ㅠㅠ

개선할 수 있는 방법이 있을까요?

hosung의 이미지

결과만 보고 어느부분이 맞다 아니다를 판단하기엔 좀 섣부른 감이 있습니다.
즉 배가 아프다는 상황 하나만으로 장이 문제인지 위가 문제인지 판단하기 힘든것 처럼요.

10만개 insert 하는데 elapsed time을 12분이라고 하셧는데...
제 경험에 비춰보면 그것이 DB문제인지, 응용 App 문제인지, 또는 network 문제인지 여러 요인들은 다 봐야합니다.

만약 제가 질문자라고 물으신다면.. 전 허접하니깐 divide and conquer... :-)
우선 먼저 DB 자체내부에서 10만 insert를 해보겠습니다. -> 이 결과 12분이 나오면 그 이후에는 DataBase 쪽을 살펴 보셔야 되겠구요.
(insert하는 테이블에 column 갯수와도 또 index 와도 관련이 될 수 있는 부분이기에..)

DB 자체에서는 순식간인데 ResultSet만 받아오면 느리다 싶으면 응용 APP를 의심해 보시는게.....

하지만 경험상 저라면 아마도 mysql jdbc driver를 믿을것 같습니다. :-)

--오늘도 For() 와 If()로 나의 하루는 시작되고 끝난다.


--오늘도 For() 와 If()로 나의 하루는 시작되고 끝난다.

jos77의 이미지

autocommit false 재확인해보시기 바랍니다. 그리고... jdbc 드라이버 어딘가에 설정하는 부분이 있거나...
프로그램 내부에서 자동으로 commit 하는 부분 있는지 확인하시고요...
여러번 테스트 해보시라는 말밖에 못하겠네요... 100~200개 1초 안 걸리는 경험으로 봐서는... 잘 모르겠네요.

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

hosung의 이미지

Bug Report를 보다가 이와 관련된 벤치마킹및 patch 테스트를 하신 마크 매튜란 분이 있네요.

http://bugs.mysql.com/bug.php?id=41532

http://www.jroller.com/mmatthews/entry/speeding_up_batch_inserts_for

--오늘도 For() 와 If()로 나의 하루는 시작되고 끝난다.


--오늘도 For() 와 If()로 나의 하루는 시작되고 끝난다.

sql2의 이미지

검색은 힘이다.

http://kldp.org/node/95301

thread 와 connection pool 쓰시고, resultset array 로 준비해놓고 for do ... , JVM 메모리옵션 확인하시고, MySQL Server 쪽은 iostat, conf 확인하세요.

구글패치는 진리입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.