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

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

Partycjonowanie tabel (1)

Hurtownie danych - przegląd technologii

Partycjonowanie. Partycjonowanie tabel (1)

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

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

Autor: Joanna Karwowska

Wykład 4. SQL praca z tabelami 1

Projektowanie systemów baz danych

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

Wykład 5. SQL praca z tabelami 2

Język SQL, zajęcia nr 1

Bazy danych - Materiały do laboratoriów VIII

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

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

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

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wykład 05 Bazy danych

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

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

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

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

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

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

Modele danych - wykład V

Wykład 8. SQL praca z tabelami 5

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

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

Zadania do wykonania na laboratorium

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Nowe technologie baz danych

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

Modelowanie wymiarów

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

Bazy danych 7. SQL podstawy

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

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

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)

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

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

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

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

Oracle10g Database: struktury fizyczne dla hurtowni danych

TESTU NIE MUSZA BYC W 100% POPRAWNE!!!

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Dr inż. Paweł Kasprowski

Paweł Rajba

Instalacja MySQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Bazy danych. Polecenia SQL

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

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

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

Bazy Danych i Usługi Sieciowe

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

Bazy danych 10. SQL Widoki

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy danych i usługi sieciowe

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

Wykład 6. SQL praca z tabelami 3

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

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

Zarządzanie obiektami bazy danych Oracle11g

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

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

Wykład 2. SQL 1 Structured Query Lenguage

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

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

Oracle Database 12c: podstawy administracji. Maciej Zakrzewicz ExplainIT.pl

Typy Oracle atrybutów relacji Typ NUMBER (1)

Bazy danych 9. SQL Klucze obce Transakcje

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

Typy Oracle atrybutów relacji Typ NUMBER (1)

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

Internetowe bazy danych

Architektura Systemu Zarządzania Bazą Danych Oracle

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

Indeksy. Indeks typu B drzewo

BAZY DANYCH Cz III. Transakcje, Triggery

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

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

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

Wydajność hurtowni danych opartej o Oracle10g Database

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

Język SQL podstawy zapytań

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

Transkrypt:

PODSTAWY BAZ DANYCH Wykład 10 8. Partycjonowanie tabel i indeksów 2005/2006 Wykład "Podstawy baz danych" 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 2005/2006 Wykład "Podstawy baz danych" 2

Partycjonowanie tabel i indeksów w Oracle 2005/2006 Wykład "Podstawy baz danych" 3

Partycjonowanie tabel w Oracle CREATE TABLE faktury ( id_faktury NUMBER(5) PRIMARY KEY, id_klienta NUMBER(3)NOT NULL, data_wystawienia DATE NOT NULL, kwota NUMBER(8,2) NOT NULL ) PARTITION BY RANGE(data_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; ); 2005/2006 Wykład "Podstawy baz danych" 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). 2005/2006 Wykład "Podstawy baz danych" 5

Odwoływanie się do tabel partycjonowanych Tradycyjnie SELECT * FROM faktury; Wybór z odpowiedniej partycji SELECT * FROM faktury PARTITION(m_10_2003); Nowe polecenia SQL służące do zarządzania partycjonowanymi tabelami. Są to polecenia z grupy ALTER TABLE: ADD PARTITION,DROP PARTITION, RENAME PARTITION, MODIFY PARTITION,TRUNCATE PARTITION, SPLIT PARTITION, MOVE PARTITION 2005/2006 Wykład "Podstawy baz danych" 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 2005/2006 Wykład "Podstawy baz danych" 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; 2005/2006 Wykład "Podstawy baz danych" 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; Zwykłe - nie partycjonowane. Indeks lokalny CREATE BITMAP INDEX idx_klient ON faktury (id_klienta) LOCAL; Powstanie indeks lokalny rozdzielony identycznie jak tabela (według atrybutu data_wystawienia). 2005/2006 Wykład "Podstawy baz danych" 9

Partycjonowanie indeksów w Oracle Indeks globalny CREATE INDEX idx_faktury ON faktury (id_faktury) GLOBAL PARTITION BY RANGE (id_faktury) ( PARTITION p_1 VALUES LESS THAN (500), PARTITION p_nadmiar VALUES LESS THAN (maxvalue) ); Powstanie indeks globalny rozdzielony inaczej jak partycjonowana tabela faktury. 2005/2006 Wykład "Podstawy baz danych" 10

Tabele - indeksy w Oracle W Oracle dostępne są możliwości tworzenia tabel zorganizowanych 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; 2005/2006 Wykład "Podstawy baz danych" 11

CREATE TABLE dostawca_czesci ( ) dostawca_id NUMBER, num_czesci NUMBER, cena NUMBER PARTITION BY RANGE (dostawca_id, num_czesci) ( ); Partycjonowanie tabel w Oracle według wielu atrybutów - przykład PARTITION p1 VALUES LESS THAN (10,100), PARTITION p2 VALUES LESS THAN (10,200), PARTITION p3 VALUES LESS THAN (MAXVALUE,MAXVALUE) 2005/2006 Wykład "Podstawy baz danych" 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 THAN (MAXVALUE,0) ); 2005/2006 Wykład "Podstawy baz danych" 13

Partycjonowanie tabel w Oracle według wielu atrybutów 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) 2005/2006 Wykład "Podstawy baz danych" 14

Haszowane partycjonowanie tabel Partycje bez specyfikacji przestrzeni tabel i nazw partycji. CREATE TABLE osoby ( id NUMBER(5), dane VARCHAR(32) ) PARTITION BY HASH(id) PARTITIONS 16; /* id mod 16 */ Cztery partycje ze specyfikacją nazw i przestrzeni tabel. CREATE TABLE osoby ( id NUMBER(5), dane VARCHAR(32) ) PARTITION BY HASH(id) /* id mod 4 */ ( PARTITION p0 TABLESPACE ts1, PARTITION p1 TABLESPACE ts2, PARTITION p2 TABLESPACE ts1, PARTITION p3 TABLESPACE ts3 ); 2005/2006 Wykład "Podstawy baz danych" 15

Partycjonowanie tabel z podpartycjami haszowanymi (subpartition) CREATE TABLE test ( i NUMBER(5), j NUMBER(5) ) PARTITION BY RANGE(j) SUBPARTITION BY HASH(i) ( 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) 2005/2006 Wykład "Podstawy baz danych" 16

Partycjonowanie tabel według listy wartości CREATE TABLE miasta ( id NUMBER(5), miasto VARCHAR(20), panstwo CHAR(2) ) PARTITION BY LIST (panstwo) ( PARTITION p_wschod VALUES ('PL', 'CZ', ) TABLESPACE tbs1, PARTITION p_zachod VALUES ( ES', FR', ) TABLESPACE tbs2 ); 2005/2006 Wykład "Podstawy baz danych" 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; 2005/2006 Wykład "Podstawy baz danych" 18

Utwórzmy tabelę: CREATE TABLE test ( id1 NUMBER(3), id2 NUMBER(3), id3 NUMBER(3),... ) PARTITION BY RANGE (id1,id2) ( ); Indeksy prefiksowane i bez prefiksu - przykład PARTITION p_1 VALUES LESS THAN (10,20), PARTITION p_nadm VALUES THAN (maxvalue, maxvalue) 2005/2006 Wykład "Podstawy baz danych" 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. 2005/2006 Wykład "Podstawy baz danych" 20