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

Zbyt duży rozmiar wiersza (> 8126) czy mogę po prostu zmienić InnoDB na MyISAM?

Tak, możesz przełączyć się na MyISAM. Ale to niekoniecznie jest dobry pomysł:

  • MyISAM nie obsługuje transakcji
  • Tabele MyISAM często wymagają REPAIR po awarii

Tabela InnoDB może obsłużyć więcej niż 8 KB na wiersz. Najwyraźniej napotkałeś problem, mając kilkanaście kolumn TEXT/BLOB? W głównej części wiersza przechowywane jest maksymalnie 767 bajtów kolumny; reszta jest umieszczona w osobnym bloku.

Myślę, że jeden ROW_FORMAT umieści wszystkie duże kolumny w osobnym bloku, pozostawiając tylko 20 bajtów wskazujących na to.

Innym podejściem do szerokich wierszy jest „partycjonowanie pionowe”. Oznacza to, że utwórz kolejną tabelę (lub tabele) z pasującym PRIMARY KEY i niektóre z dużych kolumn. Szczególnie przydatne jest przeniesienie rzadko zapełnionych kolumn do takiej tabeli, a następnie posiadanie mniejszej liczby wierszy w tej tabeli i użycie LEFT JOIN aby pobrać dane. Ponadto, jeśli masz jakieś kolumny, których rzadko potrzebujesz SELECT , to są dobrzy kandydaci do przeniesienia — bez JOIN potrzebne, gdy nie potrzebujesz tych kolumn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj skorelowanego podzapytania w dwóch kolumnach

  2. php password_verify nie działa z bazą danych

  3. MySQL ON UPDATE CURRENT_TIMESTAMP nie aktualizuje się

  4. mysql znajdź ostatnie komentarze użytkowników

  5. Szukaj w kolumnie Json z Laravel