Oracle±à³Ì¸ßÊÖóðÑÔ£ºÎ»Í¼Ë÷Òý(Bitmap Index)µÄ¹ÊÊÂ
ÄúÈç¹ûÊìϤOracleÊý¾Ý¿â£¬ÎÒÏëÄú¶ÔThomas KyteµÄ´óÃûÒ»¶¨²»»áİÉú¡£TomasÖ÷³ÖµÄasktom.oracle.comÍøÕ¾ÏíÓþOracle½çÊýÊ®Ä꣬¾ø·ÇÐÒÖ¡£×î½üÔÚͼÊé¹Ý½èµ½ÕâλOracle¾ø¶¥¸ßÊÖ±àÖøµÄ¡¶Expert Oracle Database Architecture-9i and 10g programming Techniques and Solutions¡·£¬·ÔÄ֮ϣ¬¹ûȻʢÃûÎÞÐ飬ËäȻ˵²»ÉÏ×Ö×ÖÖéçᣬµ«×÷Õß¶ÔOracle¼Ü¹¹µÄÀí½âºÍʵ¼ùȷʵÒÑ´ïµ½³öÉñÈ뻯µÄ¾³½ç¡£Èç¹ûÄúÓÐʱ¼äºÍÐËȤ£¬Ç¿ÁÒ½¨ÒéÄúÔĶÁÕâ±¾Êé¡£Õâ±¾Êé×î´óµÄÌØµãÊÇÓïÑÔÉú¶¯»îÆÃ£¬ËµÀíÇå³þ£¬¼¸ºõÿ½²½âÒ»¸öÔÀí£¬×÷Õß¶¼¸ø³öÁ˾ßÌåʵÀý£¬ÈÃÈ˶ÁÆðÀ´ºÁ²»ÆøÃÆ¡£
ÁíÍ⣬ThomasǫѷµÄ̬¶ÈÈÃÎҷdz£Åå·þ£¬ThomasÔÚOracleÊý¾Ý¿â·½Ã湤×÷ÁË16Ä꣬²¢ÇÒ²ÎÓëÁËÔçÆÚOracle°æ±¾µÄ¿ª·¢£¬µ«ËûÈÔȻǫÐéµØËµ£¬ËûÿÌì¶¼ÄÜ´ÓOracleÎĵµÀïѧµ½ÐµĶ«Î÷¡£
ÏÂÃæ´ÓÕâ±¾ÊéÀïժ¼ÁËһЩ¾«²ÊƬ¶Î£¬¹©ÄúÐÀÉÍ£¬ËäÈ»²»ÃâÓжÏÕÂÈ¡ÒåÖ®ÏÓ¡£
λͼË÷Òý(Bitmap Index)µÄ¹ÊÊÂ
Ò»ÈÕ£¬Ò»ÈºJava¿ª·¢ÕßÕÒµ½TomÏÈÉú£¬ËµËûÃÇпª·¢µÄϵͳÒѾÉÏÏߣ¬µ«ÐÔÄܼ°ÆäµÍÏ£¬ËûÃÇÎÊTomÏÈÉúÄܲ»ÄÜÌæËûÃÇ¿´¿´ÎÊÌâµ½µ×³öÔÚʲôµØ·½¡£ËûÃǸæËßTom£¬ËûÃǵÄϵͳ²ÉÓÃJSP+EJB+OracleµÄµäÐÍÈý²ã¼Ü¹¹£¬ÆäÖÐEJBÖеÄSQLÊÇÓɵÚÈý·½¹¤¾ß²úÉúµÄ¡£Tomͬ־һÌýµ½EJB£¬¾ÍÖªµÀÕâ¸öϵͳÊDz»ÄܲÉÓÃSQL´úÂë¸ú×ٵķ½·¨À´½øÐÐÐÔÄܵ÷ÓÅÁË¡£ÓÚÊÇ£¬Tomͬ־¸æËßÕâЩÐļ±»ðÁǵÄJava¿ª·¢Õߣ¬ÄãÃÇϵͳµÄÎÊÌâ¿Ï¶¨ÔÚä¯ÀÀÆ÷µ½Êý¾Ý¿âÖ®¼ä£¬µ«¾ßÌåÎÊÌâ³öÔÚʲôµØ·½£¬ÎÒÐèÒª¿´¿´ÄãÃǵÄÊý¾Ý¿â¡£
ÓÚÊÇ£¬Tomͬ־Զ³ÌÁ¬½Óµ½ËûÃǵIJâÊÔÊý¾Ý¿â£¨×¢Òâ²»ÊÇÉú²úÊý¾Ý¿â£©£¬²é¿´Á˼¸¸ö¶¯Ì¬ÐÔÄÜÊÓͼ(V$LOCKºÍV$SQL)£¬×îºóÖÕÓÚ·¢ÏÖÁËÎÊÌâµÄËùÔÚ¡£Tomͬ־·¢ÏÖËûÃǵÄÊý¾Ý¿âÖÐÓÐÒ»¸öλͼË÷Òý(Bitmap Index)×îΪ¿ÉÒÉ£¬Õâ¸öË÷ÒýÊǽ¨Á¢ÔÚÒ»¸öPROCESS_FLAGµÄ×Ö¶ÎÉÏ¡£PROCESS_FLAG×ֶαíʾ¸Ã¼Ç¼ÊÇ·ñ±»´¦ÀíÁË£¬¿ÉÄÜÖµÖ»ÓÐÁ½¸ö£¬Ò»¸öÊÇδ´¦Àí(N)£¬Ò»¸öÊÇÒѾ´¦Àí(Y)¡£µ±¼Ç¼³õ´Î²åÈëÊý¾Ý¿âʱ£¬¸Ã×ֶεÄֵΪN£¬µ«ÆäËü½ø³Ì¶ÁÈ¡²¢´¦ÀíÄÇЩδ´¦ÀíµÄ¼Ç¼(ֵΪNµÄ¼Ç¼)ºó£¬Õâ¸ö×ֶεÄÖµ¾Í¸üÐÂΪY¡£
Tom¾ÍÎÊÕâЩJava¿ª·¢Õߣ¬ÄãÃÇΪʲôҪÔÚÕâ¸öPROCESS_FLAG×Ö¶ÎÉϽ¨Á¢Î»Í¼Ë÷ÒýÄØ£¿
ÆäÖÐÓÐÒ»¸ö¿ª·¢ÕßÕñÕñÓдʵÄ˵£¬ÕâÊÇΪÁËÌá¸ß²éÕÒËÙ¶È£¬Ò»µ©½¨Á¢ÁËλͼË÷Òý£¬ÎÒÃǵijÌÐò¾ÍÄÜ¿ìËÙÕÒµ½ÄÇЩÊýֵΪNµÄ¼Ç¼£¬È»ºó´¦Àí¡£Ëæºó£¬ËûÓÖÄóöÒ»±¾´ó²¿Í·µÄOracleÊý¾Ý¿â²Î¿¼Êֲᣬ¶ÔTomͬ־˵£¬ÕâÊéÉ϶¼ÊÇÕâô˵µÄ£¬¶ÔÄÇЩÊýÖµ·Ç³£ÉÙµÄ×ֶΣ¬±ÈÈ磬ÎÒÃǵÄPROCESS_FLAG×Ö¶ÎÖ»ÓÐÁ½¸öÖµ£¬¾ÍÓ¦¸Ã½¨Á¢Î»Í¼Ë÷Òý
Ïà¹ØÎĵµ£º
²éѯ£ºselectÓï¾ä£¬¶à±í²éѯ£¬group by ·Ö×飬having ¶Ô·Ö×éºóµÄÿһ¸ö×é½øÐйýÂË£¬order by ÅÅÐò¡£(selectÓï¾ä¶à±í²éѯÕâ¸ö×îÖØÒª)
DMLÓï¾ä£ºinsert into emp() values(),insert into emp (select * from emp2),
delete from emp where...
update emp set sal =.. where ..
rollback;»Ö¸´ ......
Ñ¡Ôñ10gÊÇÒòΪ¶ÔÍø¸ñ¼¼Êõ±È½ÏºÃÆæ£¬ºÃÏñ»¹Ã»µÃµ½¹ã·ºÓ¦Óã¬Ò²¾ÍÎÞËùνÓëÇ°Ãæ°æ±¾ÓкܴóÇø±ðÁË¡£
ÔÚѸÀ×ÉÏÏÂÁ˸öÈí¼þ£¬ÔËÐÐsqlplusw£¬È»ºóÕÕ×ÅÊ飬¿ñÇÃÁËÒ»·£¬ÓÐÔÚÍøÉÏÏÂÁ˸öÊÓÆµ½Ì³Ì£¨MLDNħÀֿƼ¼_Oracle¿ÎÌã©£¬½²µÃͦºÃµÄ£¬¾ÍÊÇʱ¼ä³¤Á˵㣬²»Èç¿´ÊéÀ´µÃ¿ì¡£·´ÕýÏÖÔÚÖ»ÊÇÏëÊìϤһÏ»ù±¾Óï¾ä¡£
¿´ÁËÁ½ÌìÊéÁË¡£Á˽âÁËÒ» ......
1) »ù±¾½á¹¹
BEGIN
... --Óï¾ä
EXCEPTION -- ÀýÍâ´¦Àí
WHEN ...
...
WHEN OTHERS
...
END;
2) ³£ÓÃÔ¤¶¨ÒåÀýÍâ
EXCEPTION
WHEN CU ......
oracle10gÐÂÌØÐÔ£ºÉÁ»Ø»Ö¸´Çø(Flash recovery area)
Oracle9i¿ªÊ¼ÌṩÉÁ»Ø²éѯ£¬ÒÔ±ãÄÜÔÚÐèÒªµÄʱºò²éµ½¹ýȥij¸öʱ¿ÌµÄÒ»ÖÂÐÔÊý¾Ý£¬ÕâÊÇͨ¹ýUndoʵÏֵġ£Õâ¸ö¹¦ÄÜÓкܴóµÄÏÞÖÆ£¬¾ÍÊÇÏà¹ØÊÂÎñµÄundo²»Äܱ»¸²¸Ç£¬·ñÔò¾ÍÎÞÁ¦»ØÌìÁË¡£oracle10g´ó´óµÄÔöÇ¿ÁËÉÁ»Ø²éѯµÄ¹¦ÄÜ£¬²¢ÇÒÌṩÁ˽«Õû¸öÊý¾Ý¿â»ØÍ˵½¹ýȥij¸öʱ¿ÌµÄÄÜÁ¦£¬ ......
Êý¾Ý¿âÁ¬½ÓÊÇÒ»ÖֹؼüµÄÓÐÏ޵ݺ¹óµÄ×ÊÔ´£¬ÕâÒ»µãÔÚ¶àÓû§µÄÍøÒ³Ó¦ÓóÌÐòÖÐÌåÏÖµÃÓÈΪͻ³ö¡£¶ÔÊý¾Ý¿âÁ¬½ÓµÄ¹ÜÀíÄÜÏÔÖøÓ°Ïìµ½Õû¸öÓ¦ÓóÌÐòµÄÉìËõÐԺͽ¡×³ÐÔ£¬Ó°Ïìµ½³ÌÐòµÄÐÔÄÜÖ¸±ê¡£Êý¾Ý¿âÁ¬½Ó³ØÕýÊÇÕë¶ÔÕâ¸öÎÊÌâÌá³öÀ´µÄ¡£
Êý¾Ý¿âÁ¬½Ó³Ø¸ºÔð·ÖÅä¡¢¹ÜÀíºÍÊÍ·ÅÊý¾Ý¿âÁ¬½Ó£¬ËüÔÊÐíÓ¦ÓóÌÐòÖØ¸´Ê¹ÓÃÒ»¸öÏÖÓеÄÊý¾Ý¿ ......