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

MySQL ALTER TABLE na bardzo dużym stole - czy można go bezpiecznie uruchomić?

Jak właśnie przeczytałem, ALTER TABLE ... ORDER BY ... zapytanie jest przydatne do poprawy wydajności w niektórych scenariuszach. Dziwię się, że PK Index w tym nie pomaga. Ale z dokumentacji MySQL , wygląda na to, że InnoDB robi użyj indeksu. Jednak InnoDB wydaje się być wolniejszy niż MyISAM. To powiedziawszy, dzięki InnoDB nie będziesz musiał zmieniać kolejności stołu, ale stracisz niesamowitą prędkość MyISAM. Nadal może warto spróbować.

Sposób, w jaki wyjaśniasz problemy, wydaje się, że do pamięci załadowano za dużo danych (może nawet odbywa się zamiana?). Możesz to łatwo sprawdzić, monitorując wykorzystanie pamięci. Trudno powiedzieć, ponieważ nie znam zbyt dobrze MySQL.

Z drugiej strony, myślę, że twój problem leży w zupełnie innym miejscu:używasz maszyny z tylko 512 MB pamięci RAM jako serwera bazy danych z tabelą zawierającą więcej niż 4 miliony wierszy... I wykonujesz bardzo obciążoną pamięć operacja na całym stole na tej maszynie. Wygląda na to, że 512Megs nie wystarczy do tego.

Widzę tutaj znacznie bardziej fundamentalną kwestię:wykonujesz programowanie (i prawdopodobnie również testujesz) w środowisku, które bardzo różni się od środowiska produkcyjnego. Tego rodzaju problemu, który wyjaśniasz, należy się spodziewać. Twoja maszyna deweloperska ma sześć razy więcej pamięci niż maszyna produkcyjna. Myślę, że mogę śmiało powiedzieć, że procesor też jest znacznie szybszy. W takim przypadku sugeruję utworzenie maszyny wirtualnej naśladującej Twoją witrynę produkcyjną. W ten sposób możesz łatwo przetestować swój projekt bez zakłócania pracy witryny produkcyjnej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIMESTAMPADD() Przykłady – MySQL

  2. MySQL otrzymuje wszystkie zmienione wiersze dla wielu instrukcji w jednym zapytaniu

  3. Połączenie tabeli GeoIP z tabelą adresów IP w MySQL

  4. CONVERT_TZ() Przykłady – MySQL

  5. Wybierz wszystkie wiersze, które mają przynajmniej listę funkcji