Używam już mysql, ale nie rozumiem, jak to działa wewnętrznie. Czy ktoś może wskazać mi dobry zasób na temat tego, jak wygląda wewnętrzna reprezentacja danych na dysku, co może również dyskutować o tym, jak rzeczy są wyszukiwane i dostępne tak szybko? Jeszcze lepiej, czy ktoś może wymyślić wyjaśnienie na wysokim poziomie?w jaki sposób dane mysql są przechowywane na dysku?
Odpowiedz
Serwer MySQL wykorzystuje przestrzeń dyskową na kilka sposobów, głównie dla katalogów i plików znajdujących się w jednym miejscu, znanym jako katalog danych serwera. Serwer używa swojego katalogu danych do przechowywania wszystkich następujących:
- Katalogi baz danych. Każda baza danych odpowiada pojedynczemu katalogowi w katalogu danych, niezależnie od typów tabel tworzonych w bazie danych. Na przykład dana baza danych jest reprezentowana przez jeden katalog, niezależnie od tego, czy zawiera tabele MyISAM, tabele InnoDB, czy ich kombinację.
- Pliki w formacie tabeli (pliki .frm), które zawierają opis struktury tabeli. Każda tabela ma własny plik .frm, znajdujący się w odpowiednim katalogu bazy danych. Jest to prawdą bez względu na to, który aparat pamięciowy zarządza tabelą.
- Pliki danych i indeksów są tworzone dla każdej tabeli przez niektóre silniki pamięci i umieszczane w odpowiednim katalogu bazy danych. Na przykład mechanizm magazynowania danych MyISAM tworzy plik danych i plik indeksu dla każdej tabeli.
- Mechanizm magazynowania InnoDB ma własne pliki tabel i dziennika. Przestrzeń tabel zawiera dane i informacje o indeksie dla wszystkich tabel InnoDB, a także dzienniki cofania, które są potrzebne, jeśli transakcja musi zostać wycofana. Pliki dziennika rejestrują informacje o zatwierdzonych transakcjach i służą do zapewnienia, że nie nastąpi utrata danych. Domyślnie pliki obszaru tabel i dziennika są umieszczone w katalogu danych. Domyślny plik obszaru tabel nosi nazwę ibdata1, a domyślne pliki dziennika mają nazwę ib_logfile0 i ib_logfile1. (Możliwe jest również skonfigurowanie InnoDB do używania jednego pliku obszaru tabel na tabelę.W tym przypadku InnoDB tworzy plik obszaru tabel dla danej tabeli w katalogu bazy danych tabeli.)
- Pliki dziennika serwera i pliki statusu. Pliki te zawierają informacje o instrukcjach przetwarzanych przez serwer. Dzienniki są używane do replikacji i odzyskiwania danych, w celu uzyskania informacji do wykorzystania w optymalizacji wydajności zapytań oraz do określenia, czy występują problemy operacyjne.
Świetna odpowiedź z cichym mnóstwem informacji, czy napisałeś to wszystko ze swojej pamięci? Jeśli to możliwe, proszę podać odniesienia do przyszłych badań. – rekire
Znalazłem tę informację, gdy robiłem badania na temat pamięci MySQL. Zostało to wspomniane na blogu MySQL DBA –
@PeterVenderberghe Good one ... –
- 1. W jaki sposób dane są przechowywane w schowku Windows
- 2. W jaki sposób dane są przechowywane na serwerze SQL?
- 3. W jaki sposób fizycznie przechowywane są dane HTML5 WebStorage?
- 4. W jaki sposób NULL są przechowywane w bazie danych?
- 5. W jaki sposób przechowywane są obiekty wartości w bazie danych?
- 6. Gdzie przechowywane są dane const?
- 7. W jaki sposób zmienne są przechowywane w pamięci w rekursji?
- 8. W jaki sposób są fizycznie przechowywane ciągi w JavaScript
- 9. W jaki sposób przechowywane są daty w Oracle?
- 10. Gdzie przechowywane są dane dziennika CloudWatch?
- 11. W jaki sposób nazwy zmiennych są przechowywane i mapowane wewnętrznie?
- 12. gdzie są rzeczywiste dane w bazie danych mysql przechowywane na komputerze z systemem Linux?
- 13. Gdzie przechowywane są zmienne javascript
- 14. W jaki sposób powinny być przechowywane słowniki python w pytables?
- 15. Jak przekonwertować przechowywane dane w stanie zmodowanym?
- 16. W jaki sposób są pobierane dane z pamięci RAM?
- 17. Jak przechowywać dane JSON na dysku?
- 18. Trwałe dane na dysku za pomocą Hazelcast
- 19. W jaki sposób przechowywane są klasy modeli aplikacji Google App Engine?
- 20. W jaki sposób typy ciągów i znaków są przechowywane w pamięci w .NET?
- 21. W jaki sposób skryptować procedury przechowywane w plikach?
- 22. jak przechowywane są indeksy w elasticsearch
- 23. Bloby baz danych kontra przechowywane na dysku pliki
- 24. MySQL: Widoki a procedury przechowywane
- 25. Gdzie są przechowywane makra?
- 26. W jaki sposób zmienne i metody instancji są przechowywane w obiekcie Objective-C 2.0?
- 27. W jaki sposób atrybuty produktu i opcje atrybutów są przechowywane w bazie danych Magento?
- 28. W jaki sposób są przechowywane skompresowane modele w Kodzie EF 4.3 Pierwsze migracje __MigrationHistory table created?
- 29. Pamięć danych Apache Cassandra na dysku
- 30. Gdzie są przechowywane zmienne w Pythonie?
To pytanie gwarantuje kilka naprawdę dobrych badań, a nie tylko sesja pytań, może być lepiej dopasowana na http://dba.stackexchange.com –
Książka "Pro MySQL" wyjaśnia ten proces dość dokładnie. – Marty
IMHO zależy to od mechanizmu przechowywania, w którym korzystasz ze struktur MyissAM, a InnoDB jest cichych. Jednak AFIK używa wszystkich drzew D lub KD (nie jestem teraz pewien co do K). – rekire