JSP Tips

kenu
2004-07-13 05:56:30
http://okjsp.pe.kr
JDBC Àϰý(batch) ÀÛ¾÷

ÃâÆÇ»çÀÇ µ¿ÀǸ¦ ¾ò¾î¼­ ÀϺΠ¼½¼ÇÀ» °ø°³ÇÕ´Ï´Ù. ÇÁ·Î¸ð¼Çµµ °âÇϰí, ½ÉÇ÷À» ±â¿ïÀÎ ³»¿ëÀÌ ½Ã°£ ¼Ó¿¡ ÆÄ¹¯Çô ¹ö¸®Áö ¾Ê±â¸¦ ¹Ù¶ó´Â ¸¶À½À¸·Î ¿Ã¸³´Ï´Ù. µµ¿òÀ» ÁֽŠÇѺû¹Ìµð¾î ÃâÆÇ»çÀÇ ÀÓ¼ºÃá ÆÀÀå´Ô²² °¨»çµå¸³´Ï´Ù.

¹ßÃé: ¸ðµ¨2·Î ´Ù½Ã ¹è¿ì´Â JSP, 7Àå, p252

7.8.        Àϰý(batch) ÀÛ¾÷

ÀÏÁ¤ÇÑ ÇüÅÂÀÇ ¹Ýº¹ÀûÀÎ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÒ ¶§, DBMS¸¶´Ù ±¸Á¶ÀûÀÎ Â÷À̰¡ À־ °á°ú°¡ Á¦°¢°¢ÀÌÁö¸¸ ¿À¶óŬÀÇ °æ¿ì PreparedStatement¿Í batch°ü·Ã ¸Þ¼ÒµåÀÇ Á¶ÇÕÀº ¾ÆÁÖ È¯»óÀûÀÎ °á°ú¸¦ °¡Á®¿Â´Ù. BMT(BenchMark Test)¸¦ ÀÌ¿ëÇØ¼­ ¾Ë¾Æº¸¾Ò´Ù.

 

jdk1.3 ¹öÀüºÎÅÍ Ãß°¡µÈ °ÍÀÌ Àִµ¥, Statement¸¦ ÀϰýÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÑ °ÍÀÌ´Ù. addBatch() ¸Þ¼Òµå¿Í executeBatch() ¶ó´Â ¸Þ¼Òµå¸¦ »ç¿ëÇØ¼­ À§ ¼Ò½º¸¦ ´ÙÀ½°ú °°ÀÌ ¹Ù²ãº¸¾Ò´Ù.

[¿¹Á¦ 7-1]           jdbc09.jsp

¡¦ ÀÌÀü »ý·« ¡¦

%>start:<%=System.currentTimeMillis()-sTime%><hr><%

    // ¹Ýº¹ 15000ȸ

    for(int i=0; i<15000; i++) {

    //   Äõ¸®¸¦ ¸¸µé¾î¼­ ½ÇÇàÇÑ´Ù.

        queryBuf.setLength(0);

        queryBuf.append("INSERT INTO TEST_TABLE (SEQ, SUBJECT) VALUES ( " )

                .append(i).append(", 'ÀÌ ÇàÀº ")

                .append(i).append(" ¹øÂ° ÀԷµǾú½À´Ï´Ù.' ) ");

    //   ¹èÄ¡¿¡ Ãß°¡ÇÑ´Ù.

        stmt.addBatch(queryBuf.toString());

    } // end for

%>before batch job :<%=System.currentTimeMillis()-sTime%><%

    // ÀúÀåµÈ Äõ¸®¸¦ ÇѲ¨¹ø¿¡ ½ÇÇà½ÃŲ´Ù.

    stmt.executeBatch();

%><hr>end:<%=System.currentTimeMillis()-sTime%><%

    // Statement¸¦ ´Ý´Â´Ù.

    stmt.close();

¡¦ ÀÌÇÏ »ý·« ¡¦

¸ðµ¨2·Î ´Ù½Ã ¹è¿ì´Â JSP

»ý·«µÈ ºÎºÐÀº jdbc07.jsp ¼Ò½º¿Í µ¿ÀÏÇÏ´Ù. º¯°æµÈ ºÎºÐÀº ¹Ýº¹¹® ¾È¿¡¼­ »ý¼ºµÈ Äõ¸®¸¦ executeUpdate(String) ¸Þ¼Òµå¸¦ ¼öÇàÇÏ´Â ´ë½Å¿¡ stmt ÀνºÅϽº¿¡ Ãß°¡ÇØÁÖ´Â addBatch(½ºÆ®¸µ) ¸Þ¼Òµå¸¦ ½ÇÇàÇÏ°í ¹Ýº¹ÀÌ ¿Ï·áµÇ¸é executeBatch() ¸Þ¼Òµå¸¦ ¼öÇàÇØ¼­ ÇѲ¨¹ø¿¡ ¸ô¾ÆÁÖ´Â ÀÛ¾÷À» ÇÑ´Ù.

PreparedStatement¿¡¼­ ¹èÄ¡ÀÛ¾÷À» ÇÏ·Á´Â °æ¿ì ´ÙÀ½°ú °°ÀÌ ¼Ò½º°¡ ¹Ù²î°Ô µÈ´Ù.

[¿¹Á¦ 7-2]           jdbc10.jsp

¡¦ ÀÌÀü »ý·« ¡¦

    // ¹Ýº¹ 15000ȸ

    for(int i=0; i<15000; i++) {

    //   Äõ¸®¸¦ ½ÇÇàÇÑ´Ù.

        pstmt.setInt(1, i);

        pstmt.setInt(2, i);

    //   ¹èÄ¡¿¡ Ãß°¡ÇÑ´Ù.

        pstmt.addBatch();

    } // end for

%>before batch job :<%=System.currentTimeMillis()-sTime%><%

    // ÀúÀåµÈ Äõ¸®¸¦ ÇѲ¨¹ø¿¡ ½ÇÇà½ÃŲ´Ù.

    pstmt.executeBatch();

%><hr>end:<%=System.currentTimeMillis()-sTime%><%

¡¦ ÀÌÇÏ »ý·« ¡¦

»ý·«µÈ ºÎºÐÀº jdbc08.jsp ¼Ò½º¿Í µ¿ÀÏÇÏ´Ù. ¸¶Âù°¡Áö·Î ¹Ýº¹¹® ¾È¿¡¼­´Â addBatch() ¸Þ¼Òµå¸¦ ÅëÇØ¼­ pstmt ÀνºÅϽº¿¡ Ãß°¡ÇÏ´Â ÀÛ¾÷À» ¼öÇàÇϰí, ¹Ýº¹ÀÌ ³¡³ª¸é Çѹø¿¡ ¹Ð¾îÁÖ´Â executeBatch() ¸Þ¼Òµå¸¦ ¼öÇàÇÑ´Ù. ½ÇÇà°á°ú´Â ¾ÆÁÖ ³î¶ó¿ü´Ù.

[±×¸² 7-1] StatementÀÇ executeBatch() »ç¿ë

[±×¸² 7-2] PreparedStatement ÀÇ executeBatch() »ç¿ë

executeBatch() ó¸® ½Ã ½ÇÇà½Ã°£Àº ±Ø°ú ±ØÀ̾ú´Ù. ÀÏ´Ü StatementÀÇ ¹èÄ¡°á°ú¸¦ º¸ÀÚ. jsp¿¡¼­ ¹Ýº¹¹®À» ¼öÇàÇÏ´Â ½Ã°£Àº 62¹Ð¸®ÃÊ ¹Û¿¡ ¾È°É·È°í, executeBatch()¸¦ ÅëÇØ¼­ DB¿¡¼­ µ¹¾Æ°¡´Â ½Ã°£À» ±â´Ù¸° °ÍÀÌ 33Ãʰ¡ ¼Ò¿äµÇ¾ú´Ù. µûÁö°í º¸¸é ³ë°¡´Ù´Â ÅèĹÀÌ ¾Æ´Ï¶ó ¿À¶óŬÀÇ ¸òÀ̶ó´Â ¾ê±â´Ù. ÀüüÀûÀ¸·Î µûÁö¸é ¹èÄ¡¸¦ ÇÏ´Â °ÍÀ̳ª ¾ÈÇÏ´Â °ÍÀ̳ª Å©°Ô Â÷À̰¡ ³ªÁö ¾Ê¾Ò´Ù.

ÇÏÁö¸¸, PreparedStatement¿¡¼­ ¹èÄ¡ÀÛ¾÷Àº ¾ê±â°¡ ´Ù¸£´Ù. Å×½ºÆ®Çϸ鼭 ´«ÀÌ Àǽɽº·¯¿ö¼­ ¸î ¹øÀÌ°í ´Ù½Ã ÇØºÃ´Ù. Å×À̺íÀ» »èÁ¦ÇÏ´Â ±¸¹®¿¡ ÁÖ¼®À» ´Þ¾Æ ³²°ÜµÎ¾î¼­ db¿¡ µé¾î°¡ È®ÀÎÀ» ÇØº¸´Ï Á¤»óÀûÀ¸·Î µ¥ÀÌÅͰ¡ µé¾î°¡ ÀÖ¾ú´Ù. 33ÃÊ °É¸®´ø ÀÏÀ» 0.59Ãʸ¸¿¡ ÇØ³½´Ù´Â °ÍÀº ȹ±âÀûÀÎ ÀÏÀÌ ¾Æ´Ò ¼ö ¾ø´Ù. 10¹è¼öÀÎ 150,000°ÇÀ» µ¹·Áµµ 10ÃÊ ÀüÈÄ·Î ¿Ï·áµÇ¾ú´Ù.

ÁÖÀÇ: ÀÌ Ã¥ÀÇ Å×½ºÆ®´Â ¿À¶óŬ 8.1.7¿¡ ±¹ÇÑµÈ °ÍÀ¸·Î ÇÊÀÚ°¡ mysql 3.23.53-max-nt¿¡¼­ Å×½ºÆ®ÇÑ °á°ú´Â ÆÇÀÌÇÏ°Ô ´Þ¶ú´Ù. Statement¿Í PreparedStatementÀÇ Â÷À̰¡ °ÅÀÇ ¾ø¾ú°í, °ÅÀÇ µ¿ÀÏÇÑ °á°ú¸¦ °¡Á®¿Ô´Ù. DBMSÀÇ ³»ºÎ±¸Á¶»óÀÇ Â÷ÀÌ·Î ÀÎÇÑ °á°úÀ̱⠶§¹®¿¡ °¢°¢ÀÇ ¼­¹ö¿¡¼­µµ Å×½ºÆ®¸¦ ÇÑ ÈÄ¿¡ ºü¸¥ °æ¿ì¸¦ ã¾Æ¼­ Àû¿ëÇϱ⠹ٶõ´Ù.

 

 ¼Ò½º : ex07-01-01.zip

Tag
tag´Â °Ô½Ã¹°ÀÇ ¼º°ÝÀ» ³ªÅ¸³»´Â Ű¿öµå¸¦ ÀÔ·ÂÇÏ´Â °ø°£ÀÔ´Ï´Ù.
tag´Â ·Î±×ÀÎ ÈÄ »ç¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
  • Informix ÀÇ °æ¿ìµµ ¿À¶óŬ°ú ¸¶Âù°¡Áö·Î ¾öû³­ Â÷À̸¦ º¸¿©ÁÝ´Ï´Ù.
  • pistos
  • 2004-07-13 16:11:36
  • x
  • mssqlÀº ¾î¶²°¡¿ä? Ȥ½Ã ÇØº¸½ÅºÐ °è½Å°¡¿ä?
  • »ïµð
  • 2004-07-14 17:10:36
  • x
  • preparedStatement´Â mysql°æ¿ì Á¶±Ý ´À·ÁÁý´Ï´Ù.
    oracleÀÇ °æ¿ì´Â È®½ÇÀÌ ºü¸¨´Ï´Ù.
  • ^^
  • 2004-07-19 16:51:16
  • x
´ÙÀ½±Û [err egov] 2.0.1 ÀÚµ¿ »ý¼ºµÈ »ùÇà ¾È µµ´Â °æ¿ì
>> 1958 JDBC Àϰý(batch) ÀÛ¾÷  [3] kenu 7321 2004-07-13 05:56:30
ÀÌÀü±Û Statement¿Í PreparedStatement