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

Przyspieszenie konwersji z MyISAM do InnoDB

  • Ustawianie dużego rozmiaru innodb_buffer_pool_size (2 GB lub więcej)
  • wstępnie odczytaj swoje stare pliki danych/indeksów myisam za pomocą poleceń powłoki
  • zwiększ rozmiar innodb_log_file_size (256 MB)
  • Zrób tablicę zmian w X równoległych wątkach, gdzie X to liczba rdzeni procesora na twoim serwerze
  • inne drobne poprawki tylko do konwersji (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

ustawienie innodb_buffer_pool_size tak wysokiego, jak to możliwe, jest typowym sposobem na przyspieszenie tworzenia tabel innodb - Twój zestaw danych wygląda, jakby mógł zmieścić się w puli buforów innodb o wielkości 2 GB, więc każdy przyzwoity 64-bitowy serwer powinien na to pozwolić. alter table type=innodb jest również szybsze niż rozwiązanie dump+reimport i jest łatwe do równoległego uruchomienia.

Upewnij się również, że zwiększyłeś rozmiar innodb_log_file_size z domyślnej wartości 5 MB do 128 lub 256 MB. Uważaj z tym i wymaga czystego zamknięcia + wykasowania starego pliku ib_logfile*.

Jeśli twój serwer ma coś takiego jak 8 GB pamięci RAM i używasz 64-bitowej wersji mysql, sugerowałbym 2 GB innodb_buffer_pool, a możesz nawet wstępnie odczytać stare pliki MYD i MYI przed zamknięciem na czas przestoju, aby znalazły się w Pamięć podręczna stron systemu operacyjnego, gdy zaczyna się prawdziwa praca.

Jeśli zdecydujesz się również na drobne poprawki, pamiętaj, że musisz je cofnąć po konwersji (kolejny mały przestój), aby Twoje dane były bezpieczne, wątpię jednak, czy są tego warte dla tak małego zestawu danych.

Powodzenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz listę tabel MySQL i uruchom kod dla każdej tabeli

  2. Automatyczne zamknięcie połączenia db w php?

  3. Używasz zmiennej sesji PHP w pliku MySQL uruchamianym w PHP?

  4. AKTUALIZUJ lub WSTAW MySQL Python

  5. Jak w MySQL zbudować indeks, aby przyspieszyć to zapytanie?