• Àüü
  • ÀüÀÚ/Àü±â
  • Åë½Å
  • ÄÄÇ»ÅÍ
´Ý±â

»çÀÌÆ®¸Ê

Loading..

Please wait....

±¹³» ÇÐȸÁö

Ȩ Ȩ > ¿¬±¸¹®Çå > ±¹³» ÇÐȸÁö > µ¥ÀÌÅͺ£À̽º ¿¬±¸È¸Áö(SIGDB)

µ¥ÀÌÅͺ£À̽º ¿¬±¸È¸Áö(SIGDB)

Current Result Document :

ÇѱÛÁ¦¸ñ(Korean Title) Çà ±â¹Ý ÀúÀå¼Ò¿¡¼­ Ä÷³ Á¢±Ù ÃÖÀûÈ­
¿µ¹®Á¦¸ñ(English Title) Optimizing Column Accesses in Row-Store
ÀúÀÚ(Author) È«´ë¿ë   ÀÌ»ó¿ø   Dae-Yong Hong   Sang-Won Lee  
¿ø¹®¼ö·Ïó(Citation) VOL 29 NO. 02 PP. 0003 ~ 0014 (2013. 08)
Çѱ۳»¿ë
(Korean Abstract)
 ÀüÅëÀûÀΠÇà ±â¹Ý µ¥ÀÌÅͺ£À̽º¿¡¼­ Æ¯Á¤ Ä÷³¿¡ Á¢±ÙÇϱâ À§Çؼ­´Â Ä÷³ÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â ¿ÀÇÁ¼ÂÀ» ±¸ÇؾߠÇÑ´Ù. OracleÀ̳ª PostgreSQL°ú °°Àº DBMS´Â ÁúÀÇ¿¡ ÀÇÇØ ¿äûµÈ Ä÷³ÀÇ ¿ÀÇÁ¼ÂÀ» ±¸Çϱâ À§ÇÏ¿© ¼±ÇàÇϴ Ä÷³ µéÀÇ ±æÀ̸¦ ´õÇÑ´Ù. À̶§ ¼±ÇàÇϴ Ä÷³µéÀÇ ±æÀ̴ Ä÷³ÀÇ Çì´õ·ÎºÎÅÍ ±¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀº ÀûÀº ¼öÀÇÄ÷³¿¡ Á¢±ÙÇÒ ¶§¿¡µµ ÇÊ¿äÇÑ Ä÷³ »Ó ¾Æ´Ï¶ó ´Ù¸¥ Ä÷³¿¡ Á¢±ÙÇϸ鼭 ¸¹Àº CPU ¸í·É¾î ¼öÇàÀ» ÇÊ¿ä·Î Çϸç, Æ©Çà±æÀÌ°¡ ±ä °æ¿ì ºÒÇÊ¿äÇÑ µ¥ÀÌÅ͠ij½Ã ¹Ì½º¸¦ À¯¹ßÇÑ´Ù. º» ³í¹®¿¡¼­´Â Çà ±â¹Ý ÀúÀå¼Ò¿¡¼­ÀÇ Ä÷³ Á¢±Ù ÃÖÀûÈ­ ±â¹ýÀ» Á¦¾ÈÇÏ°í, À̸¦ ¿ÀǼҽº DBMS PostgreSQL¸¦ »ç¿ëÇؼ­ ±¸ÇöÇÏ¿´´Ù. ±¸Ã¼ÀûÀ¸·Î, Ä÷³ Á¢±Ù ÃÖÀûÈ­¸¦ À§ÇØ °¢ Ä÷³µéÀÇ ¿ÀÇÁ¼Â À§Ä¡¸¦ ¹Ì¸® °è»êÇÑ ÈÄ, Æ©ÇàÇì´õ ºÎºÐ¿¡ ¹è¿­ ±¸Á¶·Î À§Ä¡½ÃÅ°°í Ä÷³ Á¢±Ù ½Ã ¿ÀÇÁ¼Â °ªÀ» ÀÌ¿ëÇؼ­ ÇØ´ç Ä÷³ µ¥ÀÌÅ͸¦ ¹Ù·Î Á¢±ÙÇÏ°Ô ÇÏ¿´´Ù. TPC-H º¥Ä¡¸¶Å©ÀǠƯÁ¤ Å×À̺íÀ» »ç¿ëÇÑ ½ÇÇè °á°ú, Á¦¾È ±â¹ýÀº ±âÁ¸ ¹æ½Ä¿¡ ºñÇØ ÃÖ´ë 50%±îÁö ¼º´É °³¼±À» È®ÀÎÇÏ¿´´Ù. ÀÌ·¯ÇÑ ¼º´É Çâ»óÀº Ä÷³ ¿ÀÇÁ¼Â À§Ä¡¸¦ ±¸Çϴµ¥ ÇÊ¿äÇÑ CPU ¸í·É¾î °¨¼Ò¿Í, ¸Þ¸ð¸® Á¢±Ù È½¼ö¸¦ ÁÙÀÓÀ¸·Î½á Ä³½Ã È¿À²ÀÌ Áõ°¡Çϴ °Í¿¡ ±âÀÎÇÑ´Ù. Á¦¾ÈÇÑ ¹æ½ÄÀº ´Ü¼øÇÑ °è»êÀ» À§ÇÏ¿© Å×À̺íÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°Áö¸¸ Å½»öÁßÀΠÆäÀÌÁö°¡ CPU¿¡ Ä³½Ã µÇÁö ¾ÊÀº °æ¿ì Ä³½Ã È¿À² Áõ°¡¸¦ ±â´ëÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ Æ¯Á¤ µ¥ÀÌÅÍ°¡ ÀÚÁÖ »ç¿ëµÇ´Â È¯°æÀ̳ª ¸ÞÀΠ¸Þ¸ð¸® DB¿¡¼­ È¿°úÀûÀÏ °ÍÀÌ´Ù.
¿µ¹®³»¿ë
(English Abstract)
In order to access a column value in traditional row-store DBMSs, its starting position should be identified. Even in most modern row-wise DBMS such as Oracle and PostgreSQL, all the preceding columns in a tuple to which a column under access belongs need to be scanned in order to calculate the offset of the column. With this approach, there exist two performance problems, especially when columns to be accessed are physically located at the rear part of long tuples: 1) many CPU instructions are required to calculate the offset and 2) excessive CPU cache misses are encountered from accessing other columns irrelevant to the query. In this paper, we propose an optimization technique for accessing columns in row-store DBMSs and describe our implementation using an open source DBMS, PostgreSQL. Specifically, in our scheme, the offset of each column is pre-calculated and stored in an array of column offset in the tuple header, and from the offset information, a column data can be accessed only by obtaining its offset from the array. According to our simple experiment using a table from TPC-H benchmark, our scheme can outperform the existing one by up to 50 percent. And this remarkable performance improvement can be explained by the reduced CPU instructions used in calculating the column offset, and increased cache efficiency by reducing main memory accesses while scanning the tuple. To make the calculation simpler, proposed structure would increase size of the table, but improves cache efficiency when scanned pages are not cached in CPU. Therefore, it will be effective to systems that queries are intensively executed on specific data or main memory DBMS.
Å°¿öµå(Keyword) ÀÇ Ã³¸®   Ä÷³   ij½Ã   ij½Ã ¹Ì½º   ºÐ±â ¿¹Ãø   Query Processing   Column   Cache   Cache Miss   Branch Prediction  
ÆÄÀÏ÷ºÎ PDF ´Ù¿î·Îµå