Nie powiedziałeś, czy to był system testowy, czy produkcja; Zakładam, że to produkcja.
Prawdopodobnie masz rozmiar tabeli, w którym jej indeksy (lub cała partia) nie mieszczą się już w pamięci.
Oznacza to, że InnoDB musi wczytywać strony podczas wstawiania (w zależności od rozkładu wartości indeksów nowych wierszy). Czytanie stron (odczyty losowe) jest naprawdę powolne i należy go unikać, jeśli to możliwe.
Partycjonowanie wydaje się najbardziej oczywistym rozwiązaniem, ale partycjonowanie MySQL może nie pasować do twojego przypadku użycia.
Z pewnością powinieneś rozważyć wszystkie możliwe opcje - przenieś tabelę na serwer testowy w swoim laboratorium, aby zobaczyć, jak się zachowuje.
Twój klucz podstawowy wygląda na to, że prawdopodobnie nie jest wymagany (masz inny unikalny indeks), więc wyeliminowanie tego jest jedną z opcji.
Weź również pod uwagę wtyczkę i kompresję innodb, dzięki czemu Twoja innodb_buffer_pool pójdzie dalej.
Naprawdę musisz przeanalizować swoje przypadki użycia, aby zdecydować, czy rzeczywiście musisz zachować wszystkie te dane i czy partycjonowanie jest rozsądnym rozwiązaniem.
Dokonywanie jakichkolwiek zmian w tej aplikacji może spowodować nowe problemy z wydajnością dla twoich użytkowników, więc musisz być naprawdę ostrożny. Jeśli znajdziesz sposób na poprawę wydajności wstawiania, możliwe, że zmniejszy to wydajność wyszukiwania lub wydajność innych operacji. Przed wydaniem takiej zmiany musisz przeprowadzić dokładny test wydajności na sprzęcie klasy produkcyjnej.