Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



17.09.2019

PLNOG23 czyli sieci 5G,...

Największa polska konferencja telekomunikacyjna powraca do Krakowa! Wśród nowości ścieżka...
05.09.2019

Cloudya – nowa usługa NFON

Po ponad dekadzie ciągłego rozwoju technologii Cloudya, swobodna i niczym nie ograniczona...
02.09.2019

Na dużą skalę

Kaspersky Hybrid Cloud Security
02.09.2019

Bezpieczny brzeg sieci

Fortinet Secure SD-Branch
02.09.2019

Nowoczesne centra danych

AMD EPYC
30.08.2019

Dostęp do AI i ML

VMware Cloud Foundation
30.08.2019

Lekkość i moc

Toshiba Portégé A30-E
30.08.2019

Bez przestojów

APC Easy UPS On-Line
29.08.2019

Duże moce

Lenovo ThinkSystem SR635 i SR655

Oracle Database – składowanie danych

Data publikacji: 23-05-2019 Autor: Kamil Stawiarski

Wbrew coraz powszechniejszej opinii systemy bazodanowe nie są jedynie repozytorium do przechowywania danych – w znakomitej większości przypadków są to skomplikowane byty o złożonym systemie operacyjnym. Baza danych Oracle nie tylko nie jest tu wyjątkiem, ale wręcz wyróżnia się ogromem opcji i możliwościami parametryzacji. Nietrudno więc o dużą liczbę półprawd, mitów i uogólnień, które znajdują się w internecie.

 

W cyklu artykułów poświęconych optymalizacji wydajności opiszemy zasady metodycznego podejścia do zagadnienia performance tuningu i wyjaśnimy tajniki budowy systemu bazodanowego Oracle, których znajomość jest niezbędna do podejmowania właściwych decyzji.

> OPTYMALIZACJA – DOMENA PROGRAMISTY CZY ADMINISTRATORA?

Jednym z mitów – i to mitów podtrzymywanych przez producentów systemów – jest podział na wiedzę administratora, która ma być niezależna od wiedzy programisty. Widać to m.in. w szkoleniach proponowanych przez firmy na rynku – są osobne kursy z optymalizacji wydajności dla programisty, a osobne dla administratora. Utrzymywanie takiego podziału prowadzi do tego, że ani jeden, ani drugi nie ma kompletnej wiedzy z zakresu budowy produktu, co oznacza brak umiejętności trafnego postawienia diagnozy, która jest podstawą rozwiązania problemu.

W tej serii artykułów nie będziemy stosowali tego rozgraniczenia – opiszemy architekturę kluczowych elementów systemu bazodanowego Oracle, co pozwoli na zrozumienie wskazań rozbudowanego systemu instrumentacji, składającego się ze statystyk i zdarzeń oczekiwania.

> ORACLOWE YIN-YANG

W każdej filozofii spotykamy równowagę przeciwieństw budujących byt. Podświadomie ta koncepcja przenika też do tworów produkowanych przez człowieka – bądź zastosowanie tej analogii pozwala często lepiej zrozumieć uzupełniające się elementy budowy badanego zagadnienia lub systemu.

W przypadku budowy serwera bazodanowego Oracle możemy wskazać dwa główne pierwiastki uzupełniające się wzajemnie, choć będące swoimi przeciwieństwami – system buforów pamięci i system fizycznego dostępu do danych.

W pierwszej części serii o optymalizacji wydajności opiszemy podstawy budowy systemu składowania danych, którego wydajność będziemy mierzyć głównie wskazaniami klasy zdarzeń oczekiwania User I/O.

Zanim jednak przejdziemy do mierzenia wydajności, skupimy się na architekturze podstawowego budulca fizycznego bazy danych Oracle, czyli na bloku. Pokażemy też, w jaki sposób Oracle przechowuje poszczególne typy danych.

> POZA WIERSZ I KOLUMNĘ

Dla wielu programistów wiedza na temat składowania danych w bazie kończy się na fakcie przechowywania danych w postaci wierszy i kolumn w tabelach. Brak zrozumienia logiki przechowywania danych na niskim poziomie oraz binarnej reprezentacji typów danych prowadzi do wielu karygodnych błędów.

Przyjrzyjmy się przykładowej definicji tabeli składającej się ze standardowego typu numerycznego, znakowego stałego, znakowego zmiennego oraz daty:

 

 

Każdy logiczny obiekt (np. tabela czy indeks) jest reprezentowany na poziomie fizycznym przez tzw. segment, który składa się na poziomie dyskowym z bloków. Rozmiar bloku deklaruje się w trakcie tworzenia bazy danych, a jego standardowy rozmiar wynosi 8 KB.

Nasza tabela na samym początku będzie miała przynajmniej jeden blok danych, w którym zostanie zaalokowany jeden wiersz. Niskopoziomowej reprezentacji naszego wiersza przyjrzymy się z wykorzystaniem narzędzia RICO2 – jego użytkowanie jest wzorowane na narzędziu BBED, jednak ma kilka zmodyfikowanych funkcji. Można je zobaczyć na Git­Hubie: github.com/ora600pl/rico2.

Żeby znaleźć odpowiedni blok i plik do edycji, odkodujemy numer pliku oraz bloku, w którym znajduje się nasz wiersz, za pomocą ROWID. Jest to unikalny identyfikator wiersza w całej bazie, w którym w systemie Base64 zakodowano identyfikator obiektu, identyfikator pliku, identyfikator bloku oraz identyfikator wiersza wewnątrz bloku.

 

 

Widzimy, że nasz wiersz znajduje się w bloku numer 134 w pliku, którego relatywny numer to 12, a absolutny 28. Możemy przygotować narzędzie RICO2 do pracy i je uruchomić:

 

 

Następnie ustawiamy wskaźnik narzędzia na odpowiednim bloku i wyświetlamy mapę bloku:

 

 

Mamy w bloku jeden wiersz i jak pokazuje nam struktura kdbr, która jest tak naprawdę kolekcją wskaźników, mamy w bloku jeden wskaźnik do wiersza. W tej serii artykułów nie będziemy się skupiać na wszystkich strukturach, ale jedynie przyjrzymy się temu, jak Oracle przechowuje binarnie poszczególne typy danych.

 

Znając typy danych, możemy wyświetlić reprezentację wiersza w następujący sposób:

 

 

> TYP NUMBER

Pierwszą rzeczą, która rzuca się w oczy, jest zapis typu NUMBER. Oracle ze względu na ograniczenia związane z błędami zaokrągleń typów zmiennoprzecinkowych, optymalizację miejsca oraz przenoszalność między różnymi platformami zdecydował się użyć typu bazującego na konwencji Decimal, który jest zmiennej długości i pozostaje niezależny od platformy, na której są składowane i interpretowane pliki danych – mówiąc wprost: obliczenia na typie NUMBER nie zależą bezpośrednio od procesora, ponieważ ten typ jest traktowany jako tablica zmiennej długości, na której obliczenia odbywają się bezpośrednio w bibliotekach bazy Oracle.

Żeby zweryfikować problem zaokrągleń dla typów zmiennoprzecinkowych, wystarczy stworzyć prosty program w C++.

 

[...]

 

Laureat Oracle ACE Director i członek stowarzyszenia Oracle OakTable zrzeszającego ok. 100 najlepszych specjalistów na świecie. 

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"