Download: SysadminIbm

Transkrypt

Download: SysadminIbm
Konfiguracja DB2
SYSADMIN
Konfigurujemy IBM DB2
BAZA
POD KONTROLĄ
Uzyskanie optymalnej konfiguracji bazy danych wymaga obserwacji działającego już systemu.
Zanim jednak weźmiemy system pod lupę, nasza baza powinna być już skonfigurowana,
by nie zaczynać pracy od zera...
ARTUR WROŃSKI
W
ydajność bazy danych IBM DB2
zależy od wielu elementów, na
przykład od wykorzystywanego
sprzętu, konstrukcji aplikacji, rodzaju przetwarzania oraz od konfiguracji samej bazy danych. Baza danych utworzona z domniemanym zestawem parametrów jest zorientowana
na oszczędne wykorzystanie zasobów, dlatego
też powinniśmy zmodyfikować parametry
IBM DB2, tak by współgrały z wykorzystywanym środowiskiem. Przygotowanie właściwego
zestawu parametrów bazy danych można podzielić na dwa etapy:
– Wstępną konfigurację, w której parametry dobierane są na podstawie informacji
o używanym sprzęcie i o planowanym wykorzystaniu bazy danych.
– Strojenie zasadnicze, w którym obserwowane jest zachowanie systemu i dokonywane
są odpowiednie korekty konfiguracji.
W dalszej części artykułu zapoznamy się
z kluczowymi elementami konfiguracji IBM
DB2, które powinniśmy uwzględnić w pierwszej kolejności.
Tworzenie bazy danych
By utworzyć nową bazę danych wystarczy,
jeśli podłączymy się do systemu Linux jako
właściciel instancji IBM DB2 (zwykle
db2inst1) i w oknie terminala wykonamy polecenie:
db2 create database baza1
Może to potrwać od kilku do kilkudziesięciu
sekund, zależnie od wydajności komputera, na
którym wykonujemy polecenie. Podczas tworzenia bazy danych wykonywanych jest wiele
czynności. Między innymi alokowane są trzy
tzw. obszary tablicowe, bez których baza danych IBM DB2 nie mogłaby funkcjonować:
– Obszar danych systemowych (tzw. katalog systemowy), w którym przechowywane są
informacje o obiektach związanych z bazą
danych. W tej przestrzeni przechowywane są
informacje o definicji tabel, indeksów, widoków, itp.
– Obszar tymczasowych danych systemo wych. W tej przestrzeni przechowywane są
pośrednie wyniki zapytań, na przykład, jeśli
zajdzie konieczność posortowania lub złączenia dużej liczby wierszy.
– Obszar danych użytkownika, czyli miejsce na tabele i indeksy wykorzystywane przez
aplikacje.
Wszystkie te obszary tworzone są na ścieżce, na której powstaje baza danych. Jeśli nie
podamy takiej ścieżki jawnie, wtedy baza danych tworzona jest w katalogu domowym
właściciela instancji, czyli przykładowo
w katalogu /home/db2inst1.
Wybór katalogu, w którym będą znajdowały się pliki bazy danych jest pierwszą ważną
decyzją. Powinniśmy wybrać system plików
o stosownej pojemności oraz odpowiednich
parametrach wydajnościowych. Warto
uwzględnić nie tylko same parametry dysków czy liczbę wykorzystanych kontrolerów,
WWW.LINUX-MAGAZINE.PL
ale przede wszystkim ilość dysków. Bazy danych czytają informacje z dysków zwykle
małymi porcjami, często w blokach po kilka
bądź kilkanaście kilobajtów. Głowica dysku
jest wykonana z elementów mechanicznych
i nie może zmieniać swojej pozycji częściej
niż kilkadziesiąt do kilkuset razy na sekundę. Dlatego też w praktyce, by zapewnić wydajną obsługę znacznej liczby transakcji, wykorzystuje się dużą liczbę dysków. Średnio
od kilku do kilkunastu na jeden procesor.
Odpowiednia optymalizacja wykorzystania zasobów dyskowych jest jednym z ważniejszych elementów wpływających na wydajność bazy danych. IBM DB2 oferuje elastyczne mechanizmy konfiguracji przestrzeni dyskowych. Nie musimy znać zapotrzebowania na ilość miejsca i wydajność dysków
w momencie tworzenia bazy danych. Koniecznie jednak powinniśmy zaprojektować
i utworzyć odpowiednie obszary tabel jeszcze
przed załadowaniem danych do bazy.
Wygodną metodą utworzenia nowej przestrzeni tablicowej jest wykorzystanie odpowiedniego kreatora, dostępnego w narzędziu
do administracji bazami IBM DB2 – Centrum
Sterowania (ang. Control Center).
Centrum Sterowania uruchomimy poleceniem db2cc. Jeśli rozwiniemy drzewo obiektów dla wcześniej utworzonej bazy danych
i w lewej części okna zaznaczymy „Obszary
tabel”, to w prawej górnej części ekranu uzyskamy listę utworzonych już wcześniej przestrzeni, tak jak na Rysunku1.
NUMER 15 KWIECIEŃ 2005
73
SYSADMIN
Konfiguracja DB2
Rysunek 1: Centrum Sterowania wykorzystuje API IBM DB2 i pozwala na wykonanie wszystkich
zwiększać i zmniejszać istniejące. Operacje takie można wykonywać na pracującej bazie,
także wtedy, jeśli kontenery zawierają już dane
– w takim przypadku dane są automatycznie
przenoszone w wolne miejsce.
Dla optymalnej wydajności bazy danych,
dane użytkownika powinny być umieszczone
na przestrzeni zarządzanej przez bazę DMS.
Katalogi systemowe oraz systemowe tabele
tymczasowe powinny jednak pozostać na obszarach SMS. Katalogi systemowe zawierają
obiekty binarne, tzw. BLOB-y, które z definicji nie są buforowane przez IBM DB2,
a w przypadku obszarów SMS mogą być buforowane przez system operacyjny. W aplikacjach zorientowanych na przetwarzanie
transakcji nie ma konieczności przechowywania dużych struktur pośrednich, więc obszar typu SMS w zupełności wystarczy.
operacji administracyjnych.
Klikając prawym klawiszem na obiekt
„Obszary tabel” i wybierając z menu
„Utwórz...”, uruchomimy kreatora tworzenia
obszaru tabel.
Kreator składa się z kilku ekranów, które
krok po kroku pozwolą doprecyzować poszczególne parametry tworzonej przestrzeni
tablicowej. Każdy ekran zawiera szczegółowe
objaśnienia, więc początkujący użytkownicy
nie powinni mieć żadnych problemów
z utworzeniem nowej przestrzeni tablic.
Obszary SMS i DMS
Obszary tabel mogą być zarządzane dwoma
mechanizmami, o zupełnie różnych możliwościach:
– zarządzane przez system operacyjny – SMS
(ang. System Managed Space), albo
– zarządzane przez bazę danych – DMS
(ang. Database Managed Space).
Pierwszą różnicę pomiędzy tymi obszarami zauważymy już w momencie definicji
miejsca (kontenerów), w którym będą przechowywane dane. Dla obszaru SMS podaje
się tylko katalog, natomiast dla obszaru
DMS podaje się plik bądź urządzenie surowe
i jednocześnie określa się rozmiar kontenera.
Obszary SMS nie wymagają obsługi, gdyż
w podanym katalogu baza sama tworzy odpowiednie pliki, które są automatyczne rozszerzane i kurczone. Administrator musi jedynie zagwarantować odpowiednią ilość
miejsca na danym systemie plików. Nazwa
obszaru SMS bierze się stąd, że system operacyjny sprawuje bezpośrednią kontrolę nad
plikiem, przykładowo dane czytane przez
74
NUMER 15 KWIECIEŃ 2005
bazę przechodzą przez bufor systemu plików
Linuksa.
Obszary DMS dają większą kontrolę i oferują większą wydajność, szczególnie dla dużej
ilości danych. Szybsze jest wstawianie danych,
ponieważ miejsce na dysku jest zarezerwowane w momencie tworzenia przestrzeni i nie
musi być ciągle powiększane. Mechanizm czytania i pisania danych z DMS pozwala na ominięcie bufora plików systemu operacyjnego
(klauzula NO FILE SYSTEM CACHING
składni tworzenia przestrzeni tablicowych), co
zapobiega podwójnemu buforowaniu danych.
Możliwość wykorzystania surowych urządzeń,
czyli znakowych wolumenów logicznych bez
założonego systemu plików, dodatkowo pozwala na ominięcie narzutu sytemu plików.
Obszary DMS oferują także możliwość wykonywania częściowych archiwów na poziomie
obszaru tabel. Administrator ma pełną kontrolę nad kontenerami obszaru DMS, w dowolnym momencie może dodawać nowe, usuwać,
Rozmiar strony i wielkość
przydziału
Definiując obszary tabel, warto także zwrócić
uwagę na rozmiar strony oraz wielkość przydziału (extent), ponieważ są to parametry,
które można określić wyłącznie w momencie
tworzenia obszaru. Rozmiar strony definiuje
podstawową jednostkę czytania i pisania
z obszaru tabel. Dostępne są następujące rozmiary stron: 4 KB, 8 KB, 16 KB i 32 KB. Rozmiar strony wpływa na maksymalny rozmiar
przestrzeni tablicowej (dokładniej pojedynczej partycji przestrzeni tablicowej), który
przykładowo dla strony 4 KB wynosi 64 GB
oraz 512 GB dla strony 32 KB. W systemach
przetwarzania transakcyjnego mniejszy rozmiar strony jest bardziej odpowiedni, gdyż
jednorazowo czytane są niewielkie porcje danych. Dla systemów wspomagania decyzji
bardziej odpowiednie będą większe rozmiary
stron, ze względu na sekwencyjne odczyty odwołujące się do znacznej części danych.
Rysunek 2: Kreator tworzenia obszaru jest bardzo przydatny dla początkujących użytkowników.
WWW.LINUX-MAGAZINE.PL
Konfiguracja DB2
stępny jest przycisk „Pokaż SQL”, którym
możemy podejrzeć składnię wykonywanej
operacji. Tak przygotowane polecenie możemy zapisać na dysk i wykonać później, np.
korzystając z tekstowego interpretera db2.
Równoległa obsługa
dysków
Rysunek 3: IBM DB2 rozrzuca kolejne
extenty na dostępne kontenery.
Warto jeszcze wspomnieć o obowiązującej
regule, że każdy obszar tabel musi być skojarzony z jedną pulą buforów o takim samym
rozmiarze strony. Razem z bazą danych tworzona jest niewielka domniemana pula buforów IBMDEFAULTBP, służąca do buforowania obszarów o 4 KB rozmiarze stron. Jeśli
tworzony jest obszar o innym niż 4 KB rozmiarze strony, wtedy wcześniej należy utworzyć odpowiednią pulę buforów o takim samym rozmiarze strony. Można zrobić to także bezpośrednio z kreatora tworzenia przestrzeni tabel. Pule buforów mają kluczowy
wpływ na wydajność bazy danych, gdyż są
pamięcią podręczną optymalizującą dostęp
do dysku. IBM DB2 pozwala na tworzenie
wielu pul buforów i dynamiczne przywiązywanie ich do wybranych obszarów tabel.
Właściwe strojenie pamięci podręcznej bazy
należy wykonać obserwując zachowanie obciążonego systemu. Na starcie warto przydzielić ok. 10-20% pamięci operacyjnej komputera na potrzeby buforowania danych.
Extent określa rozmiar bloku, o jaki będzie rozszerzana tabela przy wstawianiu danych. Rozmiar extentu ma szczególne znaczenie, jeśli obszar tabel składa się z wielu
kontenerów. W takim przypadku, IBM DB2
będzie rozmieszczać kolejne extenty na dostępnych kontenerach. Jak zilustrowano na
Rysunku 3 pierwszy extent zostanie przydzielony na pierwszym kontenerze przestrzeni tablicowej, drugi na drugim, trzeci na
trzecim, a czwarty z powrotem na pierwszym
kontenerze, itd. Taki mechanizm obsługi
dysków pozwala na równomierny rozkład danych oraz zrównoważone obciążenie dysków.
Kreator tworzenia obszaru tabel, podobnie
jak kreatory innych obiektów, nie tylko ułatwia wykonanie danego zadania, ale także
jest bardzo pomocny w poznawaniu składni
poleceń. Na ostatnim ekranie kreatora do-
Jeśli zdefiniujemy przestrzeń dyskową składającą się z więcej niż jednego kontenera,
wtedy IBM DB2 będzie równolegle obsługiwać wszystkie dostępne kontenery. By
w maksymalnym stopniu wykorzystać możliwości systemu dyskowego, należy skonfigurować odpowiednią liczbę procesów piszących (NUM_IO_CLEANERS) i czytających
(NUM_IOSERVERS). Wartości tych parametrów zależą od wykorzystywanego sprzętu
oraz od sposobu korzystania z bazy. Startowe
wartości powinny być ustawione według następującej reguły:
SYSADMIN
Jeśli przestrzeń tablicowa tworzona jest na
macierzy dyskowej, wtedy najlepiej zdefiniować tylko jeden kontener i jednocześnie poinstruować bazę, by wykonywała równolegle
operacje dyskowe na jednym kontenerze.
Włączenie tej funkcji odbywa się przez ustawienie zmiennej rejestrowej IBM DB2_PARALLEL_IO. Zmienna ta czytana jest przy
starcie instancji, dlatego też, by włączyć tę
funkcjonalność, należy powtórnie wystartować motor bazy danych (polecenia: db2stop,
db2start).
Jeśli chcemy uaktywnić równoległe operacje na pojedynczym kontenerze dla wybranych obszarów tablicowych, wtedy ustawiając zmienną IBM DB2_PARALLEL_IO,
musimy podać listę obszarów przedzieloną
przecinkami:
db2set IBM DB2_PARALLEL_IO=U
"DANE1,INDEKSY1"
Rysunek 4: Podgląd składni pozwala precyzyjne zweryfikować wykonywaną operację.
NUM_IOSERVERS = liczba fizycznych dysków,
lecz nie mniej niż trzy i nie więcej niż liczba dostępnych procesorów przemnożona przez pięć,
NUM_IO_CLEANERS = liczba procesorów.
Poniższe polecenia możemy wykorzystać
do ustalenia startowej liczby procesów obsługi We/Wy, przy założeniu, że konfigurowana baza pracuje na komputerze z dwoma
procesorami i sześcioma dyskami:
db2 update db cfg for baza1 usingU
NUM_IOSERVERS 6
db2 update db cfg for baza1 usingU
NUM_IOCLEANERS 2
WWW.LINUX-MAGAZINE.PL
Jeśli zamierzamy włączyć tę funkcję dla
wszystkich obszarów tablicowych, wtedy należy użyć gwiazdki:
db2set IBM DB2_PARALLEL_IO="*"
Dziennik transakcji
Podczas tworzenia bazy danych powstają
także pliki dziennika transakcji, w których
zapisywane są informacje o dokonywanych
w bazie modyfikacjach. Baza danych wykorzystuje dziennik transakcji do wycofywania transakcji (SQL-owa komenda
ROLLBACK) oraz do przywracania syste-
NUMER 15 KWIECIEŃ 2005
75
SYSADMIN
Konfiguracja DB2
mu do spójnej postaci po awarii. Obszar
protokołowania (inne określenie nazwy
dziennika transakcji) jest także elementem archiwum i pozwala na odtworzenie
stanu bazy danych na dowolny punkt
w czasie. Protokołowanie powinno być odpowiednio skonfigurowane zaraz po utworzeniu bazy danych. Przy jego konfiguracji
powinniśmy:
– wybrać lokalizację. Standardowo dziennik transakcji znajduje się na ścieżce bazy
danych. Jeśli jest taka możliwość najlepiej,
gdy umieścimy dziennik transakcji na osobnym dysku. Każde zatwierdzenie transakcji
(COMMIT) inicjuje zapis bufora dziennika
transakcji na dysk. Jednocześnie wstrzymywana jest obsługa danej aplikacji, aż do momentu uzyskania potwierdzenia, że bufor
dziennika transakcji znalazł się na dysku.
Protokołowanie ma charakter sekwencyjny
(dopisywanie do pliku) i dla uzyskania najlepszej wydajności nie powinno być zakłócane przez inne procesy.
– określić rozmiar, czyli rozmiar pojedynczego pliku oraz ilość plików dziennika. Rozmiar dziennika transakcji ma wpływ na wielkość pojedynczej transakcji, która musi się
zmieścić w dostępnym obszarze dziennika.
Jeśli ten warunek nie może być zachowany,
wtedy taka transakcja jest wycofywana przez
system (ROLLBACK).
– określić tryb pracy. Dostępne są dwa tryby: cykliczny oraz archiwalny. Tylko tryb archiwalny pozwala na wykonywanie archiwów
na obciążonej bazie danych oraz późniejsze
odtwarzanie systemu do określonego punku
w czasie. Wybierając tryb archiwalny, musimy także wybrać metodę archiwacji starych
pliktów dziennika: automatyczną, ręczną
Rysunek 5: Parametry dziennika transakcji mogą być łatwo skonfigurowane przy pomocy
kreatora protokołowania.
bądź opartą o sparametryzowany program
USEREXIT.
Dziennik transakcji najłatwiej skonfigurować przy pomocy odpowiedniego kreatora.
Z poziomu Centrum Sterowania klikamy
prawym klawiszem nad konfigurowaną bazą
danych i wybieramy „Konfiguruj protokołowanie w bazie danych...”
Konfiguracja pozostałych
parametrów
IBM DB2 posiada wiele parametrów, które
pozwalają na precyzyjne dostrojenie systemu. Dla osoby, która dopiero stawia pierw-
sze kroki z IBM DB2, przygotowanie odpowiedniego zestawu parametrów startowych
może wydawać się skomplikowane. Z myślą
o takich osobach został przygotowany „Doradca konfigurowania”, który znacznie ułatwia ten proces. Narzędzie zbiera informacje o ilości pamięci, która ma być przeznaczona dla IBM DB2, rodzaju przetwarzania,
ilości poleceń SQL przypadających na jedną
transakcję, oczekiwanej przepustowość
transakcji oraz liczbie aplikacji. Na podstawie zebranych odpowiedzi narzędzie sugeruje odpowiedni zestaw parametrów. Wynikowe zmiany konfiguracji możemy zastosować od razu, bądź zapisać do pliku w celu
późniejszego wykonania. „Doradca konfigurowania” jest bardzo pomocny nie tylko
w przygotowaniu właściwego zestawu parametrów, ale także w zrozumieniu, które parametry należy zmienić dla określonych warunków obciążenia.
Więcej informacji na temat IBM DB2 i Linux jest dostępnych pod adresem [1]. Wiele
ciekawych artykułów o strojeniu IBM DB2
można znaleźć na stronach developerWorks
[2] oraz DB2 Magazine[3].
■
INFO
[1] http://www.ibm.com/db2/linux/
[2] http://www.ibm.com/developerworks/db2
Rysunek 6: Przygotowanie startowego zestawu parametrów IBM DB2 wcale nie musi być trudne.
76
NUMER 15 KWIECIEŃ 2005
WWW.LINUX-MAGAZINE.PL
[3] http://www.db2magazine.com/

Podobne dokumenty