CPUå ç¨è¿é«è¯ææè·¯
mpstat -P ALL 1ï¼æ¥çcpu使ç¨æ åµï¼ä¸»è¦æ¶èå¨syså³osç³»ç»è°ç¨ä¸
perf topï¼cpu主è¦æ¶èå¨_spin_lock
çæperf reportæ¥ç详ç»æ åµ
CPU主è¦æ¶èå¨mutexäºç¨ä¸ï¼è¯´ææéçç¹ã
éç¨pt-pmpè·è¸ªmysqldæ§è¡æ åµï¼çç¹ä¸»è¦éä¸å¨mem_heap_allocåmem_heap_freeä¸ã
Pstackæä¾æ´è¯¦ç»çAPIè°ç¨æ
Innodbå¨è¯»åæ°æ®è®°å½æ¶çAPIè·¯å¾ä¸º
row_search_for_mysql --ãrow_vers_build_for_consistent_read --ãmem_heap_create_block_func --ãmem_area_alloc --ãmalloc --ã _L_unlock_10151 --ã__lll_unlock_wait_private
row_vers_build_for_consistent_readä¼é·å ¥ä¸ä¸ªæ»å¾ªç¯ï¼è·³åºæ¡ä»¶æ¯è¯¥æ¡è®°å½ä¸éè¦å¿«ç §è¯»æè å·²ç»ä»undoä¸æ¾åºå¯¹åºçå¿«ç §çæ¬ï¼æ¯æ¬¡å¾ªç¯é½ä¼è°ç¨mem_heap_alloc/freeã
è该表çè®°å½æ´æ¹å¾é¢ç¹ï¼å¯¼è´å ¶undo history listæ¯è¾é¿ï¼æç´¢å¿«ç §çæ¬ç代价æ´å¤§ï¼å°±ä¼é¢ç¹çç³è¯·åéæ¾å å åã
Linuxåççå ååºå½æ°ä¸ºptmallocï¼malloc/freeè°ç¨è¿å¤æ¶å¾å®¹æ产çéçç¹ã
å½å¤æ¡ SQL 并åæ§è¡æ¶ï¼ä¼æç»è§¦åoså±é¢çspinlockï¼å¯¼è´ä¸è¿°æ å½¢ã
解å³æ¹æ¡
å°mysqldçå ååºå½æ°æ¿æ¢ætcmallocï¼ç¸æ¯ptmallocï¼tcmallocå¯ä»¥æ´å¥½çæ¯æé«å¹¶åè°ç¨ã
ä¿®æ¹my.cnfï¼æ·»å å¦ä¸åæ°å¹¶éå¯
[mysqld_safe]malloc-lib=tcmalloc
ä¸å¨äºæ©ä¸7ç¹æ§è¡çæä½ï¼å°ç°å¨è¶ è¿72å°æ¶ï¼æé´è¯¥å®ä¾æ²¡æååºç°cpué¿æé£é«çæ å½¢ã
以ä¸æ¯ä¿®æ¹ååcpu使ç¨ç对æ¯