Bruce Momjian ã® 2020 幎ã®è¬æŒãPostgres ãã㯠ãããŒãžã£ãŒã®ããã¯è§£é€ãã®æžãèµ·ããã
(泚: ã¹ã©ã€ãã®ãã¹ãŠã® SQL ã¯ãšãªã¯ã次ã®ãªã³ã¯ããå
¥æã§ããŸãã
ããã«ã¡ã¯ïŒ åã³ãããã·ã¢ã«æ¥ãããŠå¬ããã§ãã å»å¹Žã¯æ¥ãããªããŠæ®å¿µã§ãããä»å¹Žã¯ã€ã¯ã³ãšç§ã«ã¯å€§ããªèšç»ããããŸãã ãã£ãšé »ç¹ã«ããã«æ¥ãããšæã£ãŠããŸãã ãã·ã¢ã«æ¥ãã®ã倧奜ãã§ãã ããŽã§ãªã®ãã¥ã¡ãã蚪åããŸãã ãããã®éœåžã蚪ããããšãã§ããŠãšãŠãããããã§ãã
ç§ã®ååã¯ãã«ãŒã¹ã»ã¢ã ãžã¢ã³ã§ãã ç§ã¯ EnterpriseDB ã§åããŠããã23 å¹Žä»¥äž Postgres ã䜿ã£ãŠããŸããã ç§ã¯ã¢ã¡ãªã«ã®ãã£ã©ãã«ãã£ã¢ã«äœãã§ããŸãã ç§ã¯å¹ŽéçŽ90æ¥æ
è¡ããŸãã ãããŠç§ã¯çŽ40ã®ã«ã³ãã¡ã¬ã³ã¹ã«åå ããŠããŸãã ç§ã®
ç§ã¯ Postgres ã䜿ãå§ããåã¯æåž«ãææãããŠããŸããã ãããŠãããããç§ãäŒããããšããŠããããšãçããã«ãäŒãã§ããããšããšãŠãå¬ããæããŸãã ããã¯ç§ã®ãã¬ãŒã³ããŒã·ã§ã³ã®äžã§æãèå³æ·±ããã®ã® 110 ã€ã§ãã ãã®ãã¬ãŒã³ããŒã·ã§ã³ã«ã¯ XNUMX æã®ã¹ã©ã€ããå«ãŸããŠããŸãã æåã¯ç°¡åãªããšãã話ãå§ããŸãããæåŸã«ã¯ã¬ããŒãã¯ã©ãã©ãè€éã«ãªã£ãŠãããããªãè€éãªãã®ã«ãªã£ãŠãããŸãã
ããã¯ããªãäžæå¿«ãªäŒè©±ã§ãã ããããã³ã°ã¯æã人æ°ã®ããããŒãã§ã¯ãããŸããã ããã¯ã©ããã«æ¶ããŠã»ããã æ¯å»è ã«è¡ããããªãã®ã§ãã
- ããŒã¿ããŒã¹ã§äœæ¥ããè€æ°ã®ããã»ã¹ãåæã«å®è¡ããŠããå€ãã®äººã«ãšã£ãŠãããã¯ã¯åé¡ã§ãã 圌ãã«ã¯ãããã¯ãå¿ èŠã ã ãšããããšã§ãä»æ¥ã¯ããããã³ã°ã®åºç€ç¥èããäŒãããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ IDã ããã¯ãã¬ãŒã³ããŒã·ã§ã³ã®ããªãéå±ãªéšåã§ãããç解ããå¿ èŠããããŸãã
- 次ã«ããããã¯ã®çš®é¡ã«ã€ããŠèª¬æããŸãã ããã¯ããªãæ©æ¢°çãªéšåã§ãã
- 以äžã«ããããã¯ã®äŸãããã€ã瀺ããŸãã ãããŠãããç解ããã®ã¯ããªãé£ããã§ãããã
ãããã¯ã«ã€ããŠè©±ããŸãããã
ç§ãã¡ã®çšèªã¯éåžžã«è€éã§ãã ãã®äžç¯ã®åºå žãç¥ã£ãŠãã人ã¯äœäººããŸãã? äºäººã ããã¯Colossal Cave Adventureãšããã²ãŒã ããã®ãã®ã§ãã 80幎代ã®ããã¹ãããŒã¹ã®ã³ã³ãã¥ãŒã¿ãŒã²ãŒã ã ã£ããšæããŸãã ããã§ã¯æŽçªã«å ¥ã£ãããè¿·å®®ã«å ¥ã£ããããå¿ èŠããããããã¹ãã¯å€ãããŸããããå 容ã¯æ¯åã»ãŒåãã§ããã ãããªæãã§ãã®ã²ãŒã ãæãåºããŸããã
ããã«ãOracle ããæäŸãããããã¯ã®ååã衚瀺ãããŸãã ç§ãã¡ã¯ãããã䜿çšããŠããŸãã
ããã§ç§ãæ··ä¹±ãããçšèªãåºãŠããŸãã ããšãã°ãSHARE UPDATE ECXLUSIVE ãªã©ã§ãã 次ã«RAW ECXLUSIVEãå ±æããŸãã æ£çŽã«èšããšããããã®ååã¯ããŸãæ確ã§ã¯ãããŸããã ããããããã«è©³ããæ€èšããŠãããŸãã åé¢ãæå³ãããshareããšããèšèãå«ãŸããŠãããã®ããããŸãã ãç¬å ããšããèšèãå«ãŸããŠãããã®ããããŸãã ãããã®åèªã®äž¡æ¹ãå«ããã®ããããŸãã ãããã®ããã¯ãã©ã®ããã«æ©èœãããããå§ããããšæããŸãã
ãããŠãã¢ã¯ã»ã¹ããšããèšèãéåžžã«éèŠã§ãã ãããŠããè¡ããšããåèªã¯æååã§ãã ã€ãŸããã¢ã¯ã»ã¹åæ£ãè¡åæ£ã§ãã
Postgres ã§ç解ããå¿ èŠããããã XNUMX ã€ã®åé¡ã¯ãæ®å¿µãªããç§ã®è¬æŒã§ã¯åãäžããããšãã§ããŸããããMVCC ã§ãã ãã®ãããã¯ã«é¢ããå¥ã®ãã¬ãŒã³ããŒã·ã§ã³ãç§ã®ãŠã§ããµã€ãã«æ²èŒããŠããŸãã ãã®ãã¬ãŒã³ããŒã·ã§ã³ãé£ãããšæããªãããããã MVCC ãç§ã«ãšã£ãŠæãé£ãããã¬ãŒã³ããŒã·ã§ã³ã§ãã ãèå³ãããããŸãããããŠã§ããµã€ãã§ã芧ããã ããŸãã ãããªãèŠãããšãã§ããŸãã
ãã XNUMX ã€ç解ããå¿ èŠãããã®ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ID ã§ãã å€ãã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãäžæã®èå¥åããªããã°æ©èœããŸããã ããã§ããã©ã³ã¶ã¯ã·ã§ã³ãšã¯äœãã«ã€ããŠèª¬æããŸãã Postgres ã«ã¯ XNUMX ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³çªå·ä»ãã·ã¹ãã ããããŸãã ãããããŸãããããªè§£æ±ºçã§ã¯ãªãããšã¯æ¿ç¥ããŠããŸãã
ãŸããã¹ã©ã€ãã¯éåžžã«ãããã«ããã®ã§ã泚æãå¿ èŠãªéšåã¯èµ€ã§ãã€ã©ã€ããããŠããŸãã
èŠãŠã¿ãŸãããã ãã©ã³ã¶ã¯ã·ã§ã³çªå·ã¯èµ€è²ã§åŒ·èª¿è¡šç€ºãããŸãã SELECT pg_back é¢æ°ãããã«ç€ºããŸãã ç§ã®ãã©ã³ã¶ã¯ã·ã§ã³ãšãã©ã³ã¶ã¯ã·ã§ã³IDãè¿ãããŸãã
ãã XNUMX ã€ããã®ãã¬ãŒã³ããŒã·ã§ã³ãæ°ã«å ¥ã£ãŠããŒã¿ããŒã¹äžã§å®è¡ãããå Žåã¯ããã®ãã³ã¯è²ã®ãªã³ã¯ã«ç§»åããŠããã®ãã¬ãŒã³ããŒã·ã§ã³ã® SQL ãããŠã³ããŒãã§ããŸãã PSQL ã§å®è¡ããã ãã§ããã¬ãŒã³ããŒã·ã§ã³å šäœãããã«ç»é¢ã«è¡šç€ºãããŸãã è±ã¯å«ãŸããŸããããå°ãªããšããããèŠãããšãã§ããŸãã
ãã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ ID ã衚瀺ãããŸãã ããã¯ç§ãã¡ã圌女ã«å²ãåœãŠãçªå·ã§ãã Postgres ã«ã¯ä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID ãšåŒã°ããå¥ã®ã¿ã€ãã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ããããŸãã
ãããŠç§ãã¡ã¯ãããç解ããªããã°ãªããŸããã ããã¯éåžžã«éèŠã§ããããããªããšãPostgres ã§ã®ããã¯ãç解ã§ããªããªããŸãã
ä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID ã¯ãæ°žç¶çãªå€ãå«ãŸãªããã©ã³ã¶ã¯ã·ã§ã³ ID ã§ãã ããšãã°ãSELECT ã³ãã³ããå®è¡ããå ŽåãããããããŒã¿ããŒã¹ã¯å€æŽããããäœãããã¯ãããŸããã ãããã£ãŠãåçŽãª SELECT ãå®è¡ãããšãã¯ããã®ãã©ã³ã¶ã¯ã·ã§ã³ã«æ°žç¶ç㪠ID ãäžããŸããã ããã§ã¯ä»®æ³ ID ã圌女ã«äžããã ãã§ãã
ããã«ãããPostgres ã®ããã©ãŒãã³ã¹ãåäžããã¯ãªãŒã³ã¢ããæ©èœãåäžãããããä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID 㯠XNUMX ã€ã®æ°åã§æ§æãããŸãã ã¹ã©ãã·ã¥ã®åã®æåã®æ°åã¯ããã¯ãšã³ã ID ã§ãã ãããŠå³åŽã«ã¯ã«ãŠã³ã¿ãŒã ããèŠããŸãã
ãããã£ãŠããªã¯ãšã¹ããå®è¡ãããšãããã¯ãšã³ã ID 㯠2 ã§ãããšè¡šç€ºãããŸãã
ãã®ãããªãã©ã³ã¶ã¯ã·ã§ã³ãäžé£ã§å®è¡ãããšãã¯ãšãªãå®è¡ãããã³ã«ã«ãŠã³ã¿ãŒãå¢å ããããšãããããŸãã ããšãã°ãã¯ãšãª 2/10ã2/11ã2/12 ãªã©ãå®è¡ãããšã
ããã«ã¯ 2 ã€ã®åãããããšã«æ³šæããŠãã ããã å·ŠåŽã«ã¯ãä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID â 12/XNUMX ã衚瀺ãããŸãã ãããŠå³åŽã«ã¯æ°žç¶çãªãã©ã³ã¶ã¯ã·ã§ã³ ID ããããŸãã ãããŠãã®ãã£ãŒã«ãã¯ç©ºã§ãã ãŸãããã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ããŒã¿ããŒã¹ãå€æŽããŸããã ãããã£ãŠãæ°žç¶çãªãã©ã³ã¶ã¯ã·ã§ã³IDã¯äžããŸããã
åæã³ãã³ã ((ANALYZE)) ãå®è¡ãããšããã«ãåãã¯ãšãªã«ãã£ãŠæ°žç¶çãªãã©ã³ã¶ã¯ã·ã§ã³ ID ãåŸãããŸãã ãããç§ãã¡ã«ãšã£ãŠã©ã®ããã«å€ãã£ãããèŠãŠãã ããã 以åã¯ãã® ID ãæã£ãŠããŸããã§ããããä»ã¯æã£ãŠããŸãã
ããã§ãå¥ã®ãªã¯ãšã¹ããå¥ã®ãã©ã³ã¶ã¯ã·ã§ã³ããããŸãã ä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³çªå·ã¯ 2/13 ã§ãã æ°žç¶çãªãã©ã³ã¶ã¯ã·ã§ã³ ID ãèŠæ±ãããšãã¯ãšãªãå®è¡ãããšãããååŸãããŸãã
ããã§ã¯ãããäžåºŠã ä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID ãšæ°žç¶ãã©ã³ã¶ã¯ã·ã§ã³ ID ããããŸãã Postgres ã®åäœãç解ããã«ã¯ããã®ç¹ãç解ããã ãã§ãã
XNUMX çªç®ã®ã»ã¯ã·ã§ã³ã«é²ã¿ãŸãã ããã§ã¯ãPostgres ã®ããŸããŸãªçš®é¡ã®ããã¯ã«ã€ããŠç°¡åã«èª¬æããŸãã ããŸãé¢çœããªãã§ããã æåŸã®ã»ã¯ã·ã§ã³ã¯ããã«èå³æ·±ããã®ã«ãªãã§ãããã ããããåºæ¬çãªããšãèæ ®ããå¿ èŠããããŸããããããªããšã次ã«äœãèµ·ããããç解ã§ããªããªããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãåã¿ã€ãã®ããã¯ãèŠãŠãããŸãã ãããŠãããããã©ã®ããã«ã€ã³ã¹ããŒã«ãããã©ã®ããã«æ©èœãããã®äŸã瀺ããPostgres ã§ããã¯ãã©ã®ããã«æ©èœãããã確èªããããã«äœ¿çšã§ããããã€ãã®ã¯ãšãªã瀺ããŸãã
ã¯ãšãªãäœæã㊠Postgres ã§äœãèµ·ãã£ãŠãããã確èªããã«ã¯ãã·ã¹ãã ãã¥ãŒã§ã¯ãšãªãçºè¡ããå¿ èŠããããŸãã ãã®å Žåãpg_lock ãèµ€è²ã§åŒ·èª¿è¡šç€ºãããŸãã Pg_lock ã¯ãPostgres ã§çŸåšã©ã®ãããªããã¯ã䜿çšãããŠãããã瀺ãã·ã¹ãã ããŒãã«ã§ãã
ãã ããpg_lock ã¯éåžžã«è€éãªã®ã§ãããèªäœã玹ä»ããã®ã¯éåžžã«å°é£ã§ãã ããã§ãpg_locks ã衚瀺ãããã¥ãŒãäœæããŸããã ãããŠãããã¯ç§ã«ãšã£ãŠãããæ·±ãç解ããããšãå¯èœã«ããããã€ãã®å¹æããããŸãã ã€ãŸããç§ã®ããã¯ãç§èªèº«ã®ã»ãã·ã§ã³ãªã©ã¯é€å€ãããŸããããã¯åãªãæšæº SQL ã§ãããäœãèµ·ãã£ãŠããããããé©åã«ç€ºãããšãã§ããŸãã
ãã 2 ã€ã®åé¡ã¯ããã®ãã¥ãŒãéåžžã«åºããããXNUMX çªç®ã®ãã¥ãŒãlockviewXNUMX ãäœæããå¿ èŠãããããšã§ãã
ãããŠãããŒãã«ã®ããã«å€ãã®åã衚瀺ãããŸãã ãã XNUMX ã€ã¯ãæ®ãã®åã瀺ããŠããŸãã ããã¯éåžžã«è€éãªã®ã§ãã§ããã ãç°¡åã«èª¬æããããšããŸããã
ããã§ãLockdemo ãšããããŒãã«ãäœæããŸããã ãããŠããã«äžæ¬ã®ç·ãäœããŸããã ããã¯ãµã³ãã«ããŒãã«ã§ãã ãŸããããã¯ã®äŸã瀺ãããã ãã«ã»ã¯ã·ã§ã³ãäœæããŸãã
ãããã£ãŠãXNUMX è¡ãXNUMX åã«ãªããŸãã æåã®ã¿ã€ãã®ããã¯ã¯ ACCESS SHARE ãšåŒã°ããŸãã ããã¯æãå¶éã®å°ãªããããã¯ã§ãã ããã¯ãä»ã®ããã¯ãšå®è³ªçã«ç«¶åããªãããšãæå³ããŸãã
ãŸããæ瀺çã«ããã¯ãå®çŸ©ãããå Žåã¯ããlock tableãã³ãã³ããå®è¡ããŸãã ãããŠããã¯æããã«ãããã¯ããŸããã€ãŸããACCESS SHARE ã¢ãŒãã§ã¯ããã¯ããŒãã«ãèµ·åããŸãã ãŸããPSQL ãããã¯ã°ã©ãŠã³ãã§å®è¡ããå Žåã¯ããã®æ¹æ³ã§æåã®ã»ãã·ã§ã³ãã XNUMX çªç®ã®ã»ãã·ã§ã³ãéå§ããŸãã ã€ãŸããããã§äœãããŸããïŒ å¥ã®ã»ãã·ã§ã³ã«ç§»åããŠãããã®ãªã¯ãšã¹ãã®ããã¯ãã¥ãŒã衚瀺ããŠãã ããããšæ瀺ããŸãã ãããŠããã®ããŒãã«ã«ã¯ AccessShareLock ããããŸãã ããã¯ãŸãã«ç§ããªã¯ãšã¹ããããã®ã§ãã ãããŠããããã¯ãå²ãåœãŠããããšåœŒã¯èšããŸãã ãšãŠãã·ã³ãã«ã§ãã
ããã«ãXNUMX çªç®ã®åãèŠããšãããã«ã¯äœããããŸããã ãããã¯ç©ºã§ãã
ãããŠããSELECTãã³ãã³ããå®è¡ãããšããã㯠AccessShareLock ãèŠæ±ããæé»ç (æ瀺ç) æ¹æ³ã«ãªããŸãã ããã§ããŒãã«ã解æŸããŠã¯ãšãªãå®è¡ãããšãã¯ãšãªã¯è€æ°ã®è¡ãè¿ããŸãã ãããŠããã®è¡ã® XNUMX ã€ã« AccessShareLock ã衚瀺ãããŸãã ãããã£ãŠãSELECT ã¯ããŒãã«ã«å¯Ÿã㊠AccessShareLock ãåŒã³åºããŸãã ãŸããããã¯äœã¬ãã«ã®ããã¯ã§ãããããäºå®äžäœãšã競åããŸããã
SELECT ãå®è¡ããXNUMX ã€ã®ç°ãªãããŒãã«ãããå Žåã¯ã©ããªããŸãã? 以å㯠XNUMX ã€ã®ããŒãã«ã ããå®è¡ããŠããŸããããçŸåšã¯ pg_classãpg_namespaceãpg_attribute ã® XNUMX ã€ã®ããŒãã«ãå®è¡ããŠããŸãã
ãããŠã¯ãšãªãèŠããšã9 ã€ã®ããŒãã«ã« XNUMX ã€ã® AccessShareLock ã衚瀺ãããŸãã ãªãïŒ pg_attributeãpg_classãpg_namespace ã® XNUMX ã€ã®ããŒãã«ãéã§åŒ·èª¿è¡šç€ºãããŸãã ãã ãããããã®ããŒãã«ãéããŠå®çŸ©ããããã¹ãŠã®ã€ã³ããã¯ã¹ã«ã AccessShareLock ãããããšãããããŸãã
ãããŠãããã¯ä»ã®ããã¯ãšå®è³ªçã«ç«¶åããªãããã¯ã§ãã ãããŠãããŒãã«ãéžæããŠãããšãã«ããŒãã«ããªã»ããã§ããªãããã«ããã ãã§ãã ããã¯çã«ããªã£ãŠããã ã€ãŸããããŒãã«ãéžæãããšããã®ç¬éã«ããŒãã«ãæ¶ããŸãããããã¯ééã£ãŠããŸãã AccessShare ã¯ããäœæ¥äžã¯ãã®ããŒãã«ãåé€ããªãã§ãã ããããšããäœã¬ãã«ã®ããã¯ã§ããã æ¬è³ªçã«ã圌女ãããããšã¯ããã ãã ã
ROW SHARE - ãã®ããã¯ã¯å°ãç°ãªããŸãã
äŸãæããŠã¿ãŸãããã åè¡ãåå¥ã«ããã¯ãã SELECT ROW SHARE ã¡ãœããã ããããããšã§ãç§ãã¡ãç£èŠããŠããéã誰ãããããåé€ãããå€æŽãããããããšãã§ããªããªããŸãã
ã§ã¯ãSHARE LOCKã¯äœãããã®ã§ããããïŒ SELECT ã®ãã©ã³ã¶ã¯ã·ã§ã³ ID 㯠681 ã§ããããšãããããŸãã ãããŠãããã¯èå³æ·±ãã§ãã ããã§äœãèµ·ãã£ãã®ã§ããããïŒ æåã«çªå·ã衚瀺ãããã®ã¯ããããã¯ããã£ãŒã«ãã§ãã ãã©ã³ã¶ã¯ã·ã§ã³ ID ãååŸãããšãæä»ã¢ãŒãã§ãããã¯ããŠããããšãããããŸãã ããŒãã«ã®ã©ããã«æè¡çã«ããã¯ãããŠããè¡ããããšè¡šç€ºãããã ãã§ãã ãããã圌ã¯æ£ç¢ºãªå Žæã«ã€ããŠã¯è¿°ã¹ãŠããªãã ããã«ã€ããŠã¯åŸã»ã©è©³ããèŠãŠãããŸãã
ããã§ã¯ãããã¯ãç§ãã¡ã«ãã£ãŠäœ¿çšãããŠãããšèšããŸãã
ãããã£ãŠãæä»ããã¯ã¯ããããæä»çã§ããããšãæ瀺çã«ç€ºããŸãã ãŸãããã®ããŒãã«ã®è¡ãåé€ãããšãã芧ã®ãšããã次ã®ãããªããšãèµ·ãããŸãã
SHARE EXCLUSIVE ã¯é·ãããã¯ã§ãã
ããã¯ã䜿çšããã (ANALYZE) ã¢ãã©ã€ã¶ãŒ ã³ãã³ãã§ãã
SHARE LOCK â å ±æã¢ãŒãã§æ瀺çã«ããã¯ã§ããŸãã
äžæã®ã€ã³ããã¯ã¹ãäœæããããšãã§ããŸãã ãããŠããã«ããã®ãSHARE LOCKã§ããããã®äžéšã§ãã ãããŠãããŒãã«ãããã¯ããSHARE LOCK ãèšå®ããŸãã
ããã©ã«ãã§ã¯ãããŒãã«ã® SHARE LOCK ã¯ãä»ã®äººãããŒãã«ãèªã¿åãããšã¯ã§ããŸãããå€æŽããããšã¯ã§ããªãããšãæå³ããŸãã ããã¯ãŸãã«ãäžæã®ã€ã³ããã¯ã¹ãäœæãããšèµ·ããããšã§ãã
äžæã®åæã€ã³ããã¯ã¹ãäœæãããšãç°ãªãã¿ã€ãã®ããã¯ã䜿çšãããŸããããã¯ããåç¥ã®ãšãããåæã€ã³ããã¯ã¹ã䜿çšãããšããã¯èŠä»¶ã軜æžãããããã§ãã ãããŠãéåžžã®ããã¯ãéåžžã®ã€ã³ããã¯ã¹ã䜿çšãããšãããŒãã«ã€ã³ããã¯ã¹ã®äœæäžã«ããŒãã«ã€ã³ããã¯ã¹ã«æžã蟌ãããšãã§ããªããªããŸãã åæã€ã³ããã¯ã¹ã䜿çšããå Žåã¯ãå¥ã®ã¿ã€ãã®ããã¯ã䜿çšããå¿ èŠããããŸãã
SHARE ROW EXCLUSIVE â ãããæ瀺çã« (æ瀺çã«) èšå®ã§ããŸãã
ãŸãã¯ãã«ãŒã«ãäœæããããšãã§ããŸããã€ãŸããã«ãŒã«ã䜿çšãããç¹å®ã®ã±ãŒã¹ãèæ ®ããŸãã
EXCLUSIVE ããã¯ã¯ãä»ã®èª°ãããŒãã«ãå€æŽã§ããªãããšãæå³ããŸãã
ããã§ã¯ããŸããŸãªã¿ã€ãã®ããã¯ãèŠãŠãããŸãã
ããšãã°ãACCESS EXCLUSIVE ã¯ããã㯠ã³ãã³ãã§ãã ããšãã°ã次ã®ããã«ãããš CLUSTER table
ããããããšã誰ãããã«æžã蟌ãããšãã§ããªããªããŸãã ãŸããããŒãã«èªäœã ãã§ãªãã€ã³ããã¯ã¹ãããã¯ããŸãã
ãã㯠ACCESS EXCLUSIVE ãããã¯ã® XNUMX ããŒãžç®ã§ãè¡šå ã§ãããã¯ããå 容ãæ£ç¢ºã«ããããŸãã ããã¯ããŒãã«ã®åã ã®è¡ãããã¯ããŸãããããã¯éåžžã«èå³æ·±ããã®ã§ãã
ãããç§ãäŒãããã£ãåºæ¬æ å ±ã®ãã¹ãŠã§ãã ããã¯ã«ã€ããŠããã©ã³ã¶ã¯ã·ã§ã³ ID ã«ã€ããŠãä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID ã«ã€ããŠãæ°žç¶çãªãã©ã³ã¶ã¯ã·ã§ã³ ID ã«ã€ããŠèª¬æããŸããã
次ã«ããããã¯ã®äŸãããã€ãèŠãŠãããŸãã ãããæãèå³æ·±ãéšåã§ãã éåžžã«èå³æ·±ãäºäŸãèŠãŠãããŸãã ãã®ãã¬ãŒã³ããŒã·ã§ã³ã®ç§ã®ç®æšã¯ãPostgres ãç¹å®ã®ãã®ããããã¯ããããšãããšãã«å®éã«äœãããŠããã®ããããããç解ããŠããã ãããšã§ãã 圌ã¯éšåãé ãã®ããšãŠãäžæã ãšæããŸãã
ããã€ãã®å ·äœçãªäŸãèŠãŠã¿ãŸãããã
ããŒãã«ãšããŒãã«å ã® XNUMX ã€ã®è¡ããå§ããŸãã äœããæ¿å ¥ãããšãExclusiveLockãTransaction IDãExclusiveLock ãããŒãã«ã«è¡šç€ºãããŸãã
ããã« XNUMX è¡æ¿å ¥ãããšã©ããªããŸãã? ããã§ãããŒãã«ã«ã¯ XNUMX è¡ãè¿œå ãããŸããã ãããŠãXNUMXè¡ãæ¿å ¥ãããããåºåãšããŠååŸããŸããã ããã« XNUMX è¡æ¿å ¥ãããšãäœãããããªããšã«ãªãã§ãããã? ãã®ããŒãã«ã« XNUMX è¡ãè¿œå ããã«ããããããããã㯠ããŒãã«ã«ã¯ãŸã XNUMX è¡ãæ®ã£ãŠãããããããã§å¥åŠãªããšãèµ·ãããŸãã ããã¯æ¬è³ªçã« Postgres ã®åºæ¬çãªåäœã§ãã
å€ãã®äººã¯ãããŒã¿ããŒã¹ã§ 100 è¡ãããã¯ããå Žåã100 åã®ãã㯠ãšã³ããªãäœæããå¿ èŠããããšèããŠããŸãã äžåºŠã« 1 è¡ããããã¯ãããšããã®ãããªã¯ãšãªã 000 åå¿ èŠã«ãªããŸãã ãããŠããããã¯ããã®ã«1äžãŸãã¯000åãå¿ èŠãªå Žåã ããããããããã£ãŠãããŸããããŸããã åå¥ã®è¡ããšã«ããããã³ã° ãšã³ããªãäœæããã·ã¹ãã ã䜿çšããããšãããå Žåããããè€éã§ããããšãããããŸãã ãªãŒããŒãããŒããå¯èœæ§ããããã㯠ããŒãã«ãããã«å®çŸ©ããå¿ èŠããããŸãããPostgres ã§ã¯ãããè¡ãããªãããã§ãã
ãããŠããã®ã¹ã©ã€ãã§æ¬åœã«éèŠãªã®ã¯ãMVCC å ã§å®è¡ãããåã ã®è¡ãããã¯ããå¥ã®ã·ã¹ãã ãååšããããšãæ確ã«ç€ºããŠããããšã§ãã ãããã£ãŠãæ°ååã®è¡ãããã¯ããå ŽåãPostgres 㯠XNUMX åã®åå¥ã®ãã㯠ã³ãã³ããäœæããŸããã ãããŠãããã¯çç£æ§ã«éåžžã«è¯ã圱é¿ãäžããŸãã
ã¢ããããŒãã«ã€ããŠã¯ã©ãã§ããïŒ çŸåšè¡ãæŽæ°ããŠããŸãããXNUMX ã€ã®ç°ãªãæäœãåæã«å®è¡ãããŠããããšãããããŸãã åæã«ããŒãã«ãããã¯ããŸããããã€ã³ããã¯ã¹ãããã¯ããŸããã ãã®ããŒãã«ã«ã¯äžæã®å¶çŽããããããã€ã³ããã¯ã¹ãããã¯ããå¿ èŠããããŸããã ãããŠã誰ãå€æŽããªãããã«ãããã®ã§ããããã¯ããŸãã
XNUMX è¡ãæŽæ°ãããå Žåã¯ã©ããªããŸãã? ãããŠåœŒãåãããã«è¡åããŠããããšãããããŸãã æŽæ°åæ°ã¯ XNUMX åã§ãããããã¯è¡ã®æ°ã¯ãŸã£ããåãã§ãã
Postgres ããããã©ã®ããã«è¡ãã®ãçåã«æã£ãŠããå Žåã¯ãMVCC ã«é¢ããç§ã®è¬æŒãèããŠãPostgres ãå€æŽãããããã®è¡ãå éšçã«ã©ã®ããã«ããŒã¯ããããåŠã¶å¿ èŠããããŸãã Postgres ã«ã¯ãããè¡ãæ¹æ³ããããŸãããããŒãã« ãã㯠ã¬ãã«ã§ã¯ãªããããäœãå¹ççãªã¬ãã«ã§è¡ãããŸãã
äœããåé€ãããå Žåã¯ã©ãããã°ããã§ãã? ããšãã°ãXNUMX è¡ãåé€ããŠã XNUMX ã€ã®ãããã¯å ¥åããŸã æ®ã£ãŠããããããããã¹ãŠåé€ããããšæã£ãŠãããããã¯ãŸã ããã«ãããŸãã
ããšãã°ã1 è¡ãæ¿å ¥ãããã®åŸ 000 è¡ãåé€ãŸãã¯è¿œå ããè¿œå ãŸãã¯å€æŽããåã ã®è¡ã¯ããã«ã¯èšé²ãããŸããã ãããã¯ã·ãªãŒãºèªäœã®äžäœã¬ãã«ã§æžãããŠããŸãã ãããŠMVCCã®ã¹ããŒãã®äžã§ç§ã¯ããã«ã€ããŠè©³ãã話ããŸããã ãã ããããã¯ãåæãããšãã¯ãããŒãã« ã¬ãã«ã§ããã¯ããŠããããšãšãåã ã®è¡ãããã§ã©ã®ããã«èšé²ãããŠãããã確èªããŠããªãããšã確èªããããšãéåžžã«éèŠã§ãã
æ瀺çãªãããã¯ã«ã€ããŠã¯ã©ãã§ãã?
ãæŽæ°ããã¯ãªãã¯ãããšãXNUMX è¡ãããã¯ãããŸãã ãããŠããããããã¹ãŠéžæããŠãã©ãã§ãæŽæ°ããã¯ãªãã¯ããŠãããããã¯ããŠããã¬ã³ãŒãã XNUMX ã€æ®ã£ãŠããŸãã
åã ã®è¡ããšã«åå¥ã®ã¬ã³ãŒãã¯äœæããŸããã ãããªããšçç£æ§ãèœã¡ãã®ã§ãå€ãããå¯èœæ§ããããŸãã ãããŠãç§ãã¡ã¯äžå¿«ãªç¶æ³ã«é¥ããããããŸããã
åãããšããå ±æããå Žåã¯ã30 åãã¹ãŠè¡ãããšãã§ããŸãã
ããŒãã«ã埩å ãããã¹ãŠãåé€ããŠãããããäžåºŠ XNUMX è¡ãæ¿å ¥ããŸãã
Postgres ã§ããç¥ãããŠãããæãŸããåäœã§ãããã XNUMX ã€ã®åäœã¯ãæŽæ°ãŸãã¯éžæãå®è¡ã§ããããšã§ãã ãããŠããããåæã«è¡ãããšãã§ããŸãã ãŸããéžæã¯æŽæ°ãšéæ¹åã®åãããšããããã¯ããŸããã ç§ãã¡ã¯èªè ã«ã©ã€ã¿ãŒããããã¯ããªãããã«èšããŸãããã©ã€ã¿ãŒã¯ãªãŒããŒããããã¯ããŸããã§ããã
ãã®äŸã瀺ããŸãã ä»ããéžæããŸãã 次㫠INSERT ãå®è¡ããŸãã ãããŠã-694 ã衚瀺ãããŸãããã®æ¿å ¥ãå®è¡ãããã©ã³ã¶ã¯ã·ã§ã³ã® ID ã衚瀺ãããŸãã ãããä»çµã¿ã§ãã
ãããŠä»ããã¯ãšã³ã ID ãèŠããšã695 ã«ãªã£ãŠããŸãã
ãããŠãããŒãã«ã« 695 ã衚瀺ãããŠããããšãããããŸãã
ãããŠãããããã®ããã«æŽæ°ãããšãå¥ã®ã±ãŒã¹ã衚瀺ãããŸãã ãã®å Žåã695 ã¯æä»ããã¯ã§ãããæŽæ°ãåãåäœãããŸããããããã®éã«ç«¶åã¯ãããŸãããããã¯éåžžã«çããããšã§ãã
ãããŠãäžçªäžã ShareLockãäžçªäžã ExclusiveLock ã§ããããšãããããŸãã ãããŠäž¡æ¹ã®ååŒã¯ããŸããããŸããã
ãããã©ã®ããã«ããŠèµ·ããã®ããç解ããã«ã¯ãMVCC ã§ã®ç§ã®è¬æŒãèãå¿ èŠããããŸãã ãã ããããã¯åæã«å®è¡ã§ãããã€ãŸã SELECT ãš UPDATE ãåæã«å®è¡ã§ããããšã瀺ãäŸã§ãã
ãªã»ããããŠããäžåºŠæäœããŠã¿ãŸãããã
åãè¡ã§ XNUMX ã€ã®æŽæ°ãåæã«å®è¡ããããšãããšããããã¯ãããŸãã ãªãŒããŒã¯ã©ã€ã¿ãŒããããã¯ãããã©ã€ã¿ãŒããªãŒããŒããããã¯ããªãããããã©ã€ã¿ãŒãå¥ã®ã©ã€ã¿ãŒããããã¯ãããšè¿°ã¹ãããšãæãåºããŠãã ããã ã€ãŸããXNUMX 人ãåãè¡ãåæã«æŽæ°ããããšã¯ã§ããŸããã ãããããçµäºãããŸã§åŸ ã€å¿ èŠããããŸãã
ããã説æããããã«ãLockdemo ããŒãã«ãèŠãŠã¿ãŸãããã ãã㊠698 ã€ã®è¡ãèŠãŠã¿ãŸãããã ãã©ã³ã¶ã¯ã·ã§ã³ããšã« XNUMXã
ããã2ã«æŽæ°ããŸããã 699ãæåã®ã¢ããããŒãã§ãã ãããŠãããã¯æåããããä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãªã£ãŠããŠãç§ãã¡ã確èªããããã£ã³ã»ã«ããã®ãåŸ ã£ãŠããŸãã
ããããå¥ã®ããšã«æ³šç®ããŠãã ããã2/51 ã¯ç§ãã¡ã®æåã®ãã©ã³ã¶ã¯ã·ã§ã³ãæåã®ã»ãã·ã§ã³ã§ãã 3/112 ã¯ããã®å€ã 3 ã«å€æŽãããå é ããã® 699 çªç®ã®ãªã¯ãšã¹ãã§ãããããŠãæ°ãä»ãã°ãå é ã®ãªã¯ãšã¹ãã¯ããèªäœ (3) ãããã¯ããŸããããããã112/699 ã¯ããã¯ãèš±å¯ããŸããã§ããã Lock_mode åã«ã¯ãäœãåŸ ã£ãŠãããã瀺ãããŸãã 699 ãæåŸ ããŠããŸãããããŠãXNUMX ãã©ãã«ããããèŠããšãããã¯ããã«é«ããªããŸãã ãããŠãæåã®ã»ãã·ã§ã³ã§ã¯äœãããŸããã? 圌女ã¯èªåã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ã«æä»çããã¯ãäœæããŸããã ãããPostgresã®ããæ¹ã§ãã èªèº«ã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ããããã¯ããŸãã ãŸãã誰ãã確èªãŸãã¯ãã£ã³ã»ã«ããã®ãåŸ ã¡ããå Žåã¯ãä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ãããéåŸ ã€å¿ èŠããããŸãã ã ãããããå¥åŠãªç·ãèŠããã®ã§ãã
ããäžåºŠèŠãŠã¿ãŸãããã å·ŠåŽã«åŠç ID ã衚瀺ãããŸãã 699 çªç®ã®åã«ã¯ä»®æ³ãã©ã³ã¶ã¯ã·ã§ã³ ID ã衚瀺ãããXNUMX çªç®ã®åã«ã¯ lock_type ã衚瀺ãããŸãã ããã¯ã©ãããæå³ã§ããïŒ æ¬è³ªçã«ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ID ããããã¯ããŠãããšããããšã§ãã ãã ããäžçªäžã®è¡ã¯ãã¹ãŠé¢ä¿ã瀺ããŠããããšã«æ³šæããŠãã ããã ãããã£ãŠãããŒãã«ã«ã¯ XNUMX çš®é¡ã®ããã¯ããããŸãã ãªã¬ãŒã·ã§ã³ããã¯ããããŸãã 次ã«ãtransactionid ã®ãããã¯ããããŸããããã§ã¯ãèªåã§ãããã¯ããŸããããã¯ãæåã®è¡ãŸãã¯äžçªäžã§ãtransactionid ãååšããå Žæã§ãXNUMX ãæäœãå®äºããã®ãåŸ ã€éšåã§ãŸãã«è¡ãããããšã§ãã
ããã§äœãèµ·ãããèŠãŠã¿ãŸãããã ãããŠããã§ã¯ XNUMX ã€ã®ããšãåæã«èµ·ãããŸãã æåã®è¡ã«ã¯ãããèªäœãããã¯ãããã©ã³ã¶ã¯ã·ã§ã³ ID ããã¯ã衚瀺ãããŠããŸãã ãããŠã圌女ã¯äººã ãåŸ ãããããã«èªåèªèº«ããããã¯ããŸãã
6è¡ç®ãèŠããšã699è¡ç®ãšåããšã³ããªã§ãã ãããã£ãŠããã©ã³ã¶ã¯ã·ã§ã³ 700 ã¯ãããã¯ãããŸãã 699ãã»ã«ãããã¯åŒã§ãã ãããŠãäžçªäžã®è¡ã§ã¯ãXNUMX ãæäœãå®äºããã®ãåŸ ã£ãŠããããšãããããŸãã
ãããŠãlock_type ã®ã¿ãã«ã«ã¯æ°åã衚瀺ãããŸãã
0/10ã§ããããšãããããŸãã ããã¯ããŒãžçªå·ã§ããããã®ç¹å®ã®è¡ã®ãªãã»ããã§ããããŸãã
ãããŠãæŽæ°ãããš 0/11 ã«ãªãããšãããããŸãã
ãã ãããã®æäœã«ã¯åŸ ã¡æéããããããå®éã«ã¯ 0/10 ã«ãªããŸãã ãããç§ã確èªããã®ãåŸ ã£ãŠããã·ãªãŒãºã§ããããšã確èªããæ©äŒããããŸãã
確èªããŠã³ããããæŒããæŽæ°ãå®äºãããšãåã³ãã®ãããªçµæãåŸãããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ 700 ãå¯äžã®ããã¯ã§ãããã³ããããããŠãããããä»ã®ããã¯ãåŸ ã¡ãŸããã ãã©ã³ã¶ã¯ã·ã§ã³ãå®äºããã®ãåŸ ã€ã ãã§ãã 699 ããªããªããšãããäœãåŸ ã€å¿ èŠã¯ãããŸããã ãããŠãã©ã³ã¶ã¯ã·ã§ã³ 700 ã¯ããã¹ãŠãæ£åžžã§ãããèš±å¯ãããŠãããã¹ãŠã®ããŒãã«ã«å¿ èŠãªãã¹ãŠã®ããã¯ãããããšã瀺ããŸãã
ãããŠããã®å šäœãããã«è€éã«ããããã«ãä»åºŠã¯éå±€ãæäŸããå¥ã®ãã¥ãŒãäœæããŸãã ããªãããã®èŠæ±ãç解ããŠããããšã¯æåŸ ããŠããŸããã ããããããã«ãããäœãèµ·ãã£ãŠããããããæ確ã«ææ¡ã§ããããã«ãªããŸãã
ããã¯ååž°çãªãã¥ãŒã§ãããå¥ã®ã»ã¯ã·ã§ã³ããããŸãã ãããŠããã¹ãŠãåã³ã²ãšã€ã«æ»ããŸãã ããã䜿ã£ãŠã¿ãŸãããã
3 ã€ã®åææŽæ°ãè¡ã£ãŠãè¡ã 4 ã«ãªã£ãå Žåã¯ã©ããªãã§ããããã ãããŠãXNUMXãXNUMXã«å€æŽããŸãã
ããã§ã¯ 4 ã衚瀺ãããŸãããã©ã³ã¶ã¯ã·ã§ã³ ID 㯠702 ã§ãã
ãããã 4 ã 5 ã«å€æŽããŸãããã㊠5 ã 6 ã«ã6 ã 7 ã«å€æŽããŸãããããŠããã® XNUMX ã€ã®ååŒãçµäºããã®ãåŸ ã£ãŠããäœäººãã®äººã ã䞊ã¹ãŸãã
ãããŠãã¹ãŠãæããã«ãªãã æåã®è¡ã¯äœã§ããïŒ ãã㯠702 ã§ããããã¯ãæåã«ãã®å€ãèšå®ãããã©ã³ã¶ã¯ã·ã§ã³ ID ã§ãã ä»äžæ¬ã«ã¯äœãæžãããŠããŸããïŒ è·¡ãã€ããŠãã f
ã ãããã¯ããã©ã³ã¶ã¯ã·ã§ã³ ID 5 ãçµäºããã®ãåŸ
ã£ãŠããããã(6ã7ã702) ãæ¿èªã§ããªãæŽæ°ã§ãã ããã«ã¯ãã©ã³ã¶ã¯ã·ã§ã³ ID ã®ãããã¯ããããŸãã ããã«ããã5 ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ããã¯ãçºçããŸãã
ãããŠã704 ãš 705 ãèŠããšããŸã äœãèµ·ãã£ãŠããã®ãããããªããããããã«ã¯ãŸã äœãæžãããŠããŸããã 圌ãã¯ãã äœãèµ·ãã£ãŠããã®ãåãããªããšã ãæžããŠããŸãã ãããŠã誰ããçµããã®ãåŸ ã£ãŠããã®ã§ããã å¯ãŠããŸããåãå€ããæ©äŒãããã°èµ·ããããŸãã
èŠãç®ã¯ãããªæãã§ãã 圌ãå šå¡ã12è¡ç®ãåŸ ã£ãŠããããšã¯æããã§ãã
ãããç§ãã¡ãããã§èŠããã®ã§ãã ãã¡ãã¯0/12ã§ãã
æåã®ãã©ã³ã¶ã¯ã·ã§ã³ãæ¿èªããããšãããã§éå±€ãã©ã®ããã«æ©èœãããã確èªã§ããŸãã ãããŠä»ããã¹ãŠãæããã«ãªããŸãã ãããã¯ãã¹ãŠãââããã«ãªããŸãã ãããŠåœŒãã¯å®éã«ãŸã åŸ ã£ãŠããŸãã
ããã§äœãèµ·ãã£ãŠããã®ãã説æããŸãã 702 ã³ãããã ãããŠã703 ããã®è¡ããã¯ãååŸãã704 㯠703 ãã³ãããããã®ãåŸ ã¡å§ããŸãã ãããŠ705ããããåŸ ã£ãŠããŸãã ãããŠãããããã¹ãŠãå®äºãããšã圌ãã¯èªåèªèº«ããããã«ããŸãã ãããŠãçããã䞊ãã§ããããšãææããããšæããŸãã ããã¯ãæžæ»ã§èª°ããæåã®è»ãåŸ ã£ãŠããç¶æ³ãšéåžžã«ãã䌌ãŠããŸãã å é ã®è»äž¡ãæ¢ãŸããå šå¡ãé·èã®åã«äžŠã³ãŸãã ãã®åŸãè»ãåãã次ã®è»ãåé²ããŠãããã¯ãååŸããããšãã§ããŸãã
ãããååã«è€éã§ã¯ãªããšæãããå Žåã¯ã次ã«ãããããã¯ã«ã€ããŠèª¬æããŸãã çããã®ãã¡èª°ã圌ãã«ééããã®ãåãããŸããã ããã¯ããŒã¿ããŒã¹ ã·ã¹ãã ã§ã¯ããããåé¡ã§ãã ãããããããããã¯ãšã¯ãããã»ãã·ã§ã³ãå¥ã®ã»ãã·ã§ã³ãäœããè¡ãã®ãåŸ ã£ãŠãããšãã®ããšã§ãã ãããŠãã®æç¹ã§ã¯ãå¥ã®ã»ãã·ã§ã³ãæåã®ã»ãã·ã§ã³ãäœããè¡ãã®ãåŸ ã£ãŠããŸãã
ãããŠãããšãã°ãã€ã¯ã³ããäœãã¡ããã ãããšèšããšãç§ã¯ãããããããªããäœãä»ã®ãã®ããããå Žåã«ã®ã¿ãããªãã«ãããŸããããšèšããŸããã ãããšåœŒã¯ããããããããªãããããªããã°ããããŸããããšèšããŸããã ãããŠè¡ãè©°ãŸãã®ç¶æ³ã«é¥ã£ãŠããŸããŸãã ã€ã¯ã³ã¯ãããªããšã¯ããªããšæããŸãããäœããæã«å ¥ããããšæã£ãŠããäºäººã®äººãããŠãçžæã欲ãããã®ãããããŸã§ã¯ãããæž¡ãæºåãã§ããŠããªããšããæå³ã¯ç解ããŠããã ããã§ããããã ãããŠè§£æ±ºçã¯ãããŸããã
ãããŠåºæ¬çã«ãããŒã¿ããŒã¹ã¯ãããæ€åºããå¿ èŠããããŸãã ãããŠãã»ãã·ã§ã³ã® XNUMX ã€ãåé€ãããéããå¿ èŠããããŸããããããªããšãã»ãã·ã§ã³ãæ°žä¹ ã«æ®ã£ãŠããŸããŸãã ãããŠããã¯ããŒã¿ããŒã¹ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«ãèŠãããŸãã ãããŠã䞊åããã»ã¹ããããã¹ãŠã®å Žæã§ããããçºçããå¯èœæ§ããããŸãã
次ã«ã50 ã€ã®ãããããã¯ãã€ã³ã¹ããŒã«ããŸãã 80 ãš 50 ãå ¥åããŸããæåã®è¡ã§ã¯ã50 ãã 710 ã«æŽæ°ããŸãããã©ã³ã¶ã¯ã·ã§ã³çªå· XNUMX ãååŸããŸãã
ãããŠã80ã81ã«ã50ã51ã«å€æŽããŸãã
ãããŠãããã¯æ¬¡ã®ããã«ãªããŸãã ãããã£ãŠã710 ã«ã¯ãããã¯ãããè¡ãããã711 ã¯ç¢ºèªãåŸ ã£ãŠããŸãã æŽæ°ãããšãã«ãããèŠãããŸããã 710 ã¯ç§ãã¡ã®ã·ãªãŒãºã®ãªãŒããŒã§ãã ãããŠã711 㯠710 ããã©ã³ã¶ã¯ã·ã§ã³ãå®äºããã®ãåŸ ã¡ãŸãã
ããã«ãã©ã®è¡ã§ãããããã¯ãçºçãããã衚瀺ãããŸãã ãããŠãããããå¥åŠã«ãªãå§ããŸãã
çŸåšã80ãã80ãŸã§æŽæ°äžã§ãã
ãããŠããããè¡ãè©°ãŸããå§ãŸããŸãã 710 㯠711 ããã®å¿çãåŸ ã¡ã711 㯠710 ãåŸ ã¡ãŸãããããŠãããã¯ããŸãçµãããŸããã ãããŠãããããæãåºãæ¹æ³ã¯ãããŸããã ãããŠã圌ãã¯ãäºãããã®åå¿ãæåŸ ããã§ãããã
ãããŠããã¯ãã¹ãŠãé ããå§ããã ãã§ãã ãããŠç§ãã¡ã¯ãããæãã§ããŸããã
Postgres ã«ã¯ããããçºçãããšãã«ãããèªèããæ¹æ³ããããŸãã ãããèµ·ãããšããã®ãšã©ãŒãçºçããŸãã ãã®ããšãããããããã®ããã»ã¹ãå¥ã®ããã»ã¹ããã® SHARE LOCK ãåŸ ã£ãŠãããã€ãŸã 711 ããã»ã¹ã«ãã£ãŠãããã¯ãããŠããããšãæããã§ãã ãããŠããã®ããã»ã¹ã¯ãããããã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ã«å¯Ÿã㊠SHARE LOCK ãäžããããã®ãåŸ ã£ãŠããŸãããããã®ããã»ã¹ã«ãã£ãŠãããã¯ãããŸããã ãããã£ãŠãããã§è¡ãè©°ãŸãã®ç¶æ³ãçºçããŸãã
äžæ¹åã®ãããããã¯ã¯ãããŸãã? åºæ¥ãŸããïŒ ã¯ãã
ãããã®æ°å€ãããŒãã«ã«å ¥åããŸãã 40ã40ã«å€æŽãããããã¯ããŸãã
60ã61ã«ã80ã81ã«å€æŽããŸãã
ãããŠ80ãå€ããŠããŒã³ïŒ
ãããŠã714çªã¯çŸåš715çªãåŸ ã£ãŠããŸãã716çªã¯715çªãåŸ ã£ãŠããŸãã ãããŠããã«ã€ããŠã¯äœãã§ããŸããã
ããã«ã¯ããäºäººã§ã¯ãªãããã§ã«äžäººãããŸãã ç§ã¯ããªãããäœãã欲ããããã®äººã¯ç¬¬äžè ããäœããæãã§ããããããŠç¬¬äžè ã¯ç§ããäœããæãã§ããŸãã ãããŠãç§ãã¡ã¯çãçžæãããã¹ãããšãå®äºããã®ãåŸ ã£ãŠãããããçµå±ã¯äžæ¹åŸ ã¡ç¶æ ã«ãªã£ãŠããŸããŸãã
ãããŠãPostgres ã¯ãããã©ã®è¡ã§çºçããããç¥ã£ãŠããŸãã ãããŠã次ã®ãããªã¡ãã»ãŒãžã衚瀺ãããŸããããã¯ã20 ã€ã®å ¥åãäºãã«ãããã¯ããŠãããšããåé¡ãããããšã瀺ããŠããŸãã ãããŠãããã«ã¯å¶éã¯ãããŸããã ããã¯ãXNUMX åã®ãšã³ããªãäºãã«ãããã¯ããŠããå Žåã«çºçããå¯èœæ§ããããŸãã
次ã®åé¡ã¯ã·ãªã¢ã«åå¯èœã§ãã
ç¹å¥ãªã·ãªã¢ã«åå¯èœãªããã¯ã®å Žåã
ãããŠã719 ã«æ»ããŸãããã®åºåã¯ãŸã£ããæ£åžžã§ãã
ã¯ãªãã¯ãããšããã©ã³ã¶ã¯ã·ã§ã³ãã·ãªã¢ã«åå¯èœã«ããããšãã§ããŸãã
ãããŠãçŸåšã¯å¥ã®çš®é¡ã® SA ããã¯ãããããšã«æ°ä»ããŸããããã¯ã·ãªã¢ã«åå¯èœã§ããããšãæå³ããŸãã
ããã§ãSARieadLock ãšåŒã°ããæ°ããã¿ã€ãã®ããã¯ãç»å ŽããŸãããããã¯ã·ãªã¢ã« ããã¯ã§ãããã·ãªã¢ã«ãå ¥åã§ããŸãã
ãŸããäžæã®ã€ã³ããã¯ã¹ãæ¿å ¥ããããšãã§ããŸãã
ãã®ããŒãã«ã«ã¯äžæã®ã€ã³ããã¯ã¹ããããŸãã
ããã«æ°åã® 2 ãå ¥åãããšã2 ã«ãªããŸããããããäžçªäžã«å¥ã® 2 ãå ¥åããŸãã721 ã«ã¯æä»çããã¯ãããããšãããããŸãã ãããã722 ã«äœãèµ·ããããããããŸã§ 721 ãæ¿å ¥ã§ããªãããã2 㯠721 ãæäœãå®äºããã®ãåŸ ã£ãŠããŸãã
ãããŠãµããã©ã³ã¶ã¯ã·ã§ã³ãè¡ãå Žåã
ããã«ã¯ 723 ããããŸãã
ãããŠããã€ã³ããä¿åããŠæŽæ°ãããšãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ ID ãååŸãããŸãã ããã泚æãå¿ èŠãªè¡åãã¿ãŒã³ã§ãã ãããè¿ããšããã©ã³ã¶ã¯ã·ã§ã³ ID ã¯åé€ãããŸãã 724ã¯åºçºããŸãã ãããä»ã§ã¯725人ã«ãªããŸããã
ããã§ãç§ã¯ããã§äœãããããšããŠããã®ã§ããããïŒ ç§ã¯ãããªããèŠã€ããå¯èœæ§ã®ããçããããã¯ã®äŸã瀺ããããšæã£ãŠããŸãããããã·ãªã¢ã«åå¯èœãªããã¯ã§ãããSAVEPOINT ã§ããããããã¯ãã㯠ããŒãã«ã«è¡šç€ºãããããŸããŸãªã¿ã€ãã®ããã¯ã§ãã
ããã¯ãpg_advisory_lock ãæã€æ瀺ç (æ瀺ç) ããã¯ã®äœæã§ãã
ãããŠããããã¯ã®çš®é¡ãå§åãšããŠãªã¹ããããŠããããšãããããŸãã ãããŠãããã«ã¯èµ€åã§ãå§åããšæžãããŠããŸãã ãŸããpg_advisory_unlock ã䜿çšãããšããã®ããã«åæã«ãããã¯ã§ããŸãã
æåŸã«ãããäžã€é©ãã¹ãããšã玹ä»ããããšæããŸãã å¥ã®ãã¥ãŒãäœæããŸãã ãã ããpg_locks ããŒãã«ã pg_stat_activity ããŒãã«ãšçµåããŸãã ãããŠããªãç§ã¯ãããããããã®ã§ããïŒ ããã«ãããçŸåšã®ãã¹ãŠã®ã»ãã·ã§ã³ã調ã¹ãŠãããããåŸ ã£ãŠããããã¯ã®çš®é¡ãæ£ç¢ºã«ç¢ºèªã§ããããã§ãã ãã㯠ããŒãã«ãšã¯ãšãª ããŒãã«ãçµã¿åããããšãããã¯éåžžã«èå³æ·±ãããšã«ãªããŸãã
ãããŠãã㧠pg_stat_view ãäœæããŸãã
ãããŠè¡ã 724 ã€ãã€æŽæ°ããŸãã ãããŠãããã§ã¯ XNUMX ã衚瀺ãããŸãããããŠãè¡ã XNUMX ã«æŽæ°ããŸãã ãããŠä»ããã§äœãèŠããŸããïŒ ãããã¯ãªã¯ãšã¹ãã§ããã€ãŸããå·ŠåŽã®åã«ãªã¹ããããŠãããªã¯ãšã¹ãã®ãªã¹ãå šäœã衚瀺ãããŸãã ãããŠå³åŽã«ã¯ãè©°ãŸããšãããçã¿åºããã®ãèŠãããšãã§ããŸãã ãŸããæ¯ååã»ãã·ã§ã³ã«æ»ã£ãŠåå ããå¿ èŠããããã©ããã確èªããå¿ èŠããªããªããããããæ確ã«ãªããŸãã 圌ãã¯ç§ãã¡ã®ããã«ãã£ãŠãããŸãã
éåžžã«äŸ¿å©ãªãã XNUMX ã€ã®æ©èœã¯ã pg_blocking_pids
ã ãããã圌女ã®ããšãèããããšããªãã§ãããã 圌女ã¯äœããã£ãŠããïŒ ããã«ããããã®ã»ãã·ã§ã³ 11740 ã§ã©ã®ãããªç¹å®ã®ããã»ã¹ ID ãåŸ
ã£ãŠããããç¥ãããšãã§ããŸãã ãããŠã11740 ã 724 ãåŸ
ã£ãŠããããšãããããŸãããã㊠724 ãäžçªäžã«ãããŸãã 11306 ã¯ããã»ã¹ ID ã§ãã åºæ¬çã«ããã®é¢æ°ã¯ãã㯠ããŒãã«ãééããŸãã å°ãè€éã ãšã¯æããŸããããªããšãç解ããŠããã ããã§ããããã åºæ¬çã«ããã®é¢æ°ã¯ãã®ãã㯠ããŒãã«ã調ã¹ãŠããã®ããã»ã¹ ID ã«åŸ
æ©äžã®ããã¯ãäžããããŠããå ŽæãèŠã€ããããšããŸãã ãŸããããã¯ãåŸ
ã£ãŠããããã»ã¹ãã©ã®ããã»ã¹ ID ãæã£ãŠããããææ¡ããããšããŸãã ãããã£ãŠããã®é¢æ°ãå®è¡ã§ããŸã pg_blocking_pids
.
ãããŠãããã¯éåžžã«äŸ¿å©ã§ãã ããã¯ããŒãžã§ã³ 9.6 ã§è¿œå ãããã°ãããªã®ã§ããŸã 5 幎ããçµã£ãŠããŸããããéåžžã«äŸ¿å©ã§ãã XNUMX çªç®ã®ãªã¯ãšã¹ãã«ãåãããšãåœãŠã¯ãŸããŸãã ããã¯ãŸãã«ç§ãã¡ãèŠãã¹ããã®ã瀺ããŠããŸãã
ãããç§ãããªãã«è©±ãããã£ãããšã§ãã ãããŠäºæ³éããã¹ã©ã€ããå€ãã£ãã®ã§æéã䜿ãæãããŸããã ã¹ã©ã€ãã¯ããŠã³ããŒãå¯èœã§ãã ããã«æ¥ãŠããã ãããããšãããããŸãã æ®ãã®ã«ã³ãã¡ã¬ã³ã¹ãã楜ãã¿ããã ãããšæããŸããããããšãããããŸããã
質åïŒ
ããšãã°ãè¡ãæŽæ°ããããšããŠããŠãXNUMX çªç®ã®ã»ãã·ã§ã³ã§ããŒãã«å šäœãåé€ããããšããŠãããšããŸãã ç§ãç解ããŠããéããã€ã³ãã³ãããã¯ã®ãããªãã®ãååšããã¯ãã§ãã Postgresã«ã¯ãã®ãããªãã®ã¯ãããŸããïŒ
äžçªæåã«æ»ã£ãŠã¿ãŸãããã äœããè¡ããšããããšãã° SELECT ãå®è¡ãããšããAccessShareLock ãçºè¡ãããããšãèŠããŠãããããããŸããã ããã«ãããããŒãã«ã®èœäžãé²ãããšãã§ããŸãã ãããã£ãŠãããšãã°ãããŒãã«å ã®è¡ãæŽæ°ããããè¡ãåé€ãããããå Žåããã® AccessShareLock ãããŒãã«å šäœãšè¡ã«å¯ŸããŠä¿æããŠããããã誰ããåæã«ããŒãã«å šäœãåé€ããããšã¯ã§ããŸããã ãããŠãå®äºãããåé€ã§ããŸãã ããããããªããããã§äœããçŽæ¥å€æŽããŠãã圌ãã¯ãããè¡ãããšãã§ããŸããã
ããäžåºŠãããŸãããã åé€ã®äŸã«ç§»ããŸãããã ãããŠãããŒãã«å šäœã®äžã®è¡ã«æä»ããã¯ãããã£ãŠããããšãããããŸãã
ããã ãšããã¯æä»çã«èŠããŸãããïŒ
ã¯ãããã®ããã§ãã ããªãã話ããŠããããšã¯ç解ã§ããŸãã SELECT ãå®è¡ãããš ShareExclusive ããããããã Row Exclusive ã«ãããšèšãã®ã§ãããããã¯åé¡ã«ãªããŸãã? ããããé©ãã¹ãããšã«ããã¯åé¡ã«ãªããŸããã ããã¯ããã¯ã®åºŠåããäžããŠããããã«èŠããŸãããæ¬è³ªçã«ã¯åé€ãé²ãããã¯ãæã£ãŠããŸãã ãããŠä»ããã®ããã¯ããã匷åã«ããŠããåé€ã¯äŸç¶ãšããŠé²æ¢ãããŸãã ã ããäžããããã§ã¯ãªããã§ãã ã€ãŸããã¬ãã«ãäœããšãããã®åé¡ãçºçããã®ãé²ãããšãã§ããã®ã§ãã¬ãã«ãäžããŠãããŒãã«ãåé€ãããã®ãé²ãããšãã§ããŸãã
ããªãã話ããŠããããšã¯ç解ã§ããŸãã ããã«ã¯ããã匷åãªããã¯ãå°å ¥ããããã« XNUMX ã€ã®ããã¯ãæŸæ£ããããšãããã㯠ãšã¹ã«ã¬ãŒã·ã§ã³ã®ã±ãŒã¹ã¯ãããŸããã ããã§ã¯ããã®é²æ¢ãå šäœçã«åŒ·åããã ããªã®ã§ã競åã¯çºçããŸããã ããããããã¯è¯ã質åã§ãã ã質åããã ããŸããŠèª ã«ããããšãããããŸãïŒ
å€æ°ã®ã»ãã·ã§ã³ãå€æ°ã®ãŠãŒã¶ãŒãããå Žåã«ãããããã¯ç¶æ³ãåé¿ããã«ã¯ã©ãããã°ããã§ãããã?
Postgres ã¯ãããããã¯ç¶æ³ãèªåçã«èªèããŸãã ãŸããã»ãã·ã§ã³ã® 1 ã€ãèªåçã«åé€ãããŸãã ãããããããã³ã°ãåé¿ããå¯äžã®æ¹æ³ã¯ãåãé åºã§äººã ããããã¯ããããšã§ãã ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ãèŠããšãå€ãã®å Žåããããããã¯ã®åå ãããããŸã... 2 ã€ã®ç°ãªããã®ããããã¯ããããšæ³åããŠã¿ãŸãããã 1 ã€ã®ã¢ããªã±ãŒã·ã§ã³ãããŒãã« 80 ãããã¯ããå¥ã®ã¢ããªã±ãŒã·ã§ã³ãããŒãã« XNUMX ãããã¯ãã次ã«ããŒãã« XNUMX ãããã¯ããŸãããããããã¯ãåé¿ããæãç°¡åãªæ¹æ³ã¯ãã¢ããªã±ãŒã·ã§ã³ã調ã¹ãŠããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§ããã¯ãåãé åºã§çºçããããšã確èªããããšã§ãã ãããã®ã¢ããªã±ãŒã·ã§ã³ã¯ããŸããŸãªäººã ãäœæãããããããã«ããéåžžãåé¡ã® XNUMX% ã解æ¶ãããŸãã åãé åºã§ãããã¯ããã°ããããããã¯ç¶æ³ã¯çºçããŸããã
ãåºæŒèª ã«ããããšãããããŸããïŒ ããã¥ãŒã ãã«ã«ã€ããŠè©±ããŸããããç§ã®ç解ãæ£ãããã°ãããã¥ãŒã ãã«ã¯å¥ã®ã¹ãã¬ãŒãžå ã®ã¬ã³ãŒãã®é åºãæªãããããçŸåšã®ã¬ã³ãŒãã¯å€æŽãããã«ç¶æãããŸãã ããã¥ãŒã ãã«ãæä»çããã¯ã¢ã¯ã»ã¹ãå¿ èŠãšããã®ã¯ãªãã§ãã?ãŸããæžã蟌ã¿æäœãšç«¶åããã®ã¯ãªãã§ãã?
ããã¯è¯ã質åã§ãã ãã®çç±ã¯ãç空ããã£ã±ãã«ãªããšããŒãã«ãå é ãããŠããŸãããã§ãã ãããŠãåºæ¬çã«ããŒãã«ã®æ°ããããŒãžã§ã³ãäœæããŠããŸãã ãããŠããŒãã«ãæ°ãããªããŸãã ããã¯ããŒãã«ã®å®å
šã«æ°ããããŒãžã§ã³ã«ãªãããšãããããŸããã ãããŠåé¡ã¯ããããè¡ããšããæ°ããããŒãã«ãèŠãŠãããå¿
èŠãããããã人ã
ã«ãããèªãã§ã»ãããªããšããããšã§ãã ãããŠãããã¯åã®è³ªåã«ã€ãªãããŸãã åæã«èªãããšãã§ãããšããŠããããŒãã«ã移åããŠäººã
ãæ°ããããŒãã«ã«èªå°ããããšã¯ã§ããŸããã å
šå¡ããã®ããŒãã«ã®èªã¿åããå®äºãããŸã§åŸ
ã€å¿
èŠããããããæ¬è³ªçã«ã¯ããã¯æä»çãªç¶æ³ã«ãªããŸãã
æåããããã¯ãããšèšãã®ã¯ãæåŸã«å
šå¡ãæ°ããã³ããŒã«ç§»åããããã«æä»çããã¯ãå¿
èŠã«ãªãããšãããã£ãŠããããã§ãã ãããã£ãŠãããã解決ã§ããå¯èœæ§ããããŸãã ãããŠããã®æ¹æ³ã§åæã€ã³ããã¯ã¹äœæãè¡ããŸãã ãããããããè¡ãã®ã¯ã¯ããã«å°é£ã§ãã ãããŠãããã¯æä»çããã¯ã«é¢ããåã®è³ªåã«éåžžã«é¢é£ããŠããŸãã
Postgresã«ããã¯ã¿ã€ã ã¢ãŠããè¿œå ããããšã¯ã§ããŸãã? ããšãã°ãOracle ã§ã¯ããæŽæ°ãéžæããšèšè¿°ããæŽæ°ããåã« 50 ç§åŸ ã€ããšãã§ããŸãã å¿çšãšããŠã¯è¯ãã£ãã§ãã ããããPostgres ã§ã¯ããŸã£ããåŸ ããã«ããã«å®è¡ãããããã°ããåŸ ã€å¿ èŠããããŸãã
ã¯ããããã¯ããšã«ã¿ã€ã ã¢ãŠããéžæã§ããŸãã no way ã³ãã³ããçºè¡ããããšãã§ããŸããããã«ããã¯ãååŸã§ããªãå Žåã¯ã次ã®ããã«ãªããŸãã ãããã£ãŠããã㯠ã¿ã€ã ã¢ãŠããããããå¯èœã«ããä»ã®æ段ã®ãããããå¿ èŠã§ãã ããã¯æ§æã¬ãã«ã§ã¯è¡ãããŸããã ããã¯ãµãŒããŒäžã®å€æ°ãšããŠè¡ãããŸãã ããã䜿ããªãå ŽåããããŸãã
ã¹ã©ã€ã 75 ãéããŠããã ããŸãã?
ã¯ãã
ãããŠç§ã®è³ªåã¯æ¬¡ã®ãšããã§ãã äž¡æ¹ã®æŽæ°ããã»ã¹ã 703 ãæåŸ ããŠããã®ã¯ãªãã§ãã?
ãããŠãããã¯çŽ æŽããã質åã§ãã ã¡ãªã¿ã«ãPostgres ããªããã®ãããªããšãããã®ãã¯ããããŸããã ãããã703 ãäœæããããšãã702 ãæåŸ ãããŠããŸããããã㊠704 ãš 705 ãçŸãããšããããã«ã¯ãŸã äœããªããããäœãæåŸ ããŠããã®ãããããªãããã§ãã ãããŠãPostgres ã¯ãã®æ¹æ³ã§ãããè¡ããŸããããã¯ãååŸã§ããªãå ŽåããããªããåŠçããããšã«äœã®æå³ãããã®?ããšæžããŸãããªããªããããªãã¯ãã§ã«èª°ããåŸ ã£ãŠããããã§ãã ãããã£ãŠããã®ãŸãŸæŸçœ®ããŠãããšããŸã£ããæŽæ°ãããŸããã ããããããã§äœãèµ·ãã£ãã®ã§ããããïŒ 702 ãããã»ã¹ãå®äºãã703 ãããã¯ãåãåããšããã«ãã·ã¹ãã ã¯æ»ããŸããã ãããŠåœŒå¥³ã¯ãä»äºäººãåŸ ã£ãŠãããšèšããŸããã ãããŠãäžç·ã«æŽæ°ããŸãããã ãããŠãäž¡æ¹ãæåŸ ããŠããããšã瀺ããŸãããã
Postgres ããªããããè¡ãã®ãã¯ããããŸããã ããããfâŠãšããåé¡ããããŸãã ããã¯ãã·ã¢èªã§ã¯ãªãããã§ãã ããã¯ãåãåŸ ã£ãŠããåœå±ã 20 人ãããšããŠããå šå¡ã 703 ã€ã®åãåŸ ã£ãŠããå Žåã§ãã ãããŠçªç¶å šå¡ãåæã«ç®èŠããŸãã ãããŠèª°ããåå¿ããããšãå§ããŸãã ããããã·ã¹ãã ã§ã¯ãå šå¡ã 707 ãåŸ ã£ãŠããããã«èšå®ãããŠããŸãããªããªããå šå¡ãåŸ ã£ãŠããããã§ããããã«å šå¡ã䞊ã¹ãŸãã ãã®åŸã«çæãããä»ã®æ°ãããªã¯ãšã¹ã (ããšãã° XNUMX) ã衚瀺ããããšãåã³ç©ºã«ãªããŸãã
ãããŠãããã¯ããã®æ®µéã§ã¯ 702 ã 703 ãåŸ ã£ãŠããããã®åŸã«æ¥ã人ã¯ãã¹ãŠãã®ãã£ãŒã«ãã«ãšã³ããªãŒã§ããªããšèšããããã«ããããã«è¡ãããŠããããã«æããŸãã ãã ããæåã®ãŠã§ã€ã¿ãŒãå»ããšããã«ãæŽæ°åã«ãã®æç¹ã§åŸ ã£ãŠãããã¹ãŠã®äººãåãããŒã¯ã³ãåãåããŸãã ããã§ãããããã¡ããšé çªã«åŠçã§ããããã«ããããã«ãããªã£ãŠããã®ã ãšæããŸãã
ç§ã¯ãã€ããããããªãå¥åŠãªçŸè±¡ã ãšèããŠããŸããã ããšãã°ãããã§ã¯ãããããŸã£ãããªã¹ãããŠããªãããã§ãã ããããç§ãã¡ãæ°ããéµãäžãããã³ã«ãåŸ ã£ãŠãããã¹ãŠã®äººã«ç®ãåããŠããããã«æããŸãã 次ã«ããããããã¹ãŠäžŠã¹ãŸãã ãããŠãæ°ããå ¥ã£ãŠãã人ã¯ã次ã®äººãåŠçãçµãããšãã«ã®ã¿ãã¥ãŒã«å ¥ããããŸãã ãšãŠãè¯ã質åã§ãã ã質åããã ããŸããŠèª ã«ããããšãããããŸãïŒ
705 ã 704 ãæåŸ ããæ¹ãã¯ããã«è«ççã§ããããã«ç§ã«ã¯æããŸãã
ããããããã§ã®åé¡ã¯æ¬¡ã®ç¹ã§ãã æè¡çã«ã¯ãã©ã¡ããäžæ¹ãèµ·åããããšãã§ããŸãã ãããŠãç§ãã¡ã¯ã©ã¡ããäžæ¹ãç®èŠããããã§ãããã ããããã·ã¹ãã å ã§ã¯äœãèµ·ãã£ãŠããã®ã§ãããã? äžçªäžã® 703 ãèªåã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ããããã¯ããŠããããšãããããŸãã ããã Postgres ã®ä»çµã¿ã§ãã ãŸãã703 ã¯ç¬èªã®ãã©ã³ã¶ã¯ã·ã§ã³ ID ã«ãã£ãŠãããã¯ãããŠããããã誰ããåŸ ã¡ããå Žå㯠703 ãåŸ ã€ããšã«ãªããŸãããããŠãæ¬è³ªçã« 703 ã¯å®äºããŸãã ãããŠããã®å®äºåŸã«ã®ã¿ãããã»ã¹ã® XNUMX ã€ãç®èŠããŸãã ãããŠããã®ããã»ã¹ãå ·äœçã«ã©ã®ãããªãã®ã«ãªãã®ãã¯ããããŸããã ãã®åŸããã¹ãŠãåŸã ã«åŠçããŠãããŸãã ãã ãããããã®ããã»ã¹ã®ããããã§ããå¯èœæ§ããããããã©ã®ããã»ã¹ãæåã«èµ·åããããã¯æããã§ã¯ãããŸããã åºæ¬çã«ããããã®ããã»ã¹ã®ãããããèµ·åã§ããããã«ããã¹ã±ãžã¥ãŒã©ãŒããããŸããã ã©ã³ãã ã« XNUMX ã€ãéžæããã ãã§ãã ãããã£ãŠãã©ã¡ãããç®èŠããããããšãã§ãããããäž¡æ¹ã«æ³šç®ããå¿ èŠããããŸãã
ãããŠåé¡ã¯ãCP-infinityãããããšã§ãã ãããã£ãŠãé ãæ¹ãç®èŠããããããšãã§ããå¯èœæ§ãéåžžã«é«ãã§ãã ãããŠãããšãã°ãåŸã®äººãç®èŠããããå Žåããããã¯ãåãåã£ãã°ããã®äººãåŸ ã€ããšã«ãªããããæ£ç¢ºã«èª°ãæåã«ç®èŠãããã¯æ±ºå®ããŸããã ç§ãã¡ããã®ãããªç¶æ³ãäœãåºãã ãã§ãã·ã¹ãã ã¯ã©ã³ãã ãªé åºã§åœŒããç®èŠããããŸãã
ãã
åºæïŒ habr.com