PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Podobne dokumenty
PODSTAWY BAZ DANYCH Wykład Partycjonowanie tabel i indeksów

Partycjonowanie tabel (1)

Partycjonowanie. Partycjonowanie tabel (1)

Hurtownie danych - przegląd technologii

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

ORACLE partycjonowanie

Język SQL, zajęcia nr 1

Autor: Joanna Karwowska

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy danych - Materiały do laboratoriów VIII

Wykład 5. SQL praca z tabelami 2

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Projektowanie systemów baz danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Wykład 4. SQL praca z tabelami 1

Zastosowania tabel o strukturze indeksu - IOT (Index Organized Table)

Wykład 8. SQL praca z tabelami 5

Nowe technologie baz danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Zadania do wykonania na laboratorium

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Modelowanie wymiarów

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Bazy danych 7. SQL podstawy

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Bazy danych 6. Klucze obce. P. F. Góra

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 05 Bazy danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Modele danych - wykład V. Zagadnienia. 1. Wprowadzenie 2. MOLAP modele danych 3. ROLAP modele danych 4. Podsumowanie 5. Zadanie fajne WPROWADZENIE

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Modele danych - wykład V

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ref. 7 - Język SQL - polecenia DDL i DML

Oracle10g Database: struktury fizyczne dla hurtowni danych

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Bazy Danych i Usługi Sieciowe

Bazy danych. Polecenia SQL

12. Które z harmonogramów transakcji są szeregowalne? a) (a1) (a2) (a3) (a4) b) (b1) (b2) (b3) (b4) c) (c1) (c2) (c3) (c4) d) (d1) (d2) (d3) (d4)

Paweł Rajba

Bazy danych. dr inż. Arkadiusz Mirakowski

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Bazy danych i usługi sieciowe

Indeksy. Indeks typu B drzewo

Architektura Systemu Zarządzania Bazą Danych Oracle

P o d s t a w y j ę z y k a S Q L

Bazy danych 10. SQL Widoki

Bazy danych 9. SQL Klucze obce Transakcje

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Zarządzanie obiektami bazy danych Oracle11g

Bazy danych. Dr inż. Paweł Kasprowski

Instalacja MySQL.

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

BAZY DANYCH Cz III. Transakcje, Triggery

Internetowe bazy danych

TESTU NIE MUSZA BYC W 100% POPRAWNE!!!

Bazy danych i usługi sieciowe

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

select zam_id, cena_euro,(rank() over (partition by zam_id order by cena_euro)) from pozycjezamowien order by zam_id

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Wykład 6. SQL praca z tabelami 3

PODSTAWY BAZ DANYCH. 7. Metody Implementacji Baz Danych. 2009/ Notatki do wykładu "Podstawy baz danych" 1

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

20 października Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład II

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Język SQL podstawy zapytań

Oracle11g: Wprowadzenie do SQL

Język zapytań SQL- język relacyjnych baz danych

1 DML - modyfikacja 1. 2 DDL - definicja struktur Definiowanie tabel Więzy integralności Modyfikacja definicji...

Bazy danych Język SQL część 1 Wykład dla studentów matem

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Indeksowanie w bazach danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Oracle 12.2 Database Sharding

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Cwiczenie 4. Połączenia, struktury dodatkowe

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Transkrypt:

PODSTAWY BAZ DANYCH 10. Partycjonowanie tabel i indeksów 1

Partycjonowanie tabel i indeksów w Oracle W celu poprawienia efektywności dostępu do danych oraz ułatwieniu zarządzania bardzo dużymi zbiorami danych w Oracle wprowadzone zostały nowe struktury danych: 1. Partycjonowane tabele i indeksy 2. Tabele indeksy Przy wyborze systemu zarządzania bazą danych należy brać pod uwagę istnienie podobnych rozwiązań, które przy dużych bazach danych będą miały wpływ na wydajność systemu bazodanowego. 2

Partycjonowanie tabel i indeksów w Oracle 3

Partycjonowanie tabel w Oracle CREATE TABLE faktury nr_faktury NUMBER5) PRIMARY KEY, id_klienta NUMBER3)NOT NULL, data_wystawienia DATE NOT NULL, kwota NUMBER8,2) NOT NULL ) PARTITION BY RANGEdata_wystawienia) PARTITION m_10_2003 VALUES LESS THAN TO_DATE 01/11/2003, dd/mm/yyyy )) TABLESPACE ts10; PARTITION m_11_2003 VALUES LESS THAN TO_DATE 01/12/2003, dd/mm/yyyy )) TABLESPACE ts11; PARTITION nadmiar VALUES LESS THAN MAXVALUE) TABLESPACE tsnadmiar; ); 4

Partycjonowanie tabel w Oracle Partycje muszą być definiowane w kolejności rosnącej wartości atrybutu partycjonującego. W przypadku braku partycji nadmiar, gdy wstawiany wiersz nie pasuje do żadnej istniejącej partycji zgłoszony będzie błąd i wiersz nie zostanie wstawiony. Ograniczenia: 1. Nie można modyfikować wartości atrybutu partycjonującego o ile spowoduje to konieczność przeniesienie wiersza do innej partycji. Wtedy należy wiersz usunąć i ponownie wstawić z nową wartością atrybutu. 2. Nie można wstawić wiersza nie mieszczącego się na żadnej partycji w przypadku braku partycji nadmiar). 5

Odwoływanie się do tabel partycjonowanych Tradycyjnie SELECT * FROM faktury WHERE warunek; Wybór z odpowiedniej partycji SELECT * FROM faktury PARTITIONm_10_2003) WHERE warunek; Nowe polecenia SQL służące do zarządzania partycjonowanymi tabelami. Są to polecenia z grupy ALTER TABLE: ADD PARTITION,DROP PARTITION, TRUNCATE PARTITION, SPLIT PARTITION, 6

Partycjonowanie tabel w Oracle przykłady modyfikowania tabel Podział partycji ALTER TABLE faktury SPLIT PARTITION nadmiar AT TO_DATE 01/01/2004, dd/mm/yyyy ))INTO PARTITION m_12_2003, PARTITION nadmiar ); Usunięcie wierszy z partycji ALTER TABLE faktury TRUNCATE PARTITION nadmiar; Jest to bardziej optymalne rozwiązanie niż usuwanie wierszy poleceniem DELETE. 7

Partycjonowanie tabel w Oracle przykłady modyfikowania tabel Usunięcie partycji ALTER TABLE faktury DROP PARTITION nadmiar; Dodanie partycji ALTER TABLE faktury ADD PARTITION nadmiar LESS THAN maxvalue) TABLESPACE tsnadmiar; 8

Partycjonowanie indeksów w Oracle Można wyróżnić następujące rodzaje partycjonowania indeksów: Lokalne - zgodne z partycjami tabel; Globalne- niezgodne z partycjami tabel; Przykład. Indeks lokalny CREATE BITMAP INDEX idx_klient ON faktury id_klienta) LOCAL; Powstanie indeks lokalny rozdzielony identycznie jak tabela według atrybutu data_wystawienia). 9

Partycjonowanie indeksów w Oracle Przykład. Indeks globalny CREATE INDEX idx_faktury ON faktury id_faktury) GLOBAL PARTITION BY RANGE id_faktury) PARTITION p_1 VALUES LESS THAN 500), PARTITION nadmiar VALUES LESS THAN maxvalue) ); Powstanie indeks globalny rozdzielony inaczej jak partycjonowana tabela faktury. 10

Tabele - indeksy w Oracle W Oracle dostępne są możliwości tworzenia tabel, które będą zorganizowane w postaci B*-drzewa. CREATE TABLE nazwa_tabeli atrybut [,atrybut [,atrybut] ] ) ORGANIZATION INDEX [ PCTTHRESHOLD n] [ OVERFLOW TABLESPACE przestrzeń_tabel ]; gdzie: n - oznacza rozmiar wiersza w procencie rozmiaru bloku, powyżej którego jego atrybuty niekluczowe są przechowywane w oddzielnym segmencie; przestrzeń_tabel - nazwa przestrzeni tabel tablespace), w której zapisany zostanie segment z nadmiarowymi fragmentami wiersza; 11

Partycjonowanie tabel w Oracle według wielu atrybutów - przykład Można również tworzyć partycje według wielu atrybutów. Przykład. CREATE TABLE dostawca_czesci dostawca_id NUMBER, num_czesci NUMBER, cena NUMBER ) PARTITION BY RANGE dostawca_id, num_czesci) PARTITION p1 VALUES LESS THAN 10,100), PARTITION p2 VALUES LESS THAN 10,200), PARTITION p3 VALUES LESS THAN MAXVALUE,MAXVALUE) ); 12

Partycjonowanie tabel w Oracle według wielu atrybutów - przykład CREATE TABLE sprzedaz rok NUMBER, miesiac NUMBER, dzien NUMBER, ilosc NUMBER ) PARTITION BY RANGE rok, miesiac) PARTITION przed2001 VALUES LESS THAN 2001,1), PARTITION q1_2001 VALUES LESS THAN 2001,4), PARTITION q2_2001 VALUES LESS THAN 2001,7), PARTITION q3_2001 VALUES LESS THAN 2001,10), PARTITION q4_2001 VALUES LESS THAN 2002,1), PARTITION nadmiar VALUES LESS THANMAXVALUE,0) ); 13

Partycjonowanie tabel w Oracle według wielu atrybutów Przykład. Tabela jest partycjonowana według trzech atrybutów. Który z następujących podziałów jest poprawny? a) poprawny 10, 20, 30) 20, 15, 20) 20, 30, 10) 20, 30, 20) 20, 30, 30) 20, 30, 40) b) niepoprawny 10, 20, 30) 20, 15, 20) 20, 30, 10) 20, 30, 40) 20, 30, 20) 20, 30, 30) 14

Haszowane partycjonowanie tabel Partycje bez specyfikacji przestrzeni tabel i nazw partycji. Przykład. 16 partycji bez specyfikacji nazw. CREATE TABLE osoby id NUMBER5), dane VARCHAR32) ) PARTITION BY HASH id ) PARTITIONS 16; /* id mod 16 */ Trzy partycje ze specyfikacją nazw i przestrzeni tabel. CREATE TABLE osoby id NUMBER5), dane VARCHAR32) ) PARTITION BY HASH id ) /* id mod 3 */ PARTITION p1 TABLESPACE ts2, PARTITION p2 TABLESPACE ts1, PARTITION p3 TABLESPACE ts3 ); 15

Partycjonowanie tabel z podpartycjami haszowanymi subpartition) Można również tworzyć podpartycje. CREATE TABLE test i NUMBER5), j NUMBER5) ) PARTITION BY RANGEj) SUBPARTITION BY HASHi) PARTITION p1 VALUES LESS THAN 10) SUBPARTITION t1_pls1 /* id mod 2 */ SUBPARTITION t1_pls2, PARTITION p2 VALUES LESS THAN 20) ); SUBPARTITION t2_p2s1 /* id mod 2 */ SUBPARTITION t2_p2s2) 16

Partycjonowanie tabel według listy wartości Można również tworzyć partycje według listy wartości. CREATE TABLE miasta id NUMBER5), miasto VARCHAR20), panstwo CHAR2) ) PARTITION BY LIST panstwo) PARTITION p_wschod VALUES 'PL', 'CZ', ) TABLESPACE tbs1, PARTITION p_zachod VALUES 'ES', 'FR', ) TABLESPACE tbs2 ); 17

Indeksy prefiksowane i bez prefiksu Oprócz podziału indeksów ze względu na typ partycjonowania w Oracle można dokonać podziału indeksów według indeksowanych atrybutów na: Prefiksowane - jeżeli pierwsze kolumny indeksu bazują na atrybutach partycjonujących z zachowaniem kolejności); Bez prefiksu - jeżeli pierwsze kolumny indeksu nie pokrywają się z atrybutami partycjonującymi; 18

Indeksy prefiksowane i bez prefiksu - przykład Utwórzmy tabelę: CREATE TABLE test id1 NUMBER3), id2 NUMBER3), id3 NUMBER3),... ) PARTITION BY RANGE id1, id2 ) PARTITION p_1 VALUES LESS THAN 10,20), PARTITION p_nadm VALUES THAN maxvalue, maxvalue) ); 19

Indeksy prefiksowane i bez prefiksu - przykład Indeks prefiksowany CREATE INDEX idx_id1_id2 ON test id1, id2 ) LOCAL; Indeks bez prefiksu CREATE INDEX idx_id3 ON test id3 ) LOCAL; Zalecane jest stosowanie indeksów lokalnych prefiksowanych. 20