â»ã¬ãã¼ãé ããã¦ãã¿ã¾ããï¼
isucon12ããã¼ã ããã«ãã«ã¢ã«ãã«ãã¨ãã¦åæ¬æ¦ã«åºå ´ãFailã§çµäºãã¦ãã¾ããï¼æ®å¿µï¼
ãã¼ã ã¡ã³ãã¼ã®ããã°ãããã¾ãã®ã§æ¯éãåç §ãã ããã¾ãã techblog.tver.co.jp
ãã¼ã
ISU CONQUESTã¨ããã½ã·ã£ã²ã¢ããªã±ã¼ã·ã§ã³ã®ãã¥ã¼ãã³ã°ã§ããã ãã§ã«å ¬å¼ãã 解説è¨äºãåºã¦ããã®ã§ãã¡ããè¦ã¦ããã ããã¨ããããããã¨æãã¾ãã
éå§æ©ã ãµã¼ããï¼å°ãããã¨ãå¤æããããã¯åæ£ããã¼ã«ãªãããã ãªï¼ã¨ããæ³åãã¤ãã¾ããã1
èªåã®ãã£ããã¨
åºç¤ã¯ãã¤ãã©ãã足åãç³»ã¨ãã¢ãã¿ãªã³ã°ç³»ã®æºåã
ã¾ãäºé¸ã§ã¯è¤æ°ãããã¤ã¹ã¯ãªããããã¾ãã¡ã ã£ãã®ã§ããããä»åäºåã«ç¨æãã¦ããã¦ã·ã¥ãã¨è¤æ°ãµã¼ãã«ãããã¤åºæ¥ãããã«ãã¦ãããã®ã¯è¯ããã¤ã³ãã§ããã
ãã¨alpã®regexéè¨ã便å©ããã¦ãalp便å©ããã¨ãã£ã¨è¨ã£ã¦ã¾ããï½
ãã¨ã¯ãã°è¦ãªããã²ããããã¥ã¼ãã³ã°ãã¾ããã
- user_present_all_received_historyã«index追å
- user_presentsã«index追å
- interpolateParamsè¨å®
- DBã³ãã¯ã·ã§ã³ãã¼ãªã³ã°
- user_one_time_tokensã«index追å
- checkViewerIDãã¦ãã¨ãåé¤
- versionããªã³ã¡ã¢ãªãã£ãã·ã¥ï¼ãµã¼ãéåæåãããã«( ããããã°ã£ã¦ã ><
- login_bonus_reward_masters ã«index追å
- gachaããªã³ã¡ã¢ãªãã£ãã·ã¥ï¼ãµã¼ãéåæåãããã«
- initã並åå¦çå
- nginx / mysqlãã¥ã¼ãã³ã°
- redis / mysqlãå¥ãµã¼ãã«
ä¸ç¤ãçµç¤ã«ããã¦DBãã©ãåæ£ãããã®æ¤è¨ã«ã¤ãã¦
ä¸ç¤éãã辺ãããDBã©ãã«ãããã¨ãªãã¨æã£ã¦ãã¦ã¼ã¶IDãªãæ°´å¹³åæ£ã§ããã®ã§ã¯ï¼ãã¨èãã¾ããã
å®éã«æ°å¤IDããã·ã£ã¼ãã£ã³ã°ããå®è£
ããããã¨ããããããããªã«å·¥æ°ãããã«è¡ããããï¼ã¨è¸ãã§ã¾ããã
ããããã¨ããã¯ã¨ãªã確èªããã¨ãããINå¥ã§ã¦ã¼ã¶ID使ã£ã¦ãã¿ããã ããå³ãããâ¦ãã¨è«¦ãã¦ãã¾ãã¾ããã
ãã ãã競æçµäºå¾ã«ææããã¦ããããè¦ã¦ã¿ãããããå®å
¨ã«åéãã§ãæ®éã«åæ£ã§ãããã¨ãçºè¦ ð
ããããã¨ãããå«ãã¦isuconã§ããâ¦ï¼
Failãã¦ãªãã¨ãã®æçµã¹ã³ã¢
10ä¸å¼±ãããã ã£ãæ°ããã¾ãã
Failããªãã£ãã¨ãã¦ãå
¥è³ã¾ã§ç¨é ãã®ã§ãã£ã¨ç²¾é²ãã¾ãï¼ï¼
延é·ç·
éå¶æ§ã®ãåæã§ï¼é±éã»ã©å»¶é·ç·åºæ¥ããã¨ã«ãªããã¡ã³ãã¼ã§æéã®ããæã«ã¡ããã¡ãã延é·ç·ãã¦ã¾ãã 2
以ä¸èªåã追å ã§ãã£ã¦ããã¨ã§ãã
- MySQL REDO off
- redisãµã¼ãã®å ´æã調æ´
- select * ãã
- è¤æ°selectãã¾ã¨ãããã
- user_deviceä½ããªã
- sync.onceã§ç¡é§å¦çããªãããã«
- redisãpipelineã§ä¸¦åå
- ã¤ã³ãã©ã»ããã«ã¦ã§ã¢ãã¥ã¼ãã³ã°è«¸ã
- N+1æ½°ã
- item_typeæ¯ã«ãã¾ã¨ããã¦å¦çããããã«
ããã¦å»¶é·ç·ã®æçµãã¼ã çµæã¨ãã¦ã¯ãããªæãã§ãããã¾ããã
score: 423541
ãç²ããã¾ã§ããï¼
次åã«åãã¦
ä»åFailã ã£ãã®ã¯æ®å¿µã§ãããèªåã¯ãããããå
¥è³ã«å±ãã¾ã§ã®ã¹ã³ã¢ãåºããªãã£ãæ¹ãæããã§ãâ¦ï¼
ãã¯ãäºé¸ã¨æ¬æ¦ã§ã¯æ±ããæ°´æºãéãã®ã§ããã£ã¨ãã£ã¨ç´ æ©ãç確ã«ãã¥ã¼ãã³ã°ããåã足ããªãã£ããªã¨è¨ãã®ãæ£ç´ãªææ³ã§ãã
ã¹ã³ã¢ã伸ã³æ©ãã¨ä½è£ãã§ãããä»åã®ãããªãã°ã®ç®æãINå¥ã®åéããªã©ãã¹ãåºããããªãã¾ãããã£ã¨ç²¾åº¦ãä¸ãããã¨ã«ããæ°æã¡ã«ãä½è£ãã§ãããæ£ç¢ºã«ãã¥ã¼ãã³ã°ãã§ããã¯ãã§ãã
ãã ãä»åã®äºé¸ã»æ¬æ¦ã®çµæã§åããå°ãèªä¿¡ãã¤ãããã¨ãã§ãã¾ããã3
æ¥å¹´ã¯æ¯éã¨ãã¾ãäºé¸çªç ´ãã次ã¯æ¬æ¦å
¥è³ãç®æãã¦ãã®ä¸å¹´ã§åãã¤ãã¦ãããã¨æãã¾ãï¼
ISUCONéå¶ã®çæ§ã»é¢ãã£ã¦ãã ãã£ãçæ§ã楽ããæéãæ¬å½ã«ãããã¨ããããã¾ããï¼