Heim >Datenbank >MySQL-Tutorial >So beheben Sie einen abnormalen Speicheranstieg in der MySQL-Produktionsdatenbank
Da die Produktionsumgebung des Unternehmens Alibaba Cloud RDS verwendet, ist es relativ praktisch, Parameter zu ändern. Das Standardleistungsschema ist 0 und wird dieses Mal auf 1 geändert. Senden Sie die Parameter nach der Änderung und die Datenbank wird neu gestartet. Dies wird bei niedrigen Geschäftsspitzen empfohlen.
Melden Sie sich bei der MySQL-Datenbank an und führen Sie die folgende SQL aus, um die Speicherüberwachung zu öffnen.
update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%';
Überprüfen Sie es nach dem Öffnen.
select * from performance_schema.setup_instruments where name like 'memory%innodb%' limit 5;
**Hinweis: **Mit diesem Befehl werden Speicherstatistiken online geöffnet, sodass nur neu hinzugefügte Speicherobjekte nach dem Öffnen gezählt werden. Es wird empfohlen, dass Sie nicht gezählt werden Warten Sie nach dem Öffnen eine Weile, um die folgenden Schritte auszuführen, um Threads mit hoher Speicherauslastung zu identifizieren.
select event_name, SUM_NUMBER_OF_BYTES_ALLOC from performance_schema.memory_summary_global_by_event_name order by SUM_NUMBER_OF_BYTES_ALLOC desc LIMIT 10; +---------------------------------------+-------------------------------------+ | event_name | SUM_NUMBER_OF_BYTES_ALLOC | +---------------------------------------+-------------------------------------+ | memory/sql/Filesort_buffer::sort_keys | 763523904056 | | memory/memory/HP_PTRS | 118017336096 | | memory/sql/thd::main_mem_root | 114026214600 | | memory/mysys/IO_CACHE | 59723548888 | | memory/sql/QUICK_RANGE_SELECT::alloc | 14381459680 | | memory/sql/test_quick_select | 12859304736 | | memory/innodb/mem0mem | 7607681148 | | memory/sql/String::value | 1405409537 | | memory/sql/TABLE | 1117918354 | | memory/innodb/btr0sea | 984013872 | +---------------------------------------+-------------------------------------+
Sie können sehen, dass das Ereignis mit dem höchsten Speicherverbrauch erfahrungsgemäß Filesort_buffer ist. Dies sollte mit der Sortierung zusammenhängen.
select thread_id, event_name, SUM_NUMBER_OF_BYTES_ALLOC from performance_schema.memory_summary_by_thread_by_event_name order by SUM_NUMBER_OF_BYTES_ALLOC desc limit 10; +---------------------+---------------------------------------+-------------------------------------+ | thread_id | event_name | SUM_NUMBER_OF_BYTES_ALLOC | +---------------------+---------------------------------------+-------------------------------------+ | 105 | memory/memory/HP_PTRS | 69680198792 | | 183 | memory/sql/Filesort_buffer::sort_keys | 49210098808 | | 154 | memory/sql/Filesort_buffer::sort_keys | 43304339072 | | 217 | memory/sql/Filesort_buffer::sort_keys | 37752275360 | | 2773 | memory/sql/Filesort_buffer::sort_keys | 31460644712 | | 218 | memory/sql/Filesort_buffer::sort_keys | 31128994280 | | 2331 | memory/sql/Filesort_buffer::sort_keys | 28763981248 | | 106 | memory/memory/HP_PTRS | 27938197584 | | 191 | memory/sql/Filesort_buffer::sort_keys | 27701610224 | | 179 | memory/sql/Filesort_buffer::sort_keys | 25624723968 | +---------------------+---------------------------------------+-------------------------------------+
Sie können sehen, dass Threads, die viel Speicher verbrauchen, mit Filesort_buffer
zusammenhängen. Filesort_buffer
相关。
根据前边我们查到的thread_id
Gehen Sie gemäß der zuvor gefundenen thread_id
zum Protokoll, um das entsprechende Alibaba Cloud RDS-Überwachungsprotokoll zu finden relativ mächtig von. Wir rufen direkt basierend auf thread_id ab.
Das obige ist der detaillierte Inhalt vonSo beheben Sie einen abnormalen Speicheranstieg in der MySQL-Produktionsdatenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!