Сегодня мы искали статьи по вопросу утечки памяти в MySQL.
В MySQL 8.0 мы включили инструментарий памяти по умолчанию, и можно увидеть распределение памяти для всех потоков, имеющих открытые операторы подготовки. Мы создали запрос о потребление памяти:
USE performance_schema; SELECT t.thread_id, user,current_count_used, current_allocated, current_avg_alloc, sp.count_star - sd.count_star open_sql_prepared, cp.count_star - cc.count_star open_com_prepared FROM ( SELECT COUNT_STAR, THREAD_ID FROM events_statements_summary_by_thread_by_event_name WHERE event_name = 'statement/sql/prepare_sql' ) sp JOIN ( SELECT COUNT_STAR, THREAD_ID FROM events_statements_summary_by_thread_by_event_name WHERE event_name = 'statement/com/Prepare' ) cp ON (cp.THREAD_ID = sp.THREAD_ID) JOIN ( SELECT COUNT_STAR, THREAD_ID FROM events_statements_summary_by_thread_by_event_name WHERE event_name = 'statement/sql/dealloc_sql' ) sd ON (sd.THREAD_ID = sp.THREAD_ID) JOIN ( SELECT COUNT_STAR, THREAD_ID FROM events_statements_summary_by_thread_by_event_name WHERE event_name = 'statement/com/Close stmt' ) cc ON (cc.THREAD_ID = sp.THREAD_ID) JOIN sys.memory_by_thread_by_current_bytes t on t.thread_id = sp.thread_id WHERE sp.count_star - sd.count_star <> 0 OR cp.count_star - cc.count_star <> 0;
И результат следующий:
+-----------+----------------+--------------------+-------------------+-------------------+-------------------+-------------------+ | thread_id | user | current_count_used | current_allocated | current_avg_alloc | open_sql_prepared | open_com_prepared | +-----------+----------------+--------------------+-------------------+-------------------+-------------------+-------------------+ | 58 | root@localhost | 207 | 1.74 MiB | 8.62 KiB | 1 | 0 | | 61 | root@localhost | 43 | 82.48 KiB | 1.92 KiB | 19 | 0 | | 62 | root@localhost | 23 | 72.69 KiB | 3.16 KiB | 6 | 0 | +-----------+----------------+--------------------+-------------------+-------------------+-------------------+-------------------+
Как видите, инструментарий MySQL 8.0 позволяет найти практически все, что вам нужно! Если у вас есть вопросы, пожалуйста, сообщите нам.