Mój plik ibdata jest bardzo duży, przynajmniej wydaje mi się, że jest bardzo duży. Czy to jest nadmierne czy nie takie złe?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Mój plik ibdata jest bardzo duży, przynajmniej wydaje mi się, że jest bardzo duży. Czy to jest nadmierne czy nie takie złe?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Odpowiedzi:
Jeśli uruchomisz show table status
na stole, a Data_free
pole stanowi zdecydowaną większość ibdata1
rozmiaru pliku, możesz mieć dużo zmarnowanego miejsca. Sprawi to wiele problemów z wstawieniem / usunięciem. Jeśli tak jest, a przejściowe wstawianie i usuwanie stanowi większość danych, masz dobry przypadek na plik na tabelę.
Nie jest to jednak automatyczne „tak”. Na świecie dużo mówi się o wewnętrznej fragmentacji plików InnoDB, ale umieszczenie ich w systemie plików, ponieważ plik na tabelę po prostu przenosi fragmentację na poziom systemu plików zamiast na poziom bazy danych.
Pomyśl o pliku InnoDB jako o systemie plików, a nie o pliku. Jeśli masz dużo plików, potrzebujesz dużego systemu plików.
W większości systemy plików bardzo dobrze radzą sobie ze skalowaniem w górę, aby obsłużyć terabajty danych i niezliczoną liczbę plików. Czasami występują problemy ze słabym indeksowaniem (np. Ograniczenia liczby plików w katalogu przed pogorszeniem wydajności), ale w większości przypadków nowoczesny system plików może wyskoczyć w zakres terabajtów.
InnoDB działa w ten sam sposób. Rozmiar pliku danych może być ogromny ... i podobnie jak duże systemy plików, które mogą powodować problemy z tworzeniem kopii zapasowych danych. Jednak podzielenie systemu plików na wiele partycji nie pomaga w rozwiązaniu tego problemu, podobnie jak próba manipulowania programem innodb. Chociaż możesz używać pliku innodb_file_per_table , rzadko go polecam.
Podobnie jak twój system plików, lepszym rozwiązaniem jest poznanie wewnętrznych ograniczeń i praca w tym zakresie. Zrozum indeksy i odpowiednio je zastosuj. Nie pracuj nad próbą podzielenia InnoDB, to nie jest do tego przeznaczone.
Ponieważ staram się konstruktywnie przekazać tę koncepcję, oto krótkie czytanie, że słowa brzmią lepiej niż potrafię: Terabajty to nie duże zbiory danych, to petabajty .
Pamiętam naprawdę stary slajd marketingowy MySQL, w którym klient prowadził hurtownię danych z kilkoma terabajtami. Wiele lat temu. Oba działałyby InnoDB lub MyISAM. Jest to standard w standardzie MySQL.
Nie przejmuj się bazą danych o pojemności 15 GB.
InnoDB free: 7364608 kB
Pliki ibdata nie kurczą się - jeśli ostatnio upuściłeś kilka tabel lub usunąłeś wiele wierszy - innodb w twojej konfiguracji nie zwolni wolnego miejsca z powrotem do systemu plików. proponuję ci:
w ten sposób będziesz mógł odzyskać miejsce za każdym razem, gdy upuścisz tabelę / bazę danych innodb - powiązane pliki idb zostaną natychmiast usunięte.