Klastry
Klastry to opcjonalna metoda przechowywania danych w tabeli. Klaster to grupa tabel, które współdzielą te same bloki danych, ponieważ mają wspólne kolumny i są często używane razem. Na przykład tabele employees i departments współdzielą kolumnę department_id. Podczas grupowania tabel employees i departments Oracle fizycznie przechowuje wszystkie wiersze dla każdego działu z tabel employees i departments w tych samych blokach danych.
Ponieważ klastry przechowują powiązane wiersze różnych tabel razem w tych samych blokach danych, właściwie używane klastry oferują następujące korzyści:- zmniejszenie dyskowych operacji we/wy w przypadku łączenia tabel klastrowych,
- skrócenie czasu dostępu dla złączeń tabel klastrowych.
W klastrze, wartość klucza klastra jest wartością kolumn kluczy klastra dla określonego wiersza. Każda wartość klucza klastra jest przechowywana tylko raz w klastrze i indeksie klastra, bez względu na to, ile wierszy różnych tabel zawiera tę wartość. Dlatego do przechowywania powiązanych tabel i danych indeksowych w klastrze potrzeba mniej miejsca niż w przypadku tabeli nieklastrowanej. Na powyższym obrazie widać, że każdy klucz klastra (każdy department_id) jest przechowywany tylko raz dla wielu wierszy zawierających tę samą wartość w tabelach employees i departments.
Klastry typu hash
Klastry typu hash grupują dane w tabeli w sposób podobny do zwykłych klastrów indeksowych (klastry z kluczem indeksowanym, a nie funkcją hashującą). Wiersz jest przechowywany w klastrze typu hash na podstawie wyniku zastosowania funkcji hashującej na wartości klucza wiersza w klastrze. Wszystkie wiersze z tą samą wartością klucza są przechowywane razem na dysku.
Klastry typu hash są lepszym wyborem niż używanie indeksowanej tabeli lub indeksowanego klastra, gdy tabela jest często odpytywana za pomocą zapytań ze znakiem '=' w warunku (na przykład daj wszystkie wiersze dla department_id=10). W przypadku takich zapytań określona wartość klucza klastra jest zahaszowana. Wynikowa zahaszowana wartość klucza wskazuje bezpośrednio na obszar dysku, w którym są przechowywane wiersze.
Haszowanie to opcjonalny sposób przechowywania danych w tabeli w celu poprawy wydajności pobierania danych. Aby użyć funkcji hashującej, utwórz klaster typu hash i wczytaj tabele do klastra. Baza danych Oracle fizycznie przechowuje wiersze tabeli w klastrze typu hash i pobiera je zgodnie z wynikami funkcji hashującej.
Posortowane klastry typu hash umożliwiają szybsze pobieranie danych przez aplikacje, w których dane są używane w kolejności, w jakiej zostały wczytane.
Oracle używa funkcji hashującej do generowania rozkładu wartości liczbowych (hash values), które są oparte na określonych wartościach kluczy klastra. Klucz klastra typu hash, podobnie jak klucz indeksowanego klastra, może być kluczem jednokolumnowym lub złożonym (kluczem wielokolumnowym). Aby znaleźć lub zapisać wiersz w klastrze typu hash, Oracle stosuje funkcję hashującą na wartości klucza wiersza klastra. Wynikowa wartość hash odpowiada blokowi danych w klastrze, który baza danych następnie odczytuje lub zapisuje dla danego zapytania.
Klaster typu hash jest alternatywą dla indeksowanej tabeli nieklastrowanej lub indeksowanego klastra. W przypadku indeksowanej tabeli lub indeksowanego klastra Oracle lokalizuje wiersze w tabeli przy użyciu wartości kluczy przechowywanych przez bazę danych w osobnym indeksie. Aby znaleźć lub zapisać wiersz w indeksowanej tabeli lub klastrze, należy wykonać co najmniej dwa operacje we/wy:
- jedną lub więcej operacji we/wy do znalezienia lub zapisania wartości klucza w indeksie,
- kolejną operację we/wy do odczytu lub zapisu wiersza w tabeli lub klastrze.
Komentarze
Prześlij komentarz