Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nieprawidłowy plik klucza dla tabeli '/tmp/#sql_3c51_0.MYI' spróbuj go naprawić

Problem spowodowany jest brakiem miejsca na dysku w folderze /tmp. Wolumin /tmp jest wykorzystywany w zapytaniach wymagających tworzenia tabel tymczasowych. Te tymczasowe tabele są w formacie MyISAM, nawet jeśli zapytanie używa tylko tabel z InnoDB.

Oto kilka rozwiązań:

  • optymalizuj zapytanie, aby nie tworzyło tabel tymczasowych (przepisz zapytanie, podziel je na wiele zapytań lub dodaj odpowiednie indeksy, przeanalizuj plan wykonania za pomocą pt-query-digest i EXPLAIN <query> ) Zobacz ten Artykuł Percony o tymczasowych stołach .
  • optymalizuj MySQL, aby nie tworzył tabel tymczasowych (sort_buffer_size, join_buffer_size). Zobacz:https://dba.stackexchange.com/questions/53201/mysql-creates-temporary-tables-on-disk-how-do-i-stop-it
  • zmniejszenie rozmiarów stołów. Jeśli to możliwe, usuń niepotrzebne wiersze
  • użyj SELECT table1.col1, table2,col1 ... zamiast select * aby użyć tylko tych kolumn, które są potrzebne w zapytaniu, aby wygenerować mniejsze tabele tymczasowe
  • używaj typów danych, które zajmują mniej miejsca
  • dodaj więcej miejsca na dysku na woluminie, na którym znajduje się folder /tmp
  • zmień użytkownika folderu temp przez mysql, ustawiając TMPDIR zmienna środowiskowa przed uruchomieniem mysqld. Punkt TMPDIR do folderu na woluminie dyskowym, który ma więcej wolnego miejsca. Możesz także użyć tmpdir opcja w /etc/my.cnf lub --tmpdir w wierszu poleceń usługi mysqld. Zobacz:B.5.3.5 Gdzie MySQL przechowuje pliki tymczasowe


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacz MySQL z instrukcją SELECT

  2. Zduplikuj całą bazę danych MySQL

  3. Laravel Sail odbudowuje domyślną bazę danych

  4. MySQL GROUP BY i wypełnianie pustych wierszy

  5. Jak ustawić sql-mode=NO_ENGINE_SUBSTITUTION na stałe w MySQL my.cnf