ÔÎÄÍøÖ·£ºhttp://blog.chinaunix.net/u1/51562/showart_1341707.html
Ò»:ǰÑÔ
RCU»úÖÆ³öÏֵıȽÏÔç,Ö»ÊÇÔÚlinux kernelÖÐÒ»Ö±µ½2.5°æ±¾µÄʱºò²Å±»²ÉÓÃ.¹ØÓÚRCU»úÖÆ,ÕâÀï¾Í²»×ö¹ý¶àµÄ½éÉÜÁË,ÍøÉÏÓкܶàÓйØRCU½éÉܺÍʹÓõÄÎĵµ.Çë×ÔÐвéÔÄ.±¾ÎÄÖ÷ÒªÊÇ´Ólinux kernelÔ´´úÂëµÄ½Ç¶È.À´·ÖÎöRCUµÄʵÏÖ.
ÔÚÌÖÂÛRCUµÄʵÏÖ֮ǰ.ÓбØÒªÖØÉêÒÔϼ¸µã:
1:RCUʹÓÃÔÚ¶ÁÕß¶à¶øÐ´ÕßÉÙµÄÇé¿ö.RCUºÍ¶ÁÐ´ËøÏàËÆ.µ«RCUµÄ¶ÁÕßÕ¼ËøÃ»ÓÐÈκεÄϵͳ¿ªÏú.дÕßÓëддÕßÖ®¼ä±ØÐëÒª±£³Öͬ²½,ÇÒдÕß±ØÐëÒªµÈËü֮ǰµÄ¶ÁÕßÈ«²¿¶¼Í˳öÖ®ºó²ÅÄÜÊÍ·Å֮ǰµÄ×ÊÔ´.
2:RCU±£»¤µÄÊÇÖ¸Õë.ÕâÒ»µãÓÈÆäÖØÒª.ÒòΪָÕ븳ֵÊÇÒ»Ìõµ¥Ö¸Áî.Ò²¾ÍÊÇ˵ÊÇÒ»¸öÔ×Ó²Ù×÷.ÒòËü¸ü¸ÄÖ¸ÕëÖ¸Ïòû±ØÒª¿¼ÂÇËüµÄͬ²½.Ö»ÐèÒª¿¼ÂÇcacheµÄÓ°Ïì.
3:¶ÁÕßÊÇ¿ÉÒÔǶÌ×µÄ.Ò²¾ÍÊÇ˵rcu_read_lock()¿ÉÒÔǶÌ×µ÷ÓÃ.
4:¶ÁÕßÔÚ³ÖÓÐrcu_read_lock()µÄʱºò,²»ÄÜ·¢Éú½ø³ÌÉÏÏÂÎÄÇл».·ñÔò,ÒòΪдÕßÐèÒªÒªµÈ´ý¶ÁÕßÍê³É,дÕß½ø³ÌÒ²»áÒ»Ö±±»×èÈû.
ÒÔϵĴúÂëÊÇ»ùÓÚlinux kernel 2.6.26
¶þ:ʹÓÃRCUµÄʵÀý
Linux kernelÖÐ×Ô¼º¸½´øÓÐÏêϸµÄÎĵµÀ´½éÉÜRCU,ÕâЩÎĵµÎ»ÓÚlinux-2.6.26.3/Documentation/RCU. ÕâЩÎĵµÖµµÃ¶à»¨µãʱ¼äÈ¥×ÐϸÑжÁÒ»ÏÂ.
ÏÂÃ ......
Ò». ÎļþÒ»´Î¶ÁÈëËÙ¶È
linux϶ÁÎļþÕâ¶«Î÷×îºó¶¼ÊÇҪͨ¹ýϵͳµ÷ÓÃsys_read(fd,buf,count)À´ÊµÏֵģ¬ËùÒÔÈç¹ûÒªÌá¸ßËÙ¶È£¬¾ÍÊÇ×î¼òµ¥µØµ÷ÓÃsys_readµÄ·â×°£¬±ÈÈçÖ±½ÓÓÃread()»òfread()¡£ÏÂÃæÊÇÎÒÔÚlinuxÏµļ¸¸ö²âÊÔ¡£
Ê×ÏÈ´´½¨Ò»¸ö130MÊý¾ÝÎļþ dd if=/dev/zero of=data bs=1024k count=130
[dd if=/dev/zero of=data bs=1024k count=130 ת»»ºÍ¿½±´Îļþ£¬´ÓÊäÈëifµÄÔ´ÍùofµÄÄ¿µÄµØÖ·¿½±´£¬Ã¿¸öblock1024k£¬Ò»¹²¿½±´130¸ö¡£]
·Ö±ðÓÃfread,readºÍfgetsÒ»´Î¶ÁÈëÈ«²¿´óСÎļþËùÏûºÄʱ¼ä¶Ô±È,ÆäÖÐ
size=130*1024*1024
char *buf=new char[size];
ÏÂÃæÊDzâÊÔ½á¹û(»úÆ÷Intel(R) Pentium(R) 4 CPU 3.20GHz, Mem 1G):
1.fread(buf,size,1,fp)Ò»´Î¶ÁÈë
real 0m0.187s
user 0m0.000s
sys 0m0.180s
2.read(fdin,(void *)buf,size)Ò»´Î¶ÁÈë
real 0m0.187s
user 0m0.000s
sys 0m0.184s
3.¶à´Îfgets(buf,size,fp),ÿ´Î1k
real 0m0.356s
user 0m0.136s
sys 0m0.220s
4.fgets(b ......
Ò»¡¢±³¾°½éÉÜ
¡¡¡¡
¡¡¡¡½á¹¹»¯²éѯÓïÑÔ(Structured Query Language£¬¼ò³ÆSQL)ÊÇÓÃÀ´·ÃÎʹØÏµÐÍÊý¾Ý¿âÒ»ÖÖͨÓÃÓïÑÔ£¬ÊôÓÚµÚËÄ´úÓïÑÔ£¨4GL£©£¬ÆäÖ´ÐÐÌØµãÊǷǹý³Ì»¯£¬¼´²»ÓÃÖ¸Ã÷Ö´ÐеľßÌå·½·¨ºÍ;¾¶£¬¶øÊǼòµ¥µØµ÷ÓÃÏàÓ¦Óï¾äÀ´Ö±½ÓÈ¡µÃ½á¹û¼´¿É¡£ÏÔÈ»£¬ÕâÖÖ²»¹Ø×¢ÈκÎʵÏÖϸ½ÚµÄÓïÑÔ¶ÔÓÚ¿ª·¢ÕßÀ´ËµÓÐ׿«´óµÄ±ãÀû¡£È»¶ø£¬ÓÐЩ¸´ÔÓµÄÒµÎñÁ÷³ÌÒªÇóÏàÓ¦µÄ³ÌÐòÀ´ÃèÊö£¬ÕâÖÖÇé¿öÏÂ4GL¾ÍÓÐЩÎÞÄÜΪÁ¦ÁË¡£PL/SQLµÄ³öÏÖÕýÊÇΪÁ˽â¾öÕâÒ»ÎÊÌ⣬PL/SQLÊÇÒ»ÖÖ¹ý³Ì»¯ÓïÑÔ£¬ÊôÓÚµÚÈý´úÓïÑÔ£¬ËüÓëC¡¢C++¡¢JavaµÈÓïÑÔÒ»Ñù¹Ø×¢ÓÚ´¦Àíϸ½Ú£¬¿ÉÒÔÓÃÀ´ÊµÏֱȽϸ´ÔÓµÄÒµÎñÂß¼¡£±¾ÎÄÖ÷Òª½éÉÜPL/SQLµÄ±à³Ì»ù´¡£¬ÒÔʹÈëÃÅÕß¶ÔPL/SQLÓïÑÔÓÐÒ»¸ö×ÜÌåÈÏʶºÍ»ù±¾°ÑÎÕ¡£
¡¡¡¡
¡¡¡¡¶þ¡¢±à³Ì»ù´¡ÖªÊ¶
¡¡¡¡
¡¡¡¡1. ³ÌÐò½á¹¹
¡¡¡¡
¡¡¡¡PL/SQL³ÌÐò¶¼ÊÇÒԿ飨block£©Îª»ù±¾µ¥Î»£¬Õû¸öPL/SQL¿é·ÖÈý²¿·Ö£ºÉùÃ÷²¿·Ö£¨ÓÃdeclare¿ªÍ·£©¡¢Ö´Ðв¿·Ö£¨ÒÔbegin¿ªÍ·£©ºÍÒì³£´¦Àí²¿·Ö£¨ÒÔexception¿ªÍ·£©¡£ÆäÖÐÖ´Ðв¿·ÖÊDZØÐëµÄ£¬ÆäËûÁ½¸ö²¿·Ö¿ÉÑ¡¡£ÎÞÂÛPL/SQL³ÌÐò¶ÎµÄ´úÂëÁ¿Óжà´ó£¬Æä»ù±¾½á¹¹¾ÍÊÇÓÉÕâÈý²¿·Ö×é³É¡£ÈçÏÂËùʾΪһ¶ÎÍêÕûµÄPL/SQL¿é£º
¡¡¡¡
¡¡¡¡/*ÉùÃ÷²¿·Ö£¬ÒÔdeclare¿ªÍ·*/
¡¡¡¡declare v_id integ ......
Ò»¡¢±³¾°½éÉÜ
¡¡¡¡
¡¡¡¡½á¹¹»¯²éѯÓïÑÔ(Structured Query Language£¬¼ò³ÆSQL)ÊÇÓÃÀ´·ÃÎʹØÏµÐÍÊý¾Ý¿âÒ»ÖÖͨÓÃÓïÑÔ£¬ÊôÓÚµÚËÄ´úÓïÑÔ£¨4GL£©£¬ÆäÖ´ÐÐÌØµãÊǷǹý³Ì»¯£¬¼´²»ÓÃÖ¸Ã÷Ö´ÐеľßÌå·½·¨ºÍ;¾¶£¬¶øÊǼòµ¥µØµ÷ÓÃÏàÓ¦Óï¾äÀ´Ö±½ÓÈ¡µÃ½á¹û¼´¿É¡£ÏÔÈ»£¬ÕâÖÖ²»¹Ø×¢ÈκÎʵÏÖϸ½ÚµÄÓïÑÔ¶ÔÓÚ¿ª·¢ÕßÀ´ËµÓÐ׿«´óµÄ±ãÀû¡£È»¶ø£¬ÓÐЩ¸´ÔÓµÄÒµÎñÁ÷³ÌÒªÇóÏàÓ¦µÄ³ÌÐòÀ´ÃèÊö£¬ÕâÖÖÇé¿öÏÂ4GL¾ÍÓÐЩÎÞÄÜΪÁ¦ÁË¡£PL/SQLµÄ³öÏÖÕýÊÇΪÁ˽â¾öÕâÒ»ÎÊÌ⣬PL/SQLÊÇÒ»ÖÖ¹ý³Ì»¯ÓïÑÔ£¬ÊôÓÚµÚÈý´úÓïÑÔ£¬ËüÓëC¡¢C++¡¢JavaµÈÓïÑÔÒ»Ñù¹Ø×¢ÓÚ´¦Àíϸ½Ú£¬¿ÉÒÔÓÃÀ´ÊµÏֱȽϸ´ÔÓµÄÒµÎñÂß¼¡£±¾ÎÄÖ÷Òª½éÉÜPL/SQLµÄ±à³Ì»ù´¡£¬ÒÔʹÈëÃÅÕß¶ÔPL/SQLÓïÑÔÓÐÒ»¸ö×ÜÌåÈÏʶºÍ»ù±¾°ÑÎÕ¡£
¡¡¡¡
¡¡¡¡¶þ¡¢±à³Ì»ù´¡ÖªÊ¶
¡¡¡¡
¡¡¡¡1. ³ÌÐò½á¹¹
¡¡¡¡
¡¡¡¡PL/SQL³ÌÐò¶¼ÊÇÒԿ飨block£©Îª»ù±¾µ¥Î»£¬Õû¸öPL/SQL¿é·ÖÈý²¿·Ö£ºÉùÃ÷²¿·Ö£¨ÓÃdeclare¿ªÍ·£©¡¢Ö´Ðв¿·Ö£¨ÒÔbegin¿ªÍ·£©ºÍÒì³£´¦Àí²¿·Ö£¨ÒÔexception¿ªÍ·£©¡£ÆäÖÐÖ´Ðв¿·ÖÊDZØÐëµÄ£¬ÆäËûÁ½¸ö²¿·Ö¿ÉÑ¡¡£ÎÞÂÛPL/SQL³ÌÐò¶ÎµÄ´úÂëÁ¿Óжà´ó£¬Æä»ù±¾½á¹¹¾ÍÊÇÓÉÕâÈý²¿·Ö×é³É¡£ÈçÏÂËùʾΪһ¶ÎÍêÕûµÄPL/SQL¿é£º
¡¡¡¡
¡¡¡¡/*ÉùÃ÷²¿·Ö£¬ÒÔdeclare¿ªÍ·*/
¡¡¡¡declare v_id integ ......
ÔÎĵØÖ·£ºhttp://www.eygle.com/case/Use.sql_trace.to.Diagnose.database.htm
SQL_TRACEÊÇOracleÌṩµÄÓÃÓÚ½øÐÐSQL¸ú×ÙµÄÊֶΣ¬ÊÇÇ¿ÓÐÁ¦µÄ¸¨ÖúÕï¶Ï¹¤¾ß.ÔÚÈÕ³£µÄÊý¾Ý¿âÎÊÌâÕï¶ÏºÍ½â¾öÖУ¬SQL_TRACEÊǷdz£³£Óõķ½·¨¡£
±¾ÎľÍSQL_TRACEµÄʹÓÃ×÷¼òµ¥Ì½ÌÖ£¬²¢Í¨¹ý¾ßÌå°¸Àý¶Ôsql_traceµÄʹÓýøÐÐ˵Ã÷.
Ò»¡¢ »ù´¡½éÉÜ
(a) SQL_TRACE˵Ã÷
SQL_TRACE¿ÉÒÔ×÷Ϊ³õʼ»¯²ÎÊýÔÚÈ«¾ÖÆôÓã¬Ò²¿ÉÒÔͨ¹ýÃüÁîÐз½Ê½ÔÚ¾ßÌåsessionÆôÓá£
1£® ÔÚÈ«¾ÖÆôÓÃ
ÔÚ²ÎÊýÎļþ(pfile/spfile)ÖÐÖ¸¶¨:
sql_trace =true
ÔÚÈ«¾ÖÆôÓÃSQL_TRACE»áµ¼ÖÂËùÓнø³ÌµÄ»î¶¯±»¸ú×Ù£¬°üÀ¨ºǫ́½ø³Ì¼°ËùÓÐÓû§½ø³Ì£¬Õâͨ³£»áµ¼Ö±ȽÏÑÏÖØµÄÐÔÄÜÎÊÌ⣬ËùÒÔÔÚÉú²ú»·¾³
ÖÐÒª½÷É÷ʹÓÃ.
Ìáʾ: ͨ¹ýÔÚÈ«¾ÖÆôÓÃsql_trace£¬ÎÒÃÇ¿ÉÒÔ¸ú×Ùµ½ËùÓкǫ́½ø³ÌµÄ»î¶¯£¬ºÜ¶àÔÚÎĵµÖеijéÏó˵Ã÷£¬Í¨¹ý¸ú×ÙÎļþµÄʵʱ±ä»¯£¬ÎÒÃÇ¿ÉÒÔÇåÎú
µÄ¿´µ½¸÷¸ö½ø³ÌÖ®¼äµÄ½ôÃÜе÷.
2£® ÔÚµ±Ç°session¼¶ÉèÖÃ
´ó¶àÊýʱºòÎÒÃÇʹÓÃsql_trace¸ú×Ùµ±Ç°½ø³Ì.ͨ¹ý¸ú×Ùµ±Ç°½ø³Ì¿ÉÒÔ·¢ÏÖµ±Ç°²Ù×÷µÄºǫ́Êý¾Ý¿âµÝ¹é»î¶¯(ÕâÔÚÑо¿Êý¾Ý¿âÐÂÌØÐÔʱÓÈÆäÓÐЧ)£¬
Ñо¿SQLÖ´ÐУ¬·¢ÏÖºǫ́´íÎóµÈ.
ÔÚsession¼¶ÆôÓúÍÍ£Ö¹sql_trace·½Ê½ÈçÏÂ:
ÆôÓõ±Ç°sessionµÄ¸ú ......
ÔÎĵØÖ·£ºhttp://www.blogjava.net/xingcyx/archive/2007/01/09/92638.html
ʹÓÃoracleµÄ10046ʼþ¸ú×ÙSQLÓï¾ä
ÎÒÃÇÔÚ·ÖÎöÓ¦ÓóÌÐòÐÔÄÜÎÊÌâµÄʱºò£¬¸ü¶àµØÐèÒª¹Ø×¢ÆäÖÐSQLÓï¾äµÄÖ´ÐÐÇé¿ö£¬ÒòΪͨ³£Ó¦ÓóÌÐòµÄÐÔÄÜÆ¿¾±»áÔÚÊý¾Ý¿âÕâ±ß£¬Òò´ËÊý¾Ý¿âµÄsqlÓï¾äÊÇÎÒÃÇÓÅ»¯µÄÖØµã¡£ÀûÓÃOracleµÄ10046ʼþ£¬¿ÉÒÔ¸ú×ÙÓ¦ÓóÌÐòËùÖ´ÐеÄSQLÓï¾ä£¬²¢Çҵõ½Æä½âÎö´ÎÊý.Ö´ÐдÎÊý,CPUʹÓÃʱ¼äµÈÐÅÏ¢¡£Õâ¶ÔÎÒÃÇ·ÖÎö¡¢¶¨Î»Êý¾Ý¿âÐÔÄÜÎÊÌâÊǷdz£ÓÐÓõġ£
¾ßÌåµÄ·½·¨ÈçÏ£º
1¡¢Ê×ÏÈ»ñµÃspid¡¢sid¡¢serial#£¬machineΪÁ¬½ÓoracleµÄ»úÆ÷Ãû
SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr =
b.addr and a.machine='SYS_F85';
SPID SID SERIAL# MACHINE
----------------------------------------------------------------
24722 15 196 SYS_F85
2¡¢ÀûÓà ......
ÔÎĵØÖ·£ºhttp://www.blogjava.net/xingcyx/archive/2007/01/09/92638.html
ʹÓÃoracleµÄ10046ʼþ¸ú×ÙSQLÓï¾ä
ÎÒÃÇÔÚ·ÖÎöÓ¦ÓóÌÐòÐÔÄÜÎÊÌâµÄʱºò£¬¸ü¶àµØÐèÒª¹Ø×¢ÆäÖÐSQLÓï¾äµÄÖ´ÐÐÇé¿ö£¬ÒòΪͨ³£Ó¦ÓóÌÐòµÄÐÔÄÜÆ¿¾±»áÔÚÊý¾Ý¿âÕâ±ß£¬Òò´ËÊý¾Ý¿âµÄsqlÓï¾äÊÇÎÒÃÇÓÅ»¯µÄÖØµã¡£ÀûÓÃOracleµÄ10046ʼþ£¬¿ÉÒÔ¸ú×ÙÓ¦ÓóÌÐòËùÖ´ÐеÄSQLÓï¾ä£¬²¢Çҵõ½Æä½âÎö´ÎÊý.Ö´ÐдÎÊý,CPUʹÓÃʱ¼äµÈÐÅÏ¢¡£Õâ¶ÔÎÒÃÇ·ÖÎö¡¢¶¨Î»Êý¾Ý¿âÐÔÄÜÎÊÌâÊǷdz£ÓÐÓõġ£
¾ßÌåµÄ·½·¨ÈçÏ£º
1¡¢Ê×ÏÈ»ñµÃspid¡¢sid¡¢serial#£¬machineΪÁ¬½ÓoracleµÄ»úÆ÷Ãû
SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr =
b.addr and a.machine='SYS_F85';
SPID SID SERIAL# MACHINE
----------------------------------------------------------------
24722 15 196 SYS_F85
2¡¢ÀûÓà ......
Microsoft Access Êý¾ÝÀàÐÍ
Êý¾ÝÀàÐÍ
ÃèÊö
´æ´¢
Text
ÓÃÓÚÎı¾»òÎı¾ÓëÊý×ÖµÄ×éºÏ¡£×î¶à 255 ¸ö×Ö·û¡£
Memo
Memo ÓÃÓÚ¸ü´óÊýÁ¿µÄÎı¾¡£×î¶à´æ´¢ 65,536 ¸ö×Ö·û¡£
×¢ÊÍ£ºÎÞ·¨¶Ô memo ×ֶνøÐÐÅÅÐò¡£²»¹ýËüÃÇÊÇ¿ÉËÑË÷µÄ¡£
Byte
ÔÊÐí 0 µ½ 255 µÄÊý×Ö¡£
1 ×Ö½Ú
Integer
ÔÊÐí½éÓÚ -32,768 µ½ 32,767 Ö®¼äµÄÊý×Ö¡£
2 ×Ö½Ú
Long
ÔÊÐí½éÓÚ -2,147,483,648 Óë 2,147,483,647 Ö®¼äµÄÈ«²¿Êý×Ö
4 ×Ö½Ú
Single
µ¥¾«¶È¸¡µã¡£´¦Àí´ó¶àÊýСÊý¡£
4 ×Ö½Ú
Double
Ë«¾«¶È¸¡µã¡£´¦Àí´ó¶àÊýСÊý¡£
8 ×Ö½Ú
Currency
ÓÃÓÚ»õ±Ò¡£Ö§³Ö 15 λµÄÔª£¬Íâ¼Ó 4 λСÊý¡£
Ìáʾ£ºÄú¿ÉÒÔÑ¡ÔñʹÓÃÄĸö¹ú¼ÒµÄ»õ±Ò¡£
8 ×Ö½Ú
AutoNumber
AutoNumber ×Ö¶Î×Ô¶¯ÎªÃ¿Ìõ¼Ç¼·ÖÅäÊý×Ö£¬Í¨³£´Ó 1 ¿ªÊ¼¡£
4 ×Ö½Ú
Date/Time
ÓÃÓÚÈÕÆÚºÍʱ¼ä
8 ×Ö½Ú
Yes/No
Âß¼×ֶΣ¬¿ÉÒÔÏÔʾΪ Yes/No¡¢True/False »ò On/Off¡£
ÔÚ´úÂëÖУ¬Ê¹Óó£Á¿ True ºÍ False £¨µÈ¼ÛÓÚ 1 ºÍ 0£©
×¢ÊÍ£ºYes/No ×Ö¶ÎÖв»ÔÊÐí Null Öµ
1 ±ÈÌØ
Ole Object
¿ÉÒԴ洢ͼƬ¡¢ÒôƵ¡¢ÊÓÆµ»òÆäËû BLOBs (Binary Large OBjects)
×î¶à 1GB
Hyperlink
°üº¬Ö¸ÏòÆäËûÎļþµÄÁ´½Ó£¬°üÀ¨ÍøÒ³¡£
Lookup ......