2009-11-04 7 views
5

Innodb firmy Mysql zawiera pojęcia strony, zakresu, segmentu, obszarów tabel, ale nie wiem, w jaki sposób wchodzą ze sobą w interakcje. W jaki sposób są one powiązane? Co to znaczy, że obszar tabel ma 16 tys. Stron? W jaki sposób odnosi się to do fizycznych wierszy i czy "strony" znajdują się w pamięci?Strona vs Extent vs. Segment vs. Tabele

Zakładam, że Oracle może mieć tę samą koncepcję, ale nie jestem pewien, gdzie jej szukać. Czy istnieje dobre odniesienie/książka, która mówi o tym szczegółowo?

Odpowiedz

0

Oracle zawiera bloki, segmenty i zakresy do opisywania fizycznego układu oraz tabel i obszarów tabel dla fo r opisujący układ logiczny. Niestety, nie pamiętam szczegółów, aw każdym razie nauczyłem się ich dwóch wersji temu.

Ogólnie rzecz biorąc, będą dwa różne sposoby opisu baz danych. Z punktu widzenia użytkowników bazę danych można podzielić na obszary tabel, a obszary tabel zawierają tabele zawierające wiersze i tak dalej. Muszą jednak mieszkać gdzieś na dysku, dlatego też DBA będzie zazwyczaj musiał przydzielać pliki, a wewnątrz plików musi istnieć układ, który pozwoli na przechowywanie wierszy i pól w bajtach pliku.

Są to szczegóły dotyczące implementacji i zwykle dotyczą wyłącznie DBA. Znajdziesz je w dokumentacji poszczególnych systemów baz danych i książek przeznaczonych dla administratorów baz danych. Zazwyczaj każdy indywidualny system baz danych znajduje się we własnych książkach.

Należy pamiętać, że systemy baz danych zwykle zawierają dokumentację, a systemy takie jak Oracle i DB2 mają na ogół bardzo obszerną dokumentację, często umieszczoną w książkach, które można czytać online lub pobrać w innej formie. Oczywiście, próba znalezienia czegoś na stronie www.oracle.com lub www.ibm.com może być frustrującym doświadczeniem, ale Google prawdopodobnie nadal jest twoim przyjacielem.

+0

Czy możesz polecić dobrą książkę z Oracle wyjaśniającą te rzeczy? – bichonfrise74

+0

Ten jest całkiem niezły: http://www.amazon.com/Oracle-Database-10g-DBA-Handbook/dp/0072231459/ref=sr_1_1?ie=UTF8&s=books&qid=1257384634&sr=8-1 –

0

Istnieje rozróżnienie między strukturą bazy danych Oracle a strukturą bazy danych logicznych. Pliki danych Oracle i pliki kontrolne są częścią struktury fizycznej, natomiast bloki i zakresy są elementami logicznymi.

Wyszukiwarka Google "Architektura Oracle" daje kilka wyników. This i this one mogą być przydatne, lub możesz kupić dobrą książkę, taką jak this one. Ale jednym z najlepszych źródeł informacji o bazie danych Oracle jest Oracle documentation itself.

Dokumentacja dla wybranej wersji bazy danych jest dostępna bezpłatnie zarówno w trybie online, jak i do pobrania lokalnego z poziomu Oracle web site.

7

Dla InnoDB szczególności:

przestrzeń tabel jest zarówno fizyczna i logiczna koncepcja. Kiedyś wszystkie tabele innodb miały dane zmieszane razem w plikach ibdata. W tych plikach obszar tabel jest niekoniecznie ciągłą kolekcją segmentów tworzących tabelę. W nowszych wersjach mysql pojedyncza tabela może być umieszczona w osobnym pliku, który jest również nazywany obszarem tabel.

W każdym przypadku, tabel zawiera:

  • segmentów, które zawierają 1 lub więcej zakresów w tej tabeli.

  • Zasięg zawiera 64 strony. Nie wiem, dlaczego 64.

  • to 16k stron, które teoretycznie są zoptymalizowane pod kątem wydajnego przechowywania i pobierania na poziomie dysku. strony są przydzielane w ilościach zakresu, gdy potrzeba więcej stron.

Patrz strona 11 z this pdf.

+0

Zakres jest 64 strony, ponieważ 64 x 16 KB = 1 MB. Tak więc zakres jest zdefiniowany jako 1 MB, co jest w zasadzie arbitralnym wyborem dla "kawałka" pamięci. Jeśli zmienisz rozmiar strony (teraz opcja na MySQL 5.6), to zasięg nadal wynosi 1 MB, ale może pomieścić więcej stron (ponieważ każda strona jest mniejsza). –

0

Struktura przechowywania wyroczni jest dobrze opisana w dokumentach: http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/logical.htm#CNCPT304

przestrzeń tabel logiczny pojemnik magazynujący składa się z jednego lub wielu plików danych. obszar tabel jest definiowany przy określonym rozmiarze bloku i ogólnie wszystkie obszary tabel w bazie danych Oracle będą miały wspólne rozmiary bloków. 8kb jest najczęściej wybieranym.

Przechowywanie indeksów, tabel, klastrów itp. Jest reprezentowane jako segmenty. Pojedynczy segment zostanie przypisany do pojedynczego obszaru tabel, ale może być rozłożony na wiele plików danych. Niepodzielona na partycje tabela lub indeks będą miały pojedynczy segment. W przypadku tabeli lub indeksu podzielonej na partycje każda partycja lub podpartycja będzie pojedynczym segmentem.

Segmenty są zbudowane z obszarów, które są logicznie ciągłymi zestawami bloków. Nowe zakresy są przydzielane do segmentów ręcznie lub automatycznie zgodnie z wymaganiami modeli wzrostu.