MySQL Casual Advent Calendar 2016 - Qiitaã®6æ¥ç®ã®è¨äºã§ãã
AdventCalendarèªä½ååå ã§ããããããã¦ãããæãè¡ãã§2æ¥é£ç¶ã
ã³ã¬ç¨ã®ããããªã¨ããã³ã¹åãããããªç°å¢è¦ãã¦ããªãã£ãã®ã§ãæ®æ®µããèã£ã½ãã§ãããCasualãªæãã§å¤±ç¤¼ãã¾ãã
大ããªãã¼ãã«ãç¹°ãè¿ãSELECTãã¦ãããæåãå¤ãã£ããã§ããã
ãããã¡ã«è¼ã£ã¦ãããªãè¼ã£ã¦ããã§æ©ãã ããããè¼ã£ã¦ãããªãæåã¬ãããªé ãã¦ã次ããã°ã¤ã£ã¨éããªãã ããã¨æã£ã¦ãããã§ããã
ãããã¡ã«è¼ããããªããªããä½åãã£ã¦ãé ãã ããã¨æã£ã¦ãããã§ããã
ã§ãã¡ããã¨è¨æ¸¬çãªãã¨ããã£ã¦ãé¢ä¿ã§ãåãSQLãä½åº¦ãå©ãã¦å¹³åãä¸å¤®ãè¦ããã¨æã£ã¦ãããã§ãã
ããããã
45.71ç§ã44.90ç§ã24.44ç§ã13.32ç§ã13.12ç§ã»ã»ã»
ã¨ã段éçã«å¿çæéãç縮ãã¦ããã¾ããã
ãã£(ï¾âï¾ï¼)
è¿·ããmysql-casualã®Slackã¸ã
åªãããå
ããéãä¸å¯§ã«æãã¦ããã¾ããï¼
åå ã¯ãããã¡ãã¼ã«ã®ãOldãã¨ãYoungã
innodb_buffer_pool_sizeã¯2GBç¨æãã¦ãã¦ããã¹ã対象ã®ãã¼ãã«ã¯1.6GBã ã£ãã®ã§ãã¾ããéæªãã¦ãã¡ãã£ã¨æº¢ããç¨åº¦ã ããã¨æã£ã¦ããã®ã§ããããããéã¡ã§ããã
MySQLã®ãããã¡ãã¼ã«ã¯ããOldãã¨ãYoungãã«åãã¦ç®¡çããã¦ããã¨ã
ååãããã¦ãLRUãªã¹ãã®æ°ãããã¤ãå¤ããã¤ã£ã¦ã¤ã¡ã¼ã¸ã¯åãããã§ããããããã¡ä¸ã«ç¡ããã¼ã¿ãåã£ã¦ããæãæåã¯ãOldãã«ãã¼ã¿ãæ ¼ç´ãããã ããã§ãã
ã§ãä¸å®æéçµéããã¨ãYoungã®æ¹ã«ç§»ãããã«ãªã£ã¦ã¾ãã
ãã®æ©æ§ã«ãããã大éã«ãã¼ã¿ãèªã¿è¾¼ããã©ãåç
§é »åº¦ãä½ããã¨ãã£ãSQLã«ãã£ã¦ãããã¡ãæ±æãããã®ãé²ããã ããã§ãã
ãã®Oldã¨Youngã®æ¯çã決ãããã©ã¡ã¼ã¿ããinnodb_old_blocks_pctãã§ãOldã¨Youngã®å²åã«ãããOldåãæå®ãã¾ãã
ãã®ããã©ã«ããã37ï¼ï¼ ï¼ã
37ï¼
ï¼
2GBã®37ï¼
ï¼0.74GBï¼
æåã«ãããã¡ã«ä¹ãã®ã¯ã³ã¬ã ãã
ãã®SQLã§Oldãããã¡ã«ä¹ããªããã¼ã¿ãåã£ã¦ããå ´åãï¼Youngã使ããªãéã¯ï¼ä½åå©ãã¦ãDiskIOãçºçãã¦ãã¾ãï¼
SQLã®1çºç®ã§ãOldã«ä¹ãç¯å²ã ãOldã«ä¹ãã
OldããYoungã«ç§»ã£ããã¨ãããä¸åº¦SQLå©ããã¨ããã§ã空ããOldã«æ®ãããã¾ã0.74GBãä¹ãï¼
Youngã¨Oldã«ã»ã¼ä¹ã£ãã¨ããã§ãããä¸åSQLå©ããã¨ããã§ãã»ã¼DiskIOä¸è¦ã«ãªãï¼
ãããªæãã§ãã段éçã«ãå¿çé度ãä¸ãããã¨ããäºè±¡ã¨ãã¦ç¾ãã¦ãã¾ããã
innodb_old_blocks_pctãããã
ãã®ãã©ã¡ã¼ã¿ãã5ï½95ãã¾ã§ã®å¤ãåããã¨ãã§ããã®ã§ã試ãã«ã95ãã¾ã§å¼ãä¸ãã¦ã¿ã¾ããã
çµæã
35.87ç§ã6.95ç§ã6.95ç§ã7.30ç§ã7.03ç§
ã¨ãä¸çºã§ã»ã¼ãããã¡ã«ä¹ãããã®å¾ã¯è¦äºã«å¿çé度ãå®å®ãã¾ããã
ãããã¡ã®ç¶æ 確èªSQL
yoku0825å
çããããããã¡ã«åã¤ã³ããã¯ã¹ãã©ãã ãä¹ã£ã¦ãããããã§ãã¯ããSQLãæãã¦ããã ãã¾ããã
ãªãã10GB以ä¸ã®ãããã¡ãã¼ã«ã«å¯¾ãã¦å®è¡ããã®ã¯éæ¨å¥¨ã¨ã®ãã¨ã§ãã
SELECT table_name, index_name, is_old, sum(data_size) AS data_size FROM information_schema.innodb_buffer_page_lru GROUP BY 1, 2, 3;
ãããã¡ãã¼ã«ã®å¶å¾¡ãããå°ã詳ããã
MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.9.1 InnoDB バッファープール
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.12 InnoDB の起動オプションおよびシステム変数
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.12 InnoDB の起動オプションおよびシステム変数
ãèªã¿ã¾ãããã
OldããYoungã«ç§»ãå¶å¾¡ã®ãã©ã¡ã¼ã¿ãinnodb_old_blocks_pctãã¯ã5.6.5以åã¨5.6.6以å¾ã§ããã©ã«ããå¤ãã£ã¦ãæåãããªãå¤ãã£ã¦ã¾ãã
innodb_old_blocks_time
å¤ããµããªã¹ãã«æ¿å ¥ããããããã¯ãããã®æåã®ã¢ã¯ã»ã¹å¾ãæ°ãããµããªã¹ãã«ç§»åããã¾ã§ã«ãããã«ã¨ã©ã¾ãå¿ è¦ã®ããæéãããªç§ (ms) åä½ã§æå®ãã¾ããããã©ã«ãå¤ã¯ 0 ã§ããæ¿å ¥å¾ã«ã©ã®ãããã®æéã§ã¢ã¯ã»ã¹ãçºçãããã«é¢ä¿ãªããå¤ããµããªã¹ãã«æ¿å ¥ããããããã¯ã¯ãInnodb ããããã¡ã¼ãã¼ã«ãããæ¿å ¥ããããããã¯ã®ãã¼ã¸ã® 1/4 ãåé¤ããã¨ãã«ãæ°ãããµããªã¹ãã«ç§»åããã¾ãããã®å¤ã 0 ãã大ããå ´åããããã¯ã¯æåã®ã¢ã¯ã»ã¹å¾ãå°ãªãã¨ããã®ããªç§ã§ã¢ã¯ã»ã¹ãçºçããã¾ã§ãå¤ããµããªã¹ãã«æ®ãã¾ãããã¨ãã°ã1000 ã®å¤ã§ã¯ããããã¯ã¯æåã®ã¢ã¯ã»ã¹å¾ãããããæ°ãããµããªã¹ãã«ç§»åãããè³æ ¼ãå¾ãã¾ã§ã1 ç§éå¤ããµããªã¹ãã«ã¨ã©ã¾ãã¾ãã
MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.9.1 InnoDB バッファープール
innodb_old_blocks_time
å¤ã 0 ã«ããã¨ãå¤ããµããªã¹ãã«æ¿å ¥ããããããã¯ã¯ãæ¿å ¥å¾ã«ã©ã®ãããã®æéã§ã¢ã¯ã»ã¹ãçºçããã®ãã«ã¯é¢ä¿ãªããæåã®ã¢ã¯ã»ã¹ã®ç´å¾ã«æ°ãããµããªã¹ãã«ç§»åãã¾ãããã®å¤ã 0 ãã大ããå ´åããããã¯ã¯æåã®ã¢ã¯ã»ã¹å¾ãå°ãªãã¨ããã®ããªç§ã§ã¢ã¯ã»ã¹ãçºçããã¾ã§ãå¤ããµããªã¹ãã«æ®ãã¾ãããã¨ãã°ã1000 ã®å¤ã§ã¯ããããã¯ã¯æåã®ã¢ã¯ã»ã¹å¾ãããããæ°ãããµããªã¹ãã«ç§»åãããè³æ ¼ãå¾ãã¾ã§ã1 ç§éå¤ããµããªã¹ãã«ã¨ã©ã¾ãã¾ãã
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.12 InnoDB の起動オプションおよびシステム変数
ããï¼å¾®å¦ã«è¨è¿°ãéãããã
0ã®ã¨ãã¯ãããªãYoungã«è¡ãã®ï¼ä¸åº¦Oldã«å
¥ã£ã¦ã1/4æ¶ããããYoungã«è¡ãã®ï¼
åçå¤æ´å¯è½ãªãã©ã¡ã¼ã¿ã¨ã¯ãããã°ãã¼ãã«ãã©ã¡ã¼ã¿ãªã®ã§ãå¤æ´ããå ´åã¯å½±é¿ç¯å²ããã£ãã確èªãã¾ãããã
ã¾ã¨ã
ã»MySQLã®ãããã¡ãã¼ã«ã¯Youngã¨Oldã®ï¼ã¤ã«ãããã¦ã¦ã大ããªãã¼ã¿ãæµãä¸éæ§ã®SQLãããããã¡ãä¿è·ãã¦ãã
ã»æ¯çã¨æåã¯ãã©ã¡ã¼ã¿ã§å¤æ´å¯è½ï¼
ã»ãããªããã ãããã¡ã¢ãªè¨ç®æ°ãã¤ãã¦ï¼
ã»MySQL-Casualã®Slackã«æ¥ãã¨ããããããå
ãããã¡ãå¾
ã£ã¦ããï¼
ä»åº¦ããã次åã¯ã12/7ï¼æ°´ï¼ã@mita2ããã®äºå®ã§ãã