Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
SQL Server ÄÚ´æÊý¾Ý¿âÔ­Àí½âÎö
 
×÷ÕߣºShanksGao À´Ô´£º²©¿Í ·¢²¼ÓÚ 2016-9-5
  2577  次浏览      27
 

ǰÑÔ

¹ØÏµÐÍÊý¾Ý¿â·¢Õ¹ÖÁ½ñ,ϸ½ÚÉÏÒÔ×ö×ãÎÄÕÂ,ÔÚѰÇó×ÔÉíÍ»ÆÆ·¢Õ¹µÄ¹ý³ÌÖÐ,ÄÚ´æÓë·Ö²¼Ê½Êý¾Ý¿âÊǵ±ÏÂ×îÁ÷ÐеÄÖ÷Ìâ,ÕâÓëÐÔÄܼ°À©Õ¹ÐÔÔÚ´óÊý¾Ýʱ´úµÄÐèÇó½»Ïà»ÔÓ³.SQL Server×÷Ϊ´«Í³µÄÊý¾Ý¿âÒ²ÔÚ×îз¢²¼°æ±¾SQL Server 2014ÖÐÌṩÁËÐÂÀûÆ÷ SQL Server In-Memory OLTP(Hekaton),ʹµÃÆäÔÚOLTPϵͳÖеÄÐÔÄÜÓÐÁ˼¸Ê®±¶ÉõÖÁÉϰٱ¶µÄÐÔÄÜÌáÉý,±¾ÆªÎÄÕÂΪ´ó¼Ò̽¾¿Ò»¶þ.

´óÊý¾Ýʱ´úµÄÊý¾ÝÈçºÎ×éÖ¯Ó¦Óã¿Õâ¿ÖÅÂÖÚ¿Ú²»Ò».µ«²»¿É·ñÈÏ,¹ØÏµÐÍÊý¾ÝÒÀ¾ÉÊǵ±ÏÂÊÀ½ç×îÓÐЧµÄÓ¦Ó÷½Ê½.×÷ΪӦÓü¼Êõ,Ò²±Ø½«°éËæ×ÅÓ¦ÓõÄÐèÇó¶ø²»¶ÏÑÝ»¯.ÐÅÏ¢±¬Õ¨¶ÔÐÅÏ¢´¦ÀíÌá³öÁ˸üΪÑÏ¿ÁµÄÐèÇó,µ¥´Ó´«Í³µÄOLTPϵͳÀ´¿´,ÐÔÄܺÍÀ©Õ¹ÐÔ±ãÊÇÓ¦ÓÃÕß×îΪ¹Ø×¢µÄ·½Ãæ.¼ÙÈçÓ¦ÓÃÕ߸æËßÄãÎÒÐèÒªµ±ÏÂÊý¾Ý¿â·ÃÎÊÁ¿100±¶µÄ¼ÆËã×ÊÔ´,µ¥´¿Ó²¼þ£¿ÏÔȻеļ¼ÊõÓ¦ÓúôÖ®¶ø³ö.

´«Í³¹ØÏµÐÍÊý¾Ý¿â×Ôµ®ÉúÆð×ÔÉí²»¶ÏÍêÉÆµÄͬʱҲ°éËæ×ÅÓ²¼þµÄ·ÉËÙ·¢Õ¹,ÐÔÄÜÌáÉýÉϰéËæ´¦ÀíÆ÷ÉñÆæµÄĦ¶û¶¨ÂÉ,TPC-C,TPC-EµÈÖ¸±ê²»¶ÏÌáÉý,¶øËæ×ŽñÄêÀ´´¦ÀíÆ÷ÎïÀí¹¤ÒÕ½Ó½ü¼«ÏÞ,CPUµÄÖ÷ƵËٶȼ¸ºõ²»ÔÙÌáÉý,Õâʱ¼ÆËã»ú³¯×ŶàºË·½Ïò½øÕ¹,ͬʱÄÚ´æ³É±¾Ò²ÔÚÏßÐÔ½µµÍ,²»ÔÙÈç´Ë°º¹ó,ĿǰÄÚ´æµÄ³É±¾ÒѾ­µÍÓÚ10$/GB. ¶ø¹Ì̬ӲÅÌ(SSD)µÄ¹ã·ºÓ¦ÓÃҲʹµÃ´«Í³Êý¾Ý¿âÔÚÐÔÄÜÉÏÓиü¶àµÄÑÓÉì.Ãæ¶ÔÕâЩеÄÓ²¼þ»·¾³´«Í³µÄ¹ØÏµÐÍÊý¾Ý¿â×ÔȻҲÓÐÆäÉè¼ÆÖ®³õ²»¿É±ÜÃâµÄ×ÔÉíÐÔÄÜÆ¿¾±.

SQL Server 2014µÄ´«Í³ÒýÇæÖÐÒýÈ뻺³å³ØÀ©Õ¹£¨Buffer Pool Extension£©¹¦ÄÜÀûÓÃSSDµÄ¸ßIOPS×÷Ϊ»º³å³ØµÄÓÐÀûÑÓÉì,¹¹³ÉÁËÈÈ,»î,ÀäÈý²ãÊý¾ÝÌåϵ,ÓÐЧ»º½â´ÅÅ̵ÄѹÁ¦.ÎÒÃÇ¿ÉÒ԰Ѹü¶àµÄÊý¾Ý·ÅÈëÄÚ´æ,SSDÖÐ,µ«¼´±ãÈç´ËÊý¾Ý¿âµÄÐÔÄÜ»¹ÊDZ»×ÔÉíµÄһЩ¼Ü¹¹ºÍ´¦Àí·½Ê½ËùÔ¼Êø×Å. ¾Í×ÅÇ°ÃæµÄ¼ÙÉè,ÎÒÃÇÒª°ÑÊÂÎñ´¦ÀíÄÜÁ¦ÌáÉý100±¶.¼ÙÉèÎÒÃÇÏÖÔڵĴ¦ÀíÄÜÁ¦ÊÇ100 TPS,¶øÕâʱÿ¸öÊÂÎñËùÒÔµÃÆ½¾ùCPUÖ¸ÁîΪ100Íò¸ö,ÒÔ´ËÌáÉý10±¶1000 TPS,ÿ¸öÊÂÎñµÄCPUÖ¸Áî¾ÍÐ轵Ϊ10Íò¸ö,¶øÔÙÌáÉý10±¶10000 TPSÿ¸öÊÂÎñµÄCPUÖ¸Áî¾ÍÐ轵Ϊ1Íò¸ö,ÕâÔÚÏÖÓеÄÊý¾Ý¿âϵͳÖÐÊDz»¿ÉÄÜʵÏÖµÄ,ËùÒÔÎÒÃÇÒÀ¾ÉÐèҪеĴ¦Àí·½Ê½.

´«Í³Êý¾Ý¿âÒýÇæÃæÁÙµÄÎÊÌâ

ÓеÄÅóÓÑ¿ÉÄÜ»á˵°ÑËùÓÐÊý¾Ý¶¼·ÅÈëÄÚ´æÖоÍÊÇÄÚ´æÊý¾Ý¿â,¾Í²»´æÔڶ̰åÁË,µ«¼´±ãÈç´ËÎÒÃÇÈÔÃæÁÙÈçÏÂÖ÷ÒªÎÊÌâ:

1:±£»¤ÄÚ´æÖеÄÊý¾Ý½á¹¹¶ø²ÉÓõÄãÅËø(latch)ÒýÆðµÄÈȵã (hot spots) ÎÊÌâ.

2:ʹÓÃËø»úÖÆ¿ØÖÆ¶à°æ±¾²¢·¢´øÀ´µÄ×èÈûµÈÎÊÌâ.

3:ʹÓýâÊÍÐÍ(interpretation)ÓïÑÔµÄÖ´Ðмƻ®µÄÖ´ÐÐЧÂÊÎÊÌâ.

ÎÒÃǼòµ¥¿´ÏÂÉÏÊöÎÊÌâµÄÓÉÀ´

1:¼ÙÉèÎÒÓÐÒ»¸ö²éѯQ1ÐèÒª·ÃÎÊÒ»¸öÊý¾ÝÒ³ Ò³ºÅ7,´ËʱÊý¾ÝÒ³²»ÔÚBuffer Pool(BP)ÖÐ,Ϊ´ËϵͳΪÆä·ÖÅäÁËÄÚ´æ¼Ü¹¹,²¢È¥´ÅÅÌÈ¡Ïà¹ØÊý¾ÝÒ³ÖÃÈëBPÖд˹ý³ÌÕý³£´ó¸Å10-20ms,¶ø´ËʱǡºÃÁíÒ»¸ö²éѯQ2Ðè·ÃÎÊÊý¾ÝÒ³ºÅ7,ÓÉÓÚBPÖÐÒѾ­´æÔÚÓ¦¸ÃÒ³¼Ü¹¹,Èç¹û´ËʱÔÊÐíQ2¶ÁÈ¡,ÔòQ2½«»áÔà¶Á.Òò´ËÒýÈëãÅËø,µ±Q1È¥´ÅÅ̶ÁÈ¡Êý¾ÝʱBPÖеÄÏàÓ¦¼Ü¹¹±»ãÅËø±£»¤,Q2¶ÁÏàÓ¦µÄҳʱ½«±»×èÈû,ÖªµÀQ1Íê³ÉÏàÓ¦²Ù×÷²¢ÊÍ·ÅãÅËø,ÈçÏÂͼ1-1Ëùʾ

ÏÖÔÚÓÐÊý¾Ý¿âϵͳÖÐΪ±£Ö¤¶àÏß³ÌÏµĹ²ÏíÊý¾ÝÒ»ÖÂÐÔ,ÄÚ´æÈκÎÊý¾Ý½á¹¹¶¼Ðè±»ãÅËø±£»¤.¶øµ±´óÁ¿²¢·¢½ø³Ìͬʱ·ÃÎÊÒ»¸öÊý¾ÝÒ³(½á¹¹)¾ÍÔì³ÉÁËÈȵãÎÊÌâ.ÏûºÄÁË´óÁ¿CPUµÄͬʱӰÏìÁ˲¢·¢ÍÌÍÂ.

ͼ1-1

2:¼ÙÉèÓÐÈçÏÂÁ½¸ö²Ù×÷,¶¼¶ÔÊý¾Ý¿âÖеÄij¸öÖµ½øÐÐÐÞ¸Ä

A=1000

Q1: A = A + 100 Q2: A = A + 500

ÔÚÊý¾Ý¿âÖеIJÙ×÷Ϊ

Q1: Read A, A=A+100, Write A

Q2: Read A, A=A+500, Write A

Èç¹ûÊÇ´®ÐÐÏȺóÖ´ÐÐ,ÔòûÓÐÎÊÌâ,µ«Èç¹ûͬʱִÐÐÔò¿ÉÒÔ³öÏÖÊý¾ÝµÄ²»Ò»ÖÂÇéÐÎ.

Q1,Q2ͬʱ¶ÁÈ¡ÁËAµÄԭʼֵºó,½øÐÐÐÞ¸Ä,ÔòÊý¾Ý²»Ò»ÖÂÈçͼ1-2

ͼ1-2

ΪÁ˽â¾ö´ËÎÊÌâ,ÒѹʵÄÒµ½ç´óÉñ,ͼÁé½±µÄ»ñµÃÕßJim GrayÌá³öÁËÁ½½×¶ÎËø¸ÅÄî (Two-Phase Locking),ºÏÀíµØ½â¾öÁ˲¢·¢Ò»ÖÂÐÔÎÊÌâ,²¢±»¾ø´ó¶àÊýÊý¾Ý¿âϵͳӦÓò¢¸Ä½ø(ÈçSQL ServerÖÐÊý¾Ý²»Í¬Á£¶Èϲ¢·¢¼æÈÝÇéÐÎÒýÈëµÄÒâÏòËø).

±¾ÀýÖе±Q1¶ÁÈ¡Aʱ,¶ÔA¼ÓÅÅËûËø,µ±Q2ÊÔͼ¶Áȡʱ¾Í»á±»×èÈû,ÐèµÈ´ýQ1µÄÊÂÎñÍê³ÉºóÊÍ·ÅËø×ÊÔ´ºó²ÅÄܼÌÐø¶ÁÈ¡.Èçͼ1-3

ͼ1-3

µ«Ò²ÕýÒòÎªËøµÄÒýÈë,ʹµÃÊÂÎñ¼ä¿ÉÄܳöÏÖÏ໥×èÈû,²¢ÇÒÐèÒªÌØ¶¨µÄ½øÐйÜÀíËø×ÊÔ´,ÇÒÐè¶ÔËÀËøµÈÎÊÌ⼴ʱ¼ì²â,¶øÕâЩÎÊÌâ×ÔÈ»µØ»áÓ°Ïì²¢·¢ÐÔÄÜ.

3:ÊìϤSQL ServerµÄÈ˶¼ÖªµÀÒ»ÌõÓï¾äÔÚSQL ServerÖÐÖ´ÐÐ,ÏÖÓнøÐаó¶¨,ÓïÒå·ÖÎö,»ùÓڳɱ¾µÄÓÅ»¯µÈһЩÁйý³ÌÈ»ºóÉú³ÉÏàÓ¦µÄ½âÊÍÐÔÓïÑÔÖ´Ðмƻ®,¶øÒýÇæÔÚÖ´ÐÐÏàÓ¦µÄÖ´Ðмƻ®Ê±»áµ÷ÓÃÏàÓ¦µÄÊý¾Ý¿âº¯Êý,ÔËÐÐÿһ¸öÔËËã·û,Èç¹ûÊý¾ÝÔÚÓ²ÅÌÉÏÔò»áÈ¥Ó²ÅÌÉÏÈ¡Êý¾Ý¡­ÕâЩÇéÐÎʹµÃÖ´ÐнâÊÍÐÔÓïÑÔʱ¸ßʱ¼äÏûºÄµÄͬʱҲ´ò¶ÏCPUÁ÷Ë®,ʹµÃCPUµÄЧÂÊÎÞ·¨³ä·Ö·¢»Ó,¶øÈç¹ûÊý¾Ý¾ùÔÚÄÚ´æÖÐ,Ôò¿ÉÒÔ²ÉÓøü¸ßЧµÄ·½Ê½´¦Àí.¶ø¾ø´ó¶àÊý¹ØÏµÐÍÊý¾Ý¿âϵͳµÄÖ´Ðмƻ®¾ùΪ½âÊÍÐÔÓïÑÔ.

Ãæ¶ÔÕâЩÎÊÌâ,¾ÞÍ·Êý¾Ý¿â³§ÉÌÃǶ¼ÌṩÁËÏàÓ¦µÄÄÚ´æÊý¾Ý¿â½â¾ö·½°¸,ÈçOracleµÄTimesten,»¹ÓÐ×îÐÂͼÁé½±»ñµÃÕßMichael Stonebraker½ÌÊÚµÄÑо¿H-storeÑÝ»¯³öµÄÉÌÒµ²úÆ·VoltDBµÈ.¶øÎ¢ÈíµÄSQL Server 2014Ò²ÍÆ³öÁËÄÚ´æÊý¾Ý¿âSQL Server In-Memory OLTP(¿ª·¢´úºÅHekaton),½ÓÏÂÀ´ÎÒÃǾͼòÒªµÄ¿´ÏÂHekatonÈçºÎÓ¦¶ÔÉÏÃæµÄÎÊÌâ,ʹµÃÐÔÄܵõ½ÐµÄÉý»ª.

SQL Server HekatonµÄÓ¦¶Ô·½Ê½

SQL Server HekatonÊÇÒ»¸ö»ùÓÚÄÚ´æÓÅ»¯µÄ¸ßÐÔÄܵÄOLTPÊý¾Ý¿âÒýÇæ,ÇÒÊý¾ÝÊǿɳ־û¯µÄ,ËûÍêÈ«¼¯³ÉÓÚSQL ServerÄÚ(¿ÉÓ봫ͳÒýÇæ,»ùÓÚÁд洢ÒýÇæ»ìºÏ͸Ã÷ʹÓà Èçͼ2-1),ÇÒÊÇ»ùÓÚÏÖ´ú¶àºËCPU¼Ü¹¹Éè¼Æ.

ͼ2-1

Ó¦¶ÔÉÏÊöÈýµãÐÔÄÜÆ¿¾±,ÈȵãÉÏHekaton²ÉÓá±Bw-tree¡±Êý¾Ý½á¹¹ÊµÏÖLatch-free,²¢·¢ËøÉϲÉÓÃÀÖ¹Û²¢·¢ÖÐ¶à°æ±¾Ê±¼ä´ÁÊý¾ÝÐпØÖÆÊµÏÖÎÞËøÊÂÎñ,½âÊÍÐÔÓïÑÔÖ´ÐÐЧÂʲÉÓýØÖ´Ðмƻ®±àÒëΪ»úÆ÷´úÂë(DLL)ÌáÉýCPUЧÂÊ.ÏÂÃæÕë¶ÔÕâÈýµãÀ´¼òҪ˵Ã÷ÏÂ.

HekatonÖеÄÊý¾ÝÒ³´óСÊǵ¯ÐÔµÄ,ÒÔ±ãÓÚÔöÁ¿¸üÐÂDelta update,ÒòΪÏÖÓд«Í³µÄupdate in place»áʹµÃÏÖÓеÄCPU CacheʧЧ,ÔÚ¶àºË¼Ü¹¹Ï»áʹµÃÐÔÄÜÊÜÏÞ.Êý¾ÝÒ³ÔÚÄÚ´æÖÐͨ¹ýÓ³Éä±í¹ÜÀí,½«Ã¿¸öÊý¾ÝÒ³µÄÂß¼­IDÓëÎïÀíµØÖ·Ò»Ò»Ó³Éä.Èçͼ2-2

ͼ 2-2

ÔÚ¶ÔÊý¾Ý½øÐиüÐÂʱ²ÉÓÃCompare and Swap(CAS)ʵÏÖÎÞËø(Latch free)²Ù×÷

CAS:ͨ¹ý±È¶ÔÎïÀíµØÖ·µÄÖµÓëЯ´øÖµÊÇ·ñÆ¥Åä,Æ¥ÅäÔò¿É²Ù×÷,²»Æ¥ÅäÔò¾Ü¾ø²Ù×÷.

Èçij¸ö½ø³ÌÔÚЯ´øµÄµØÖ·MµÄֵΪ20,Æ¥Å䵨ַMµÄʵ¼ÊÖµ,Èç¹ûΪ20Ôò¿ÉÒÔÐÞ¸Ä,·ñÔò¾Ü¾øÈçͼ2-3

ͼ2-3

ÔÚ¶ÔÊý¾ÝÒ³½øÐÐÔöÁ¿¸üÐÂʱÿ´Î²Ù×÷¾ù»áÔÚÊý¾ÝÉÏÉú³ÉÒ»¸öеÄÔöÁ¿µØÖ·×÷ΪÊý¾ÝÒ³µÄ·ÃÎÊÈë¿Ú,²¢²ÉÓÃCASÍê³ÉÓ³Éä±íÖÐ(mapping table)ÎïÀíеØÖ·µÄÓ³Éä(delta address),²¢¶ÔÕë¶ÔͬһÊý¾ÝÒ³¿ÉÄܳöÏÖµÄͬʱ¸üнøÐÐÖÙ²Ã,´Ëʱʤ³öÕß½«½øÐиüÐÂ,¶øÊ§°ÜÕß¿ÉÒÔ½øÐÐÖØÊÔ,Òź¶µÄÊÇĿǰSQL ServerÖ»»á¶Ôʧ°Ü²Ù×÷Å׳ö´íÎóÐÅÏ¢,ÐèÒªÎÒÃÇ×Ô¼º²¶×½´íÎóÐÅÏ¢²¢ÖØÊÔ,¾ßÌå¿É²Î¿¼Áª»úÎĵµ.¾ßÌåÈçͼ2-4Ëùʾ

ͼ2-4

ÕâÑùµÄ²Ù×÷·½Ê½ÏÂ,µ±¸üÐÂÁ´¹ý³¤Ê±·ÃÎÊÊý¾Ý»áÔì³Éʱ¼ä¸´ÔÓ¶ÈÌáÉý´Ó¶øÓ°ÏìÐÔÄÜ,SQL server»áÔÚºÏÊʵÄÇéÐÎϽøÐÐÕûÀí,Éú³ÉеÄÊý¾ÝÒ³,²¢½«ÎïÀíµØÖ·Ö¸ÏòеÄÊý¾ÝÒ³,¶øÀϵÄÊý¾ÝÒ³Á´±í½«»á×÷ΪÀ¬»ø»ØÊÕÊÍ·ÅÄÚ´æ.Èçͼ2-5

ͼ2-5

ÓÉÓÚÊý¾ÝÒ³Êǵ¯ÐÔµÄ,ËùÒÔ¿ÉÄÜÔì³ÉÊý¾ÝÒ³¹ý´ó»òÊǹý³Ì,HekatonÖлáÔÚÆäÈÏΪºÏÊʵÄÇéÐÎϽøÐÐÒ³·ÖÁÑ»òÊǺϲ¢.ÏÞÓÚÆª·ùÕâÀï¾Í²»ÔÚÏêϸÐðÊöÁË,ÔÚʵÏÖLatch-freeÖÐËùÓÐÄÚ´æÖеIJÙ×÷¶¼ÊÇͨ¹ýÒ»¸ö»ò¶à¸öÔ­×Ó²Ù×÷Íê³É.¸ÐÐËȤµÄÅóÓÑ¿ÉÒԲο¼Î¢ÈíµÄÏà¹ØÎÄÏ×.

ÓеÄÅóÓÑ¿ÉÄÜ»á˵ãÅËø±¾ÉíÊDZ£»¤ÄÚ´æ½á¹¹µÄÇáÁ¿¼¶Ëø,¿öÇÒ²»Í¬ÀàÐ͵ÄãÅËø¿ÉÄܼæÈÝ,Latch-free¶ÔÐÔÄܰïÖúÄÜÓжà´óÄØ?ʵ¼ÊSQL ServerÔÚ·ÃÎÊÄÚ´æÖÐÊý¾Ýʱ,ãÅËø±¾ÉíÓÃ×÷¿ØÖÆÊý¾Ý·ÃÎÊʱ³É±¾ºÜ¸ß,Ϊ´Ë»áÔÚÊý¾ÝÉϼÓ×ÔÐýËø(Spin lock)¹©Ïß³Ì̽²âÊý¾ÝÊÇ·ñ¿ÉÒÔ·ÃÎÊ,Spin lockʵÏÖ¼´Ò»¸öBitλ(0»ò1),Ï̻߳áһֱ̽²âÄÚ´æÖеÄÕâ¸öBitλÒÔÊÔͼ»ñµÃ×ÔÐýËø,Èç¹û¿ÉÒÔ·ÃÎÊÔò·ÃÎÊ,·ñÔò×ÔÐý,Èç¹û¼¸Ç§´ÎµÄ̽²âÈÔÎÞ·¨·ÃÎÊÔòͣϡ±ÐÝÏ¢¡±Õâ¸ö³Æ×÷Ò»´ÎÅöײ.µ«ÊÇÔÚ×ÔÐýµÄ¹ý³ÌCPU¸ººÉ״̬,Òò´ËÒ²¾ÍÔì³ÉCPU×ÊÔ´°×°×ÀË·Ñ.Éú²úÖÐÎÒÃÇ¿ÉÄÜ¿´µ½CPU¸ßÆô,¶ø²¢·¢È´Éϲ»È¥,·ÃÎʱäÂý,ÆäÖеÄÒ»¸öÔ­Òò¾ÍÊÇ´óÁ¿½ø³Ì·ÃÎÊÈȵãÊý¾ÝÏ´óÁ¿×ÔÐýËøÕ÷ÓÃʹµÃÐÔÄÜÊÜÏÞ.¶øÔÚHekatonÖÐÎÞãÅËøµÄÇé¿öϾͲ»´æÔÚÕâÑùÎÊÌâ,µ¥´ÓÕâ¸ö½Ç¶ÈÀ´¿´Ëæ×ÅÏ̵߳ÄÔö¼ÓÐÔÄÜÒ²ÊÇÏßÐÔ·Å´ó.µ±È»³ýÁËLatch-free£¬ÆäËûµÄÁ½¸ö·½ÃæHekatonͬÑù±íÏÖ³öÉ«.

ǰÎÄÖÐÐðÊö¿ÉÖª,¹ØÏµÐÍÊý¾Ý¿âÖÐÊÂÎñÊÇ¿¿ËøÀ´±£Ö¤¶à°æ±¾²¢·¢¿ØÖƵÄ,ÓÉ´Ë´øÀ´µÄ×èÈûËÀËøµÈÎÊÌâÏàÐÅËùÓеÄDBA¶¼Ó¡ÏóÉî¿Ì.¶øHekatonÖвÉÓÃÀÖ¹Û²¢·¢ÏÂ¶à°æ±¾Êý¾Ý¼Óʱ¼ä´ÁµÄÐÎʽʵÏÖ.ÏÂÃæÀ´¼òÒª½âÏÂ.

HekatonÖн«Ò»¸öÊÂÎñ·ÖΪÈý¸ö½×¶Î,Õý³£ÊÂÎñ´¦Àí²½ÖèÓÃÓÚÎÒÃǵÄÊý¾Ý²Ù×÷DMLÔò´´½¨Ðµİ汾ÐÐ.ÑéÖ¤Ìá½»½×¶ÎÑéÖ¤Õâ¸öÊÂÎñÊÇ·ñ¿ÉÒÔ°²È«Ìá½»(¸ù¾Ý°æ±¾Êý¾Ý).Ìá½»´¦Àí½×¶ÎÓÃÓÚдÈÕÖ¾,²¢½«Ðµİ汾ÐÐÊý¾Ý¶ÔÆäËüÊÂÎñ¿É¼û.Èçͼ2-6

ͼ2-6

ÎÒÃÇͨ¹ýÒ»¸öʵÀý¼òҪ˵Ã÷ÏÂ:ÊÂÎñ¹ý³Ì²ÉÓÃTimestamps(ʱ¼ä´Á(È«¾ÖʱÖÓ))±ê¼ÇÊÂÎñºÍÐа汾,ÿ¸öÊÂÎñ¿ªÊ¼Ê±¸³Ó迪ʼʱ¼ä´ÁBegin_TS,ÓÃÓÚ¶ÁÈ¡ÕýÈ·µÄÐа汾(Êý¾ÝÐÐͬÑù¾ù¾ßÓÐʱ¼ä´Á),Ðа汾Êý¾Ý½áÊøÊ±¼ä´ÁEnd_TSÒ»°ãΪÕýÎÞÇî(+¡Þ),µ±½øÐÐÊý¾Ý¸üÐÂʱ´´½¨Ðµİ汾ÐÐ,²¢½«¾ÉµÄ°æ±¾ÐÐEnd_TSÐÞ¸ÄΪÊÂÎñID Xb(´Ë´¦·Çʱ¼ä´Á),еİ汾ÐеÄBegin_TSͬÑù±ê¼ÇΪÊÂÎñID (Xb).È»ºó»ñÈ¡ÊÂÎñµÄEnd_TS (Ψһ),È·ÈÏ¿ÉÌá½»ºó,Ìá½»ÊÂÎñ,²¢½«Ð¾ɰ汾µÄÊÂÎñID(Xb)Ìæ»»³É»ñÈ¡µÄEnd_TS.ÖÁ´ËÍê³ÉÒ»´Î²Ù×÷.Î´Éæ¼°ÈκÎËø,ãÅËø,×èÈû.Èçͼ2-7

ͼ2-7

ÓеÄͬѧ¿´µ½ÉÏͼ¿ÉÄÜ»ØÏë,ÕâÑùXa¶ÁÈ¡µÄ°æ±¾ÐÐÊÇÕýÈ·µÄÂð?ËûΪʲô²»ÄܶÁµ½XbµÄÐÂÐÐÊý¾Ý.ÎÒÃÇÀ´¼òµ¥·ÖÎöÏÂ

Xa¿ªÊ¼Ê±·ÖÅäµÄʱ¼ä´ÁΪ25,XbΪ35,Õâ¾ÍÒâζ×ÅXbµÄ½áÊøÊ±¼ä´ÁÒ»¶¨´óÓÚ35´ËʱXa¶ÁÈ¡Êý¾Ý,ʱ¼ä´Á·¶Î§Ó¦ÎªBegin_TS-20, End_TS-+¡Þ,¶øXaµÄBegin_TSСÓÚXbµÄBegin_TS,ËùÒÔ¶ÁÈ¡ÕýÈ·Èçͼ2-8.

2-8

ʵ¼ÊÉÏHekatonÖй涨 ²éѯµÄ¿É¼ûÖµÇø¼ä±ØÐ븲¸Ç´Ë²éѯµÄ¿ªÊ¼Ê±¼ä´Á±ÈÈçÒ»¸ö²éѯÊÂÎñµÄ¿ªÊ¼Ê±¼ä´ÁΪ30,Ëû¿É¼ûµÄÐа汾¿ÉÒÔ°üÀ¨10ÖÁ+¡Þ,20ÖÁ150,µ«²»ÄÜ¿´µ½40ÖÁ+¡Þ

Èçͼ2-9

ͼ2-9

ÓеÄͬѧ¿ÉÄÜ»áÏë,Ëæ×Å·ÃÎÊ,DMLµÄÔö¼Ó,»áÀÛ»ý´óÁ¿µÄÎÞÓÃÊý¾ÝÕ¼ÓÃÄÚ´æ,ʵ¼ÊÉϸù¾Ý²éѯ×ÔÉíµÄÊÂÎñʱ¼ä´Á,ÈçÉϵ±×î¹ÅÀϵÄÊÂÎñ¿ªÊ¼Ê±¼ä´Á´óÓÚµÈÓÚ50ʱ,¾É°æ±¾µÄÊý¾Ý¾Í¿ÉÒÔ°²È«µÄÇå³ýÊÍ·ÅÄÚ´æÁË. Çå³ý¹¤×÷¿ÉÒÔʹ¶àÏ̲߳¢ÐÐÖ´ÐÐ,¶ÔÐÂÄÜÓ°ÏìºÜС.

´Óͼ2-6ÖпÉÒÔ¿´µ½,²¢²»ÊÇÿ¸öÊÂÎñ¶¼¿ÉÒÔ°²È«Ìá½»µÄ,ÔÚÑéÖ¤½×¶Î,Hekaton»á¸ù¾ÝÓû§É趨µÄ¸ôÀë¼¶±ð½øÐÐÑéÖ¤.HekatonΪÀÖ¹Û²¢·¢,ÌṩÈýÖÖ¸ôÀë¼¶±ðµÄÖ§³Ö·Ö±ðΪ¿ìÕÕ¸ôÀë¼¶±ð(Snapshot Isolation),¿ÉÖØ¸´¶Á¸ôÀë¼¶±ð(Repeatable Reads Isolation)¼°ÐòÁл¯¸ôÀë¼¶±ð(Serializable),ÕâÓ봫ͳµÄ¹ØÏµÐÍÊý¾ÝÀàËÆ, SnapshotÖÐÊÇÎÞÐèÑéÖ¤µÄ,¶ø¿ÉÖØ¸´ÔòÐèÔÚÌύǰÔÙ´ÎÑéÖ¤ÓëÊÂÎñ¿ªÊ¼Ê±µÄÊý¾ÝÊÇ·ñÒ»ÖÂ,ÈçÒ»ÖÂÔò¿ÉÌá½»,·ñÔò²»¿ÉÌá½».¶øÐòÁл¯ÖйËÃû˼Òå¶ÁÈ¡µÄÇø¼äÊý¾Ý¶¼ÐèÒ»ÖÂ,·ñÔòʧ°Ü.ÓÐͬѧ¿ÉÄÜ»áÏëÐòÁл¯Öн«Æ¥Åä¶àÉÙÊý¾Ý°¡,³É±¾ÊDz»ÊÇÌ«¸ßÁË,±ðÍüÁËÕâÊÇÔÚÄÚ´æÖÐ,ÒÀÈ»±È´«Í³µÄÐòÁл¯³É±¾ÒªµÍºÜ¶à.ÊìϤÀÖ¹Û¼¶±ðµÄͬѧ¶¼ÖªµÀ,´«Í³µÄÀÖ¹Û²¢·¢¼¶±ðÏ»عö³É±¾ÊǷdz£¸ßµÄ,¶øHekatonÖвÉÓÃÑéÖ¤µÄ·½Ê½ÓÐЧµÄ¹æ±ÜÁËÕâÏî³É±¾.Ìá½»¾ÍÊÇдÈÕÖ¾¼Ç¼±ä»¯,²¢½«Êý¾ÝÐÐÖÐÊÂÎñIDÌæ»»³É»ñÈ¡µÄʱ¼ä´Á,¶ÔÆäËûÊÂÎñ¿É¼û.

µ±È»Ìá¸ßдÈÕÖ¾,ÎÒÃǶ¼ÖªµÀ´ÅÅÌÖÕ¾¿ÊÇÆ¿¾±,Ϊ´ËHekatonÒ²ÓÐÆäÌØ¶¨µÄÓÅ»¯·½Ê½À´»º½âÕâ¸öÎÊÌâ,ÏÞÓÚÆª·ùÕâÀï¾Í²»ÔÚÐðÊö.¶øÇÒÕë¶ÔÒ»Ð©ÌØ¶¨µÄ³¡¾°ÎÒÃÇ¿ÉÒÔÑ¡ÔñÖ»±£ÁôSchema¶øÎÞÐèÊý¾Ý³Ö¾Ã»¯(ÈçÓÎÏ·µÄ³¡¾°Êý¾ÝµÈ).

×îºó,Õë¶ÔCPUÖ´ÐÐЧÂʽ«Ö´Ðмƻ®ÓɽâÊÍÐÔÓïÑÔ(Interpreted)Ìæ»»Îª»úÆ÷ÓïÑÔ(Native).

ÓÅ»¯Æ÷¿ÉÒÔ˵ÊǹØÏµÐÍÊý¾Ý¿â×ÔӵIJ¿·ÖÁË,¼òµ¥ËµÏÂSQL ServerÓÅ»¯Æ÷´¦Àí¹ý³Ì:Ò»ÌõÓï¾ä½»¸øÓÅ»¯Æ÷»á½øÐа󶨽âÎö,Éú³É½âÎöÊ÷,È»ºó½øÐÐÓïÒå·ÖÎöÉú³ÉÂß¼­Ö´Ðмƻ®,×îºóÓÅ»¯Æ÷ÔÙΪÂß¼­Ö´Ðмƻ®»ùÓڳɱ¾Éú³ÉÎïÀíµÄÖ´Ðмƻ®.¶øHekatonÖÐ,Èç¹ûÎÒÃÇÑ¡ÔñNative·½Ê½Ö´ÐÐ(½«ËùÖ´ÐÐÓï¾äͨ¹ý´æ´¢¹ý³ÌÌØÊâ±àÒë)£¬ÔÚÉú³ÉÂß¼­Ö´Ðмƻ®Ö®ºó½«»á¸ù¾Ý²»Í¬µÄËã·¨,³É±¾Ô¤¹ÀÉú³É²»Í¬µÄÎïÀíÖ´Ðмƻ®,È»ºó½«ÎïÀíÖ´Ðмƻ®×ªÒë³ÉCÓïÑÔ´úÂëÔÙͨ¹ý±àÒëÆ÷½«Æä±àÒë³ÉDLL¼´»úÆ÷´úÂë.Èçͼ2-10

ͼ2-10

Ôø¾­Î¢²©ÉÏÓÐÅóÓÑÎÊΪʲôMysqlÖØ¹¹ÓÅ»¯Æ÷ʱΪʲôҪ½«parsing, optimizing, executionÈý¸öÄ£¿é·Ö¿ª¶ø²»ÊÇ»ìÔÚÒ»ÆðÁË,ÎÒÏëÕâÀï¿ÉÄܾÍÕÒµ½´ð°¸ÁË,Ò»¸öÓÅÐãRDBMSËü×ÔÉíµÄ½¡×³ÊǶàÃ´ÖØÒª.

ÔÚNativeÏÂ,ËùÓеÄÖ´Ðж¼ÊÇ¡±Goto¡±,Ö±½Ó¶ÁÈ¡Êý¾Ý,ÔÙÒ²²»ÓÃÒ»¸öÒ»¸öµÄfunctionµÄµ÷ÓÃ,¼«´óÌáÉýCPUµÄ¹¤×÷ЧÂÊ.ÓÐÈË¿ÉÄÜ»áÎÊÕâÑùÿ´Î¶¼±àÒ뽫ÊǷdz£´óµÄ¹¤×÷³É±¾,ʵ¼ÊÉÏHekaton½«Ö¸¶¨²éѯ(´æ´¢¹ý³Ì)±àÒë³ÉDLLÎļþ,Ö»ÊÇÔÚµÚÒ»´Î½«ÆäÔØÈëÄÚ´æ¾Í¿ÉÒÔÁË.¶ÔÓÚ¼´Ï¯²éѯÊDz»¿ÉÒÔµÄ.

HekatonÔÚ»úÆ÷´úÂëÏÂÖ´ÐÐЧÂÊ´ó·ùÌáÉý,ÒÔÏÂÊÇ΢Èí¸ø³öµÄ²âÊÔÊý¾Ý

a. InterpretedÓëNativeµÄ¶Ô±È,ÆäÖзÖΪÊÇ·ñΪÄÚ´æÓÅ»¯±í,²éѯµ¥ÌõÊý¾ÝËùÏûºÄµÄCPUÖ¸Áî Èçͼ2-11

ͼ2-11

b.Ëæ»ú²éÕÒ1000ÍòÊý¾ÝÆÕͨ±íÓëHekatonÄÚ´æÓÅ»¯±í²éѯʱ¼ä¶Ô±Èͼ2-12

ͼ2-12

c. ÆÕͨ±íÓëHekatonÄÚ´æÓÅ»¯±íÄÚ´æÖÐËæ»ú¸üÐÂÊý¾Ý¶Ô±È,´Ëʱ²»Ð´ÈÕÖ¾Èçͼ2-13

ͼ2-13

HekatonÓ¦Óð¸Àý

Hekaton£¬¹ÅÏ£À°ÓïÖбíʾ°Ù±¶,ËäȻĿǰ»¹Î´´ïµ½Ô¸¾°,ÎÒÏëÕâ¸ö³öÉ«µÄÍŶÓÒ»¶¨Äܹ»×öµ½.

SQL ServerÓÐÁËÕâ¸öÐÂÀûÆ÷,ÔÚÓ¦¶ÔÐÔÄÜÎÊÌâÉϸü¼Ó³öÉ«.ÔÚ΢ÈíµÄ¹Ù·½ÍøÕ¾ÉÏÓдóÁ¿°¸Àý,ÕâÀïÎÒÃÇÁоټ¸¸ö.

Bwin,Å·ÖÞ×î´óµÄÔÚÏß²©²Ê¹«Ë¾,²ÉÓÃHekatonºó,ÏßÉÏÿÃëÅú´¦ÀíÓÉ15000ÌáÉýµ½250000.

EdgeNet,¹è¹ÈÖøÃûµÄÊý¾Ý·þÎñÉÌ,²ÉÓÃHekatonºó,ÏßÉÏÈë¿âÊý¾ÝÁ¿ÓÉ7450/sÌáÉýµ½126665/s

¾ùÓɽü17±¶µÄËÙ¶ÈÌáÉýÈçͼ3-1

ͼ3-1

¶ø½«Ò׳µµÄ»ÝÂò³µµÄ·ÃÎÊÁ¿ÔÚHekatonÄ£ÄâÔËÐÐʱ,¸÷ÏîÐÔÄÜÖ¸±ê¶¼±íÏֵĺܵ­¶¨.

Èçͼ3-2

ͼ3-2

Hekaton²»½öΪÎÒÃǽâ¾öÁ˲»ÉÙ³¡¾°ÏµÄÐÔÄÜÎÊÌâ,ÎÒÏëÃæ¶ÔÌØ¶¨³¡¾°ÖеÄһЩ¼¬ÊÖÎÊÌâÒ²ÓÐÒ»¶¨µÄ°ïÖú.±ÈÈçµçÉÌÈÈÖÔµÄÃëɱ/ÇÀ¹º.ÕâÀï±ÊÕ߾Ͳ»ÔÚÐðÊöÒµÄÚÅóÓÑÑо¿µÄÅŶÓÂÛ,ÅúÁ¿Ìá½»µÈµÈ°ì·¨.ʵ¼ÊÉϼÆËã»úÔÚµ±ÏÂÆÕ±éÓ¦Óö¼ÊÇÄ£ÄâÈýά¿Õ¼äÄÚµÄÈËΪ»î¶¯,ÊÔÏëÏÂ,ÇÀ¹ºµÄ¹ý³ÌÖÕ¾¿Óгɹ¦»òÊÇʧ°Ü,¾ÍºÃÏñÄãÔÚÇÀ¹ºÈÈÏú²úƷʱ±»ÉíÊֽý¡µÄ´óÂèÍÆµ½Ò»±ßÄãûÇÀµ½Ò»Ñù,Õâ²»ÕýºÃ·ûºÏHekatonÖеÄÊÂÎñ»úÖÆ?¡­ÎÒÃÇÔÚÉè¼ÆÍøÉϲúÆ·»î¶¯µÄʱºòÊÇ·ñ¸ÃÏëÏëÄ£Äâµ½ÏÖʵÖÐÊÇʲôÑù×ÓµÄ?¶Ô´Ë,ÎÒÈÏΪÎÒÃÇÐèÒªµÄÊǿɿØ,¶ø²»ÊÇ¿ØÖÆ.


   
2577 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí