À̹ø ¾ÆƼŬ¿¡¼´Â ÀÚ¹Ù¿¡¼ÀÇ ¹èÄ¡ÀÛ¾÷¿¡ ´ëÇÏ¿© ³íÇÏ¿© º¸ÀÚ. ÀüºÎÅÍ À̺κп¡ ´ëÇÏ¿©
ÀÛ¼ºÀ» ÇÑ´Ù°í Á÷Á¢ Àû¾î³õ°í¼ ÀÌÁ¦¾ß ¸¸µé¾î ³»´Â ³î»õÀÇ °ÔÀ¸¸§À» ÀÌÇØÇØÁֱ⠹ٶõ´Ù.
¿Ö³Ä~~ ¿äÁò ³Ê¹« ¹Ù»Ú±â ¶§¹®¿¡.. ^^
ÀÌ·±°Å ÀÌ¹Ì ¾Ë°í ÀÖÀ¸¸é¼µµ È¥ÀÚ¸¸ÀÇ ±â¼úÀÎ³É ¼û±â°í ÀÖ´Â »ç¶÷µéÀÌ ÀÖÀ»±îºÁ ¿½ÉÈ÷ ¸¸µé¾î¼
¾ÆƼŬ·Î ¾´´Ù. È¥ÀÚ ¾Ë°í ÀÖÀ¸¸é ¹¹Çϸ®¿ä. ÀÎÅͳÝÀº Ç껧À¸·Î ÀÖ´Â °ÍÀÌ ¾Æ´Ï´Ù. Á¤º¸ÀÇ ¹Ù´ÙÀÎ
°ÍÀÌ´Ù.
Áö±Ý ½Ã°£ÀÌ ¾ø´Ù.. ¹Ù·Î ½ÃÀÛÇÑ´Ù.
ÀÏÀü ¹æ¸í·Ï¿¡ ÀÌ·± ÀÛ¾÷À» ÇÏ´Â ºÐÀÇ ¹®ÀÇ°¡ ÀÖ¾ú´Ù. ¿ä¾àÇÏ¸é ´ÙÀ½°ú °°Àºµ¥ "´ç½ÅÀÇ ¿¬±¸¼º°ú¸¦
Àß º¸°í ÀÖ´Ù, ¿ì¸® »çÀÌÆ®´Â ¹èÄ¡ÀÛ¾÷À» Pro*C·Î ÇÏ°í front-end´ÜÀº ÀÚ¹Ù·Î ÇÑ´Ù. ÇÏ°í ½ÍÀº
¸»ÀÎÁïÀº ¹èÄ¡µµ ÀڹٷΠ¥°í ½Í´Ù. ÆÛÆ÷¸Õ½º¸¦ ³ª°Ô ÇÏ´Â ¹æ¹ýÀ» ¾Ë·Á´Þ¶ó" ¶ó´Â °ÍÀÌ ¿äÁö¿´´Ù.
À۳⸻ÀÇ ÇÁ·ÎÁ§Æ®¿¡¼µµ ¹èÄ¡¸¦ Çϱä ÇßÁö¸¸ ±×¶§´Â java data¸¦ Àо¾î Visual Basic¿¡¼ ó¸®ÇÏ´Â
¹èÄ¡ÇÁ·Î±×·¥ÀÌ¾î¼ ÀÚ¹Ùº¸´Ù´Â VB¿¡ °¡±î¿î ÇüÅ¿´°í, °í»ýµµ ¸¹ÀÌ Çß´Ù.
ÇÏÁö¸¸ À̹ø¿¡´Â ¼ø¼ö ÀÚ¹Ù¹èÄ¡¸¦ ÀÌ¿ëÇϵµ·Ï ÇÑ´Ù. ´ç¿¬È÷ transtion»óȲÇÏÀ̹ǷΠinsert, update, delete¿¡
°üÇÑ °ÍÀÓÀ» ¿°µÎ¿¡ µÎ¾î¾ß ÇÑ´Ù.
¿ì¼± ¿ö¹Ö¾÷À¸·Î select¸¦ »¡¸® ÇØ¿Ã ¼ö ÀÖ´Â ¹æ¹ýÀ» Àá±ñ º¸µµ·Ï ÇÏÀÚ.
´Ü~ ¿ì¼± ¾Ë¾ÆµÎ¾î¾ß ÇÒ °ÍÀº À̹ø ¾ÆƼŬÀº ¿À¶óŬÀ» ÀÌ¿ëÇÑ »ùÇÃÀÓÀ» ¾Ë¾ÆµÎµµ·Ï ÇÏÀÚ.
¢º Select Query speed up!
Database record select¼Óµµ¸¦ ³ôÀÏ ¼ö ÀÖ´Ù? Èì.
¿À¶óŬ µ¥ÀÌÅͺ£À̽ºÀÇ ¸Þ¸ð¸® ±¸Á¶¿¡¼ »ç¿ëÇÏ´Â ¿µ¿ªÀ» Oracle JDBC±îÁö ¿¬°á½ÃÄÑ º¸¸é ½±°Ô º¸ÀÌ´Â
°ÍÀÌ´Ù. º¸Åë ¿À¶óŬ°°Àº °æ¿ì Software Code Areas, P.G.A (Program Global Area),
S.G.A (System Global Area) ·Î ³ª´¼ö ÀÖ´Ù
°£·«ÇÏ°Ô ³ª¸¶ ¼³¸íÀ» Çغ¸ÀÚ¸é
1) SoftWare Code Areas.
¿À¶óŬÀÇ ½ÇÇà ¸ðµâµéÀÌ ¸Þ¸ð¸®¿¡ ÇÒ´çµÇ´Â °ø°£ÀÌ´Ù.
ÀÏ¹Ý À¯Àú ÇÁ·Î±×·¥ÀÌ Á¢±ÙÇÒ ¼ö ¾ø°í, Å©±â´Â O/S ¿¡ µû¶ó ¾à°£¾¿ ´Ù¸£Áö¸¸ Virtual Memory ¿¡ À§
Ä¡ÇÏ°Ô µÈ´Ù.
2) S.G.A ( System Global Area )
¿À¶óŬ ÀνºÅϽºÀÇ ÇÑ ºÎºÐÀ¸·Î ÀνºÅϽº°¡ ±âµ¿ (Startup) ÇÒ¶§ ¸Þ¸ð¸®¿¡ ÀâÈ÷°Ô µÇ´Â ÀÛ¾÷ ¿µ¿ªÀÌ
´Ù. ÀÌ ¿µ¿ªÀº ¿À¶óŬÀÌ ±âµ¿Áß¿¡ »ç¿ëµÇ´Â µ¥ÀÌŸ³ª °¢Á¾ Á¤º¸µé, ±×¸®°í ÀÏ¹Ý À¯ÀúµéÀÇ ¸ðµç SQL
¹®ÀåµéÀ» ÀÌ°÷¿¡¼ ¼öÇàÇÑ´Ù. ÁÖ·Î, Real Memory ¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù.
3) P.G.A ( Program Global Areas )
À¯Àú°¡ ¿äûÇÑ SQL ¹®ÀåÀ» ó¸®Çϱâ À§Çؼ °¢ ¼¼¼Ç¸¶´Ù ¼±¾ðµÈ º¯¼ö °ªµéÀ» Àӽ÷ΠÀúÀåÇÏ´Â ¿µ¿ª
À¸·Î, DisConnect Çϸé, ÀÚµ¿À¸·Î Release µÈ´Ù
ÀÚ, ±×·¯¸é ¿ì¸®°¡ »ç¿ëÇÏ´Â JDBCÀÇ ¿¬°á¿µ¿ªÀº ¾î¶»°Ô µÉ°ÍÀΰ¡?
À§ÀÇ ¼³¸í¿¡¼ ó·³ SGA¸¦ »ç¿ëÇÒ °Í °°´Ù. SGA´Â Data Buffer Cache¸¦ °¡Áö°í ÀÖ°Ô µÇ´Â µ¥ ÀÌ°ÍÀº
SQL ¹®ÀåÀ» ½ÇÇàÇÒ¶§ ÇÊ¿äÇÑ µ¥ÀÌŸ¸¦ µð½ºÅ©¿¡¼ SGA ¿µ¿ªÀ¸·Î ÀÐ¾î µéÀÌ´Â °÷ÀÌ´Ù.
¿©±â¿¡´Â º¯°æµÈ µ¥ÀÌÅͻӸ¸ ¾Æ´Ï¶ó º¯°æµÇÁö ¾Ê´Â µ¥ÀÌÅ͵µ °¡Áö°í Àִµ¥, ÀÌ´Â ¼öÇà¼Óµµ Çâ»óÀ»
À§ÇØ µð½ºÅ© ÀÔÃâ·Â º¸´Ù´Â ¸Þ¸ð¸® Access¸¦ ÇÏ°Ô Çϱâ À§ÇÔÀÌ´Ù.
ÀÌ ¿µ¿ªÀÌ Å©¸é ±×¸¸Å ¸¹Àº µ¥ÀÌŸ¸¦ SGA ¿µ¿ª¿¡ ¿Ã·Á³õÀ» ¼ö ÀÖÀ¸¹Ç·Î ¸Þ¸ð¸®¿¡¼ ¹Ù·Î ÀÐÀ» ¼ö
ÀÖ´Â Hit À²ÀÌ ³ô¾ÆÁø´Ù. ±×·¯³ª, ÀÌ ¿µ¿ªÀÌ ³Ê¹« ÀÛÀ¸¸é ½º¿ÍÇÎ(Swapping) ÀÌ ¸¹ÀÌ ¹ß»ýµÇ¹Ç·Î
½Ã½ºÅÛÀÇ ¼º´É¿¡ ¿µÇâÀ» ÁØ´Ù. Á¶È¸ ¼Óµµ¸¦ ³ôÀ̱â À§Çؼ± ÀÌ ¿µ¿ªÀ» ÃæºÐÈ÷ Å©°Ô ÇØ¾ß Çϴµ¥
ÀÌ°÷À» °É°í ³Ñ¾îÁú ¼ö ÀÖ´Â Java API°¡ ResultSet Ŭ·¡½ºÀÇ setFetchSize(int rows) ¸Þ¼ÒµåÀÌ´Ù.
Áï JDBC Driver°¡ ResultSetÀ» ÅëÇؼ °¡Á®¿Ã µ¥ÀÌÅÍÀÇ fetchÅ©±â¸¦ °áÁ¤ÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù.
ÆÛÆ÷¸Õ½º¿¡¼ Ç×»ó ³ª¿À´Â À̾߱âÀÌÁö¸¸ ÀÌ·¯ÇÑ °ªµéÀº ³Ê¹« Ä¿µµ ¾ÈµÇ°í ³Ê¹« À۾Ƶµ ¾ÈµÈ´Ù´Â°ÍÀÌ´Ù.
µ¥ÀÌÅͺ£À̽º¸¶´Ù ÃÖÀûÀÇ ¼º´ÉÀ» ³ªÅ¸³»´Â °ªÀ¸·Î ¼¼ÆõǾîÁ®¾ß ÇÔÀº ¹°·ÐÀÌ´Ù.
¶ÇÇÑ 0 <= rows <= Statement.getMaxRows() ÀÓÀº ´ç¿¬ÇÏ°Ú´Ù.
ÀûÀº ¾çÀÇ µ¥ÀÌÅͺ£À̽ºÀÇ select Äõ¸®½Ã¿¡ À§ÀÇ fetch size¿¡ ´ëÇÑ °áÁ¤Àº º° Â÷ÀÌÁ¡À» µå·¯³»Áö ¾ÊÁö¸¸
´ë·®ÀÇ µ¥ÀÌÅ͸¦ Á¶È¸ÇÏ´Â ResultSetÀÇ °æ¿ì ±× Â÷ÀÌ´Â Á¡Á¡ ±Ø¸íÇÏ°Ô ³ªÅ¸³ª´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
°£´ÜÇÑ ¿¹Á¦¸¦ º¸°Ú´Ù.
ÀÌ ¿¹Á¦¿¡¼ »ç¿ëµÇ´Â abt140À̶õ Å×À̺íÀº ÇöÀç 6,511,102°ÇÀÇ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Ù.
fetch size¸¦ ÁöÁ¤ÇÏ°í ¾ÈÇÏ°í ÀÇ °æ¿ì¸¦ ÅëÇÏ¿© °á°ú°ªÀ» º¸µµ·Ï ÇÏ°Ú´Ù.
import java.sql.*;
import java.io.*;
class FetchSizeTest {
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url ="jdbc:oracle:thin:@192.168.0.137:1521:abn";
Connection conn = DriverManager.getConnection(url,"abs","abs");
String query = " select * from abt140";
PreparedStatement stmt = conn.prepareStatement(query);
long start = System.currentTimeMillis();
ResultSet rs = stmt.executeQuery();
rs.setFetchSize(10000);
while(rs.next()) {
new String("xx");
}
System.out.println("Time elapsed : " + (System.currentTimeMillis() - start));
rs.close();
stmt.close();
conn.close();
}
}
|
À§ ÇÁ·Î±×·¥¿¡¼ setFetchSize¸¦ Àû¿ë½ÃÅ°±â Àü°ú ÈÄÀÇ °á°ú°ªÀº ´ÙÀ½°ú °°´Ù.
Fetch Size Àû¿ë¾ÈÇÒ °æ¿ì : Time elapsed --> 423038
Fetch Size¸¦ 10000 rows·Î Àû¿ëÇÒ °æ¿ì : Time elapsed --> 101556
À§ÀÇ °æ¿ì ¼ÓµµÂ÷ÀÌ°¡ °ÅÀÇ 4¹è°¡ ³ª´Â °ÍÀ» º¼ ¼ö ÀÖÀ¸¸ç, ²À 10000°³ÀÇ record¸¦ fetch·Î Çϴ°Ô
ÃÖ»óÀÇ ÆÛÆ÷¸Õ½º°¡ ¾Æ´ÔÀ» ¸í½ÉÇصÎÀÚ.
|