OracleÖеÄHash JoinÏé½â
OracleÖеÄHash JoinÏé½â
Ò»¡¢ hash join¸ÅÄî
Hashjoin(HJ)ÊÇÒ»ÖÖÓÃÓÚequi-join£¨¶øanti-join¾ÍÊÇʹÓÃNOT INʱµÄjoin£©µÄ¼¼Êõ¡£
ÔÚOracleÖУ¬ËüÊÇ´Ó7.3¿ªÊ¼ÒýÈëµÄ£¬ÒÔ´úÌæsort-mergeºÍnested-loop join·½Ê½£¬
Ìá¸ßЧÂÊ¡£ÔÚCBO£¨hash joinÖ»ÓÐÔÚCBO²Å¿ÉÄܱ»Ê¹Óõ½£©Ä£Ê½Ï£¬ÓÅ»¯Æ÷¼ÆËã´ú¼Ûʱ£¬
Ê×ÏȻῼ ÂÇhash join¡£¿ÉÒÔͨ¹ýÌáʾuse_hashÀ´Ç¿ÖÆÊ¹ÓÃhash join£¬
Ò²¿ÉÒÔͨ¹ýÐ޸ĻỰ»òÊý¾Ý¿â²ÎÊýHASH_JOIN_ENABLED=FALSE£¨Ä¬ÈÏΪTRUE£©Ç¿ÖƲ»Ê¹ÓÃhash join¡£
Hash joinµÄÖ÷Òª×ÊÔ´ÏûºÄÔÚÓÚCPU£¨ÔÚÄÚ´æÖд´½¨ÁÙʱµÄhash±í£¬²¢½øÐÐhash¼ÆË㣩£¬¶ømerge joinµÄ×ÊÔ´ÏûºÄÖ÷ÒªÔÚÓÚ´ËÅÌIO£¨É¨Ãè±í»òË÷Òý£©¡£ÔÚ²¢ÐÐϵͳÖУ¬
hash join¶ÔCPUµÄÏûºÄ¸ü¼ÓÃ÷ÏÔ¡£ËùÒÔÔÚCPU½ôÕÅʱ£¬×îºÃÏÞÖÆÊ¹ÓÃhash join¡£
ÔÚ¾ø´ó¶àÊýÇé¿öÏ£¬hash joinЧÂÊ±ÈÆäËûjoin·½Ê½Ð§Âʸü¸ß£º
ÔÚSort-Merge Join(SMJ)£¬Á½ÕűíµÄÊý¾Ý¶¼ÐèÒªÏÈ×öÅÅÐò£¬È»ºó×ömerge¡£Òò´ËЧÂÊÏà¶Ô×î²î£»
Nested-Loop Join(NL)ЧÂʱÈSMJ¸ü¸ß¡£ÌرðÊǵ±Çý¶¯±íµÄÊý¾ÝÁ¿ºÜ´ó£¨¼¯µÄÊÆ¸ß£©Ê±¡£ÕâÑù¿ÉÒÔ²¢ÐÐɨÃèÄÚ±í¡£
Hash joinЧÂÊ×î¸ß£¬ÒòΪֻҪ¶ÔÁ½ÕűíɨÃèÒ»´Î¡£Hash joinÒ»°ãÓÃÓÚÒ»ÕÅС±íºÍÒ»ÕÅ´ó±í½øÐÐjoinʱ¡£Hash joinµÄ¹ý³Ì´óÖÂÈçÏ£¨ÏÂÃæËù˵µÄÄÚ´æ¾ÍÖ¸sort area£¬¹ØÓÚ¹ý³Ì£¬ºóÃæ»á×÷ÏêϸÌÖÂÛ£©£º
1£® Ò»ÕÅС±í±»hashÔÚÄÚ´æÖС£ÒòΪÊý¾ÝÁ¿Ð¡£¬ËùÒÔÕâÕÅС±íµÄ´ó¶àÊýÊý¾ÝÒѾפÈëÔÚÄÚ´æÖУ¬Ê£ÏµÄÉÙÁ¿Êý¾Ý±»·ÅÖÃÔÚÁÙʱ±í¿Õ¼äÖУ»
2£® ÿ¶ÁÈ¡´ó±íµÄÒ»Ìõ¼Ç¼£¬¾ÍºÍС±íÖÐÄÚ´æÖеÄÊý¾Ý½øÐбȽϣ¬Èç¹û·ûºÏ£¬ÔòÁ¢¼´Êä³öÊý¾Ý£¨Ò²¾ÍÊÇ˵ûÓжÁÈ¡ÁÙʱ±í¿Õ¼äÖеÄС±íµÄÊý
¾Ý£©¡£¶øÈç¹û´ó±íµÄÊý¾ÝÓëС±íÖÐÁÙʱ±í¿Õ¼äµÄÊý¾ÝÏà·ûºÏ£¬Ôò²»Ö±½ÓÊä³ö£¬¶øÊÇÒ²±»´æ´¢ÁÙʱ±í¿Õ¼äÖС£
3£® µ±´ó±íµÄËùÓÐÊý¾Ý¶¼¶ÁÈ¡Íê±Ï£¬½«ÁÙʱ±í¿Õ¼äÖеÄÊý¾ÝÒÔÆäÊä³ö¡£
Èç¹ûС±íµÄÊý¾ÝÁ¿×㹻С£¨Ð¡ÓÚhash area size£©£¬ÄÇËùÓÐÊý¾Ý¾Í¶¼ÔÚÄÚ´æÖÐÁË£¬¿ÉÒÔ±ÜÃâ¶ÔÁÙʱ±í¿Õ¼äµÄ¶Áд¡£
Èç¹ûÊDz¢Ðл·¾³Ï£¬Ç°ÃæÖеĵÚ2²½¾Í±ä³ÉÈçÏÂÁË£º
2£® ÿ¶ÁȡһÌõ´ó±íµÄ¼Ç¼£¬ºÍÄÚ´æÖÐС±íµÄÊý¾Ý±È½Ï£¬Èç¹û·ûºÏÏÈ×öjoin£¬¶ø²»Ö±½ÓÊä³ö£¬Ö±µ½ÕûÕÅ´ó±íÊý¾Ý¶ÁÈ¡Íê±Ï¡£Èç¹ûÄÚ´æ×ã¹»£¬
JoinºÃµÄÊý¾Ý¾Í±£´æÔÚ
Ïà¹ØÎĵµ£º
linux ÉϵÄoracle sqlplus ²»ÄÜÀûÓà ÉÏ, Ï ¼üÀ´²é¿´ÃüÁËÑË÷µ½½â¾öÎÊÌâµÄ°ì·¨£¬ÕûÀíÈçÏÂ
°²×°Èí¼þrlwrap¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣬¸ÃÈí¼þÊÇÓÃcдµÄ³ÌÐò
¹Ù·½ÏÂÔØµØÖ·£ºhttp://utopia.knoware.nl/~hlub/uck/rlwrap/
°²×°¹ý³Ì£º
ÎÒÃÇÒ²¿ÉÒԲ鿴½âѹºóµÄtar°ü£¬²é¿´README°ïÖúÎļþ
shell>tar -zxvf rlwrap-0.36.tar.gz
sh ......
¡¡Ëæ×ÅÏÖ´úÊý¾Ý¿â¿ÉÓÃÌØÕ÷¼¯µÄѸËÙÔö¼Ó£¬ºÜÄÑÇø·ÖÊëºÃÊ뻵¡£ÀýÈçOracleÀï¾ÍÓÐÐí¶àÄã¿ÉÄÜ´ÓÀ´¶¼²»ÐèÒªµÄ¸ß¼¶Êý¾Ý²Ö¿âÌØÕ÷¡£´ËÍâÒ²¿ÉÄÜÓÐһЩÆäËü²»¿É»òȱµÄÌØÕ÷±ÈÈçACIDÊÂÎñÌØÐÔ¡£ÎÒÃÇÀ´¿´Ò»¿´Ö÷ÒªµÄÒ»Ð©ÌØÕ÷£¬±ÈÈç´æ´¢¹ý³Ì£¬ÊÓͼ£¬¿ìÕÕ£¬±íÊý¾ÝÀàÐͺÍÊÂÎñµÈµÈ¡£Í¬Ê±ÎÒÃÇ·ÖÎöÒ»ÏÂPostgresql£¬MySQLºÍOracleÕ⼸¸öÊý¾Ý¿â£¬È»º ......
Wait Problem Potential Fix Sequential Read Indicates many index reads—tune the code (especially joins) Scattered Read Indicates many full table scans—tune the code; cache small tables ......
oracleÁ¬½ÓÊý¾Ý¿â²âÊÔ´úÂë
/**
*
* ˵Ã÷£º
* £¨1£©±¾ÀýʹÓÃJDBC_ODBCÇŽøÐÐÊý¾Ý¿âÁ¬½Ó£¬¹Ê´ËÐèÒªODBCÊý¾ÝÔ´
* £¨2£©±¾ÀýÖÐSQLΪ¸üÐÂÓï¾ä£¬¹Ê´ËʹÓÃÔØÌåµÄexecuteUpdate·½·¨£¬²¢ÇÒ·µ»ØÊÜÓ°Ïì¼Ç¼Êý
* (3) ÅäÖÃÁ¬½ÓORACLEµÄodbcÊý¾ÝÔ´ora
*/ ......
--´´½¨±í¿Õ¼ä
create tablespace Ãû³Æ
(
datafile='·¾¶\Ãû³Æ.ora',
size='50M',
autoextend='on'
)
/
--´´½¨ÁÙʱ±í¿Õ¼ä
create temporary tablespace Ãû³Æ
(
tempfile='·¾¶\Ãû³Æ.ora',
size='50M',
autoextend='on'
)
/
--´´½¨Óû§
create user Óû§Ãû idtenified by ÃÜÂë
/
--ΪÓû§Ö¸¶¨ ......