Materializowanie wyników zapytania
|
|
- Nadzieja Bednarek
- 8 lat temu
- Przeglądów:
Transkrypt
1 Materializowanie wyników zapytania Cel optymalizacja zapytań analitycznych Mechanizmy Perspektywy zmaterializowane (materialized views) Przepisywanie zapytań (query rewrite) Oprogramowanie Summary Advisor Wymiary (dimensions) summary_emp select depno, avg(sal) from emp group by deptno emp tabela master Odświeżanie perspektyw zmaterializowanych synchroniczne / asynchroniczne pełne / przyrostowe 1
2 Perspektywa zmaterializowana (1) Definicja zawiera: zapytanie odwołujące się do tabel sposób odświeżania danych (pełne, przyrostowe) częstotliwość odświeżania danych Standardowo tylko do odczytu Implementacja tabela + indeks 2
3 Perspektywa zmaterializowana (2) Rodzaje (sposób identyfikowania rekordów) PRIMARY KEY tabela master musi posiadać włączone ograniczenie PRIMARY KEY klauzula SELECT musi zawierać wszystkie atrybuty wchodzące w skład klucza podstawowego tabeli master ROWID Rodzaje (struktura zapytania) perspektywa prosta bazująca na jednej tabeli master brak klauzul: GROUP BY, CONNECT BY, DISTINCT brak funkcji, połączeń, operatorów zbiorowych perspektywa złożona 3
4 Definiowanie perspektywy zmaterializowanej CREATE MATERIALIZED VIEW nazwa BUILD IMMEDIATE DEFERRED REFRESH FAST COMPLETE FORCE ON DEMAND ON COMMIT WITH PRIMARY KEY ROWID START WITH 'data pierwszego odświeżenia' NEXT 'data następnego odświeżenia' AS SELECT...; 4
5 Przykład CREATE MATERIALIZED VIEW mv_suma_sprzedazy BUILD IMMEDIATE REFRESH FAST NEXT sysdate+(1/(24*60*30)) as select sklep_id, produkt_id, sum(l_sztuk), sum(l_sztuk*cena_jedn), count(l_sztuk), count(l_sztuk*cena_jedn), count(*) from sprzedaz group by sklep_id, produkt_id; 5
6 Odświeżanie perspektywy zmaterializowanej (2) Sposób odświeżania REFRESH FAST -> odświeżanie przyrostowe REFRESH COMPLETE -> odświeżanie pełne REFRESH FORCE -> automatyczny wybór metody odświeżania; jeżeli możliwe to Oracle wybiera FAST Częstotliwość odświeżania START WITH -> data pierwszego odświeżenia NEXT -> wyrażenie określające częstotliwość odświeżania Odświeżanie automatyczne gdy: wyspecyfikowana klauzula NEXT określona częstotliwość odświeżania REFRESH FAST START WITH sysdate NEXT sysdate+1 REFRESH FAST NEXT sysdate+1 6
7 Odświeżanie przyrostowe Dla perspektyw prostych Musi istnieć MATERIALIZED VIEW LOG dla tabeli master Perspektywa wyliczająca agregaty: count, sum, avg, variance, stdev dziennik utworzony z klauzulą INCLUDING NEW VALUES dziennik zawiera wszystkie atrybuty wymienione po SELECT, również będące argumentami wywołania funkcji grupowych dla SUM(X), AVG(X) należy wyliczać COUNT(X) i COUNT(*) 7
8 Odświeżanie perspektywy zmaterializowanej (1) ON COMMIT można stosować jedynie, gdy: zapytanie korzysta z tabel lokalnych migawek opartych o jedną tabelę, bez wyliczania agregatów migawek, których zapytanie wyznacza agregaty w oparciu o pojedynczą tabelę migawek których zapytanie wykorzystuje łączenie tabel, ale bez wyliczania agregatów Uprawnienia wymagane do doświeżania ON COMMIT uprawnienie obiektowe ON COMMIT dla wszystkich tabel, do których odwołuje się perspektywa zmaterializowana uprawnienie systemowe ON COMMIT 8
9 Odświeżanie perspektywy zmaterializowanej (2) Odświeżanie ręczne, gdy: wyspecyfikowano ON DEMAND brak klauzuli NEXT perspektywa odświeżona raz w momencie jej tworzenia jeśli wyspecyfikowano BUILD IMMEDIATE DBMS_MVIEW.REFRESH ('sn 1, sn 2,..., sn n ', 'metoda') sn 1, sn 2,..., sn n : perspektywy zmaterializowane metoda: metoda odświeżania f lub F: FAST c lub C: COMPLETE?: domyślny DBMS_MVIEW.REFRESH ('s_dept, s_emp, s_emp1', 'C') DBMS_MVIEW.REFRESH ('s_dept, s_emp, s_emp1', 'CF') domyślny 9
10 Prebuilt table (1) W systemie znajdują się "zwykłe" tabele zawierające dane Zamiana zwykłych tabel na perspektywy zmaterializowane wykorzystanie do przepisywania zapytań klauzula ON PREBUILT TABLE CREATE TABLE monthly_customer_sales ( YEAR NUMBER(4), MONTH NUMBER(2), CUSTOMER_ID VARCHAR2(10), DOLLAR_SALES NUMBER); CREATE MATERIALIZED VIEW monthly_customer_sales ON PREBUILT TABLE ENABLE QUERY REWRITE AS SELECT t.year, t.month, c.customer_id, SUM(f.purchase_price) dollar_sales FROM time t, purchases f, customer c WHERE f.time_key = t.time_key AND f.customer_id = c.customer_id GROUP BY t.year, t.month, c.customer_id; 10
11 Prebuilt table (2) Nazwa perspektywy zmaterializowanej budowanej na istniejącej tabeli musi być identyczna z nazwą tej tabeli System nie sprawdza poprawności zawartości tabeli w kontekście zapytania definiującego perspektywę tabela może zawierać dane nieodpowiadające zapytaniu Perspektywa będzie odświeżana z wykorzystaniem standardowych mechanizmów, jeśli je zdefiniowano 11
12 Dziennik perspektywy zmaterializowanej (1) CREATE MATERIALIZED VIEW LOG ON tabela PRIMARY KEY WITH SEQUENCE ROWID PRIMARY KEY, ROWID ROWID (lista kolumn filtrujących) PRIMARY KEY (lista kolumn filtrujących) INCLUDING NEW VALUES EXCLUDING NEW VALUES 12
13 Dziennik perspektywy zmaterializowanej (2) WITH PRIMARY KEY w dzienniku rejestrowane wartości atrybutów wchodzących w skład klucza WITH ROWID w dzienniku rejestrowane ROWID rekordów WITH PRIMARY KEY, ROWID w dzienniku rejestrowane wartości atr. kluczowych i ROWID WITH SEQUENCE konieczne do odświeżania przyrostowego, gdy do tabeli bazowej są wstawiane rekordy, modyfikowane i usuwane 13
14 kolumna filtrująca Dziennik perspektywy zmaterializowanej (3) atrybut występujacy w klauzuli WHERE zapytania definiującego perspektywę including new values select sk.nazwa, sk.sklep_id from scott.sklepy where exists (select sp.sklep_id from scott.sprzedaz where sp.sklep_id=sk.sklep_id and sp.produkt_id=100 and sp.data=' ' and sp.l_sztuk>1) konieczne dla perspektyw odświeżanych przyrostowo zawierających agregaty 14
15 Przykład CREATE MATERIALIZED VIEW mv_suma_sprzedazy BUILD IMMEDIATE REFRESH FAST NEXT sysdate+(1/(24*60*30)) as select sklep_id, produkt_id, sum(l_sztuk), sum(l_sztuk*cena_jedn), count(l_sztuk), count(l_sztuk*cena_jedn), count(*) from sprzedaz group by sklep_id, produkt_id; CREATE MATERIALIZED VIEW LOG on sprzedaz WITH PRIMARY KEY, ROWID (l_sztuk, cena_jedn) INCLUDING NEW VALUES; 15
16 EXPLAIN_MVIEW (1) Procedura DBMS_MVIEW.EXPLAIN_MVIEW Analizuje zapytanie definiujące perspektywę i sprawdza, czy perspektywa może być odświeżana przyrostowo W schemacie użytkownika należy uruchomić skrypt %ORACLE_HOME%\rdbms\admin\utlxmv.sql tworzący tabelę MV_CAPABILITIES_TABLE przechowującą wyniki analiz 16
17 EXPLAIN_MVIEW (2) BEGIN dbms_mview.explain_mview ( 'select sp.rowid sp_rowid, sp.produkt_id, sp.l_sztuk, sk.rowid sk_rowid, sk.nazwa from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id', 1); END; / statement_id SELECT capability_name, possible, related_text "table", msgtxt explanation FROM MV_CAPABILITIES_TABLE where statement_id='1'; 17
18 EXPLAIN_MVIEW (3) CAPABILITY_NAME P table EXPLANATION PCT N REFRESH_COMPLETE Y REFRESH_FAST N REWRITE Y PCT_TABLE N SPRZEDAZ relation is not a partitioned table PCT_TABLE N SKLEPY relation is not a partitioned table REFRESH_FAST_AFTER_INSERT N DEMO.SPRZEDAZ the detail table does not have a materialized vlog REFRESH_FAST_AFTER_ONETAB_DML N see the reason why REFRESH_FAST_AFTER_INSERT is disabled REFRESH_FAST_AFTER_ANY_DML N see the reason why REFRESH_FAST_AFTER_ONETAB_DML is disabled REFRESH_FAST_PCT N PCT is not possible on any of the detail tables in the materialized view REWRITE_FULL_TEXT_MATCH Y REWRITE_PARTIAL_TEXT_MATCH Y REWRITE_GENERAL Y REWRITE_PCT N general rewrite is not possible and PCT is not possible on any of the detail tables 18
19 Zależności między perspektywami mv_dept dept tabela master 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS mv_emp insert into dept values (50, 'INF.TECHNOLOGY', 'LONDON'); update emp set deptno=50 where ename= BLAKE ; 1 2 tabela master emp 3 exec dbms_mview.refresh('sn_emp', 'f') ename deptno BLAKE 50? 19
20 Grupy odświeżania DBMS_REFRESH.MAKE ( name, list, next_date, interval, implicit_destroy) nazwa grupy lista perspektyw przypisywanych do grupy data następnego odświeżenia okres odświeżania TRUE: usunięcie grupy jeżeli nie zawiera migawek domyślnie FALSE lista perspektyw zmaterializowanych muszą być w tej samej bd mogą być w różnych schematach max. 100 migawek w grupie 20
21 Przykłady exec DBMS_REFRESH.MAKE (name => 'orc1.rg_dept_emp', - list => 'orc1.sn_dept, orc1.sn_emp', - next_date => sysdate+1/48, - interval => 'next_day(trunc(sysdate), ''FRIDAY'')+10/24', - implicit_destroy => TRUE, - rollback_seg => 'rb1') exec DBMS_REFRESH.ADD ('orc1.rg_dept_emp', orc1.sn_emp1') exec DBMS_REFRESH.SUBTRACT('orc1.rg_dept_emp', 'orc1.sn_emp1') exec DBMS_REFRESH.REFRESH('orc1.rg_dept_emp') exec DBMS_REFRESH.DESTROY('orc1.rg_dept_emp') usuwa grupę z perspektywami lub pustą 21
22 Informacje słownikowe Zmaterializowane perspektywy USER_MVIEWS Dzienniki zmaterializowanych perspektyw USER_MVIEW_LOGS Informacje nt. odświeżania USER_MVIEW_REFRESH_TIMES Grupy odświeżania USER_REFRESH_CHILDREN Zmaterializowane perspektywy w grupie USER_REFRESH 22
23 Przepisywanie zapytań ań (1) CREATE MATERIALIZED VIEW nazwa BUILD... WITH... START WITH... NEXT... ENABLE QUERY REWRITE AS SELECT...; 23
24 Przepisywanie zapytań ań (2) create materialized view suma_sprzedazy build immediate refresh complete ENABLE QUERY REWRITE as select nazwa, sum(l_sztuk*cena_jedn) suma from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id group by nazwa; select nazwa, sum(l_sztuk*cena_jedn) suma from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id having sum(l_sztuk*cena_jedn) > group by nazwa; Execution Plan SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (FULL) OF 'SUMA_SPRZEDAZY' 24
25 Przepisywanie zapytań (3)) select nazwa, sum(l_sztuk*cena_jedn) suma from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id and sk.miasto='poznań' group by nazwa; Execution Plan SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (GROUP BY) 2 1 NESTED LOOPS 3 2 TABLE ACCESS (FULL) OF 'SKLEPY' 4 2 TABLE ACCESS (FULL) OF 'SPRZEDAZ' alter materialized view nazwa_perspektywy {enable disable} query rewrite; 25
26 Przepisywanie zapytań (4)) Przepisanie zapytania jest możliwe tylko wówczas, gdy: system wykorzystuje optymalizator kosztowy parametr konfiguracyjny instancji OPTIMIZER_MODE=CHOOSE dynamiczny wybór optymalizatora dla sesji alter session set optimizer_mode='choose'; alter session set optimizer_mode='all_rows'; dla tabel bazowych i perspektyw zmaterializowanych zebrano statystyki parametr konfiguracyjny QUERY_REWRITE_ENABLED=TRUE dynamiczne włączenie przepisywania dla sesji alter session set query_rewrite_enabled=true; parametr konfiguracyjny QUERY_REWRITE_ENABLED=FORCE jeżeli istnieje odpowiednia zmaterializowana perspektywa, zostanie wykorzystana do przepisania zapytania niezależnie od tego, czy z jej wykorzystaniem zapytanie zostanie wykonane szybciej, czy wolniej nie jest porównywany koszt wykonania zapytania 26
27 Przepisywanie zapytań (5) Uprawnienia użytkownika niezbędne do wykorzystania przepisywania zapytań: uprawnienie obiektowe QUERY REWRITE na wszystkich tabelach, do których odwołuje się perspektywa zmaterializowana lub uprawnienie systemowe GLOBAL QUERY REWRITE Techniki przepisywania zapytań text match aggregate rollup join-back filtered data rollup using a dimension Uwaga: perspektywa z operatorem BETWEEN AND wskazującym zakres dat nie będzie wykorzystana do przepisywania zapytań ORA-30353: expression not supported for query rewrite 27
28 Text match Tekst zapytania perspektywy zmaterializowanej i tekst zapytania użytkownika: są identyczne spacje nie są uwzględniane wielkość liter nie jest uwzględniana kolejność atrybutów/wyrażeń w obu zapytaniach nie ma znaczenia kolejność składników klauzuli WHERE nie ma znaczenia kolejność tabel w klauzuli FROM nie ma znaczenia 28
29 Aggregate rollup (1) Wynik zapytania użytkownika jest wyznaczany za pomocą agregowania zawartości perspektywy zmaterializowanej create materialized view mv_suma_sprzedazy build immediate refresh force on commit enable query rewrite as select sk.nazwa, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id group by sk.nazwa, pr.prod_nazwa; select sum(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id; Plan wykonywania SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=13) 1 0 SORT (AGGREGATE) 2 1 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY' (Cost=2 Card=82 Bytes=1066) 29
30 Aggregate rollup (2) select sk.nazwa, sum(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id group by sk.nazwa; Plan wykonywania SELECT STATEMENT Optimizer=CHOOSE (Cost=4 Card=82 Bytes=2050) 1 0 SORT (GROUP BY) (Cost=4 Card=82 Bytes=2050) 2 1 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY' (Cost=2 Card=Bytes=2050) 30
31 Join-back (1) Perspektywa zmaterializowana jest łączona z jedną z jej tabel bazowych, w celu wyznaczenia wyników zapytania użytkownika Perspektywa musi zawierać albo klucz podstawowy tej tabeli bazowej lub ROWID rekordów tabeli bazowej create materialized view mv_suma_sprzedazy1 build immediate refresh force next sysdate+(1/(24*60*30)) enable query rewrite as select sp.sklep_id, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, produkty pr where sp.produkt_id=pr.produkt_id group by sp.sklep_id, pr.prod_nazwa; 31
32 Join-back (2) select sk.nazwa, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id group by sk.nazwa, pr.prod_nazwa; zależność funkcyjna SKLEP_ID NAZWA Execution Plan SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=2 Bytes=136) 1 0 SORT (GROUP BY) (Cost=7 Card=2 Bytes=136) 2 1 HASH JOIN (Cost=5 Card=82 Bytes=5576) 3 2 TABLE ACCESS (FULL) OF 'SKLEPY' (Cost=2 Card=2 Bytes=14) 4 2 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY1' (Cost=2 Card=82 Bytes=5002) 32
33 Join-back (3) Uwaga: jeżeli zawartość klauzuli from zapytania użytkownika i zapytania definiującego perspektywę są inne, to zapytanie może nie zostać przepisane (zależne od wersji Oracle) create materialized view mv_suma_sprzedazy1 build immediate refresh force on commit enable query rewrite as select sp.sklep_id, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, produkty pr where sp.produkt_id=pr.produkt_id group by sp.sklep_id, pr.prod_nazwa; select sk.nazwa, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, produkty pr, sklepy sk where sp.produkt_id=pr.produkt_id and sp.sklep_id=sk.sklep_id group by sk.nazwa, pr.prod_nazwa; 33
34 Filtered data (1) create materialized view mv_suma_sprzedazy3 build immediate refresh force on commit enable query rewrite as select sp.sklep_id, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id and sk.sklep_id in (1, 2) group by sp.sklep_id, pr.prod_nazwa; select sp.sklep_id, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id and sk.sklep_id=2 group by sp.sklep_id, pr.prod_nazwa; Execution Plan SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=2 Bytes=28) 1 0 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY3' (Cost=2 Card=2 Bytes=28) 34
35 Filtered data (2) Wyliczanie dodatkowych agregatów, np. AVG, na podstawie perspektywy zmaterializowanej create materialized view mv_suma_sprzedazy4 build immediate refresh force on commit enable query rewrite muszą wystąpić identyczne atrybuty/wyrażenia as select sp.sklep_id, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id and sk.sklep_id in (1, 2) group by sp.sklep_id, pr.prod_nazwa; select sk.nazwa, pr.prod_nazwa, avg(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id and sk.sklep_id=2 group by sk.nazwa, pr.prod_nazwa; 35
36 Filtered data (3) Wyliczenie AVG(x) w zapytaniu użytkownika będzie możliwe jeśli perspektywa zmaterializowana będzie zawierała SUM(x) i COUNT(x) Execution Plan SELECT STATEMENT Optimizer=CHOOSE (Cost=5 Card=1 Bytes=55) 1 0 SORT (GROUP BY) (Cost=5 Card=1 Bytes=55) 2 1 NESTED LOOPS (Cost=3 Card=2 Bytes=110) 3 2 TABLE ACCESS (BY INDEX ROWID) OF 'SKLEPY' (Cost=1 Card=1 Bytes=7) 4 3 INDEX (UNIQUE SCAN) OF 'SKLEPY_PK' (UNIQUE) 5 2 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY4' (Cost=2 Card=2 Bytes=96) 36
37 Rollup using dimension (1) create table czas (data date CONSTRAINT czas_pk PRIMARY KEY, nr_dnia_mies number (2,0), nr_mies number (2,0), nr_kwart number (2,0), rok number (4,0), nr_dnia_roku number (3,0), dzien_tyg varchar2(12), nr_tyg number (2,0)); create materialized view mv_suma_sprzedazy5 build immediate refresh force on commit enable query rewrite as select pr.prod_nazwa, cz.nr_mies, sum(l_sztuk*cena_jedn), count(l_sztuk*cena_jedn) from sprzedaz sp, produkty pr, czas cz where sp.produkt_id=pr.produkt_id and sp.data=cz.data group by pr.prod_nazwa, cz.nr_mies; create dimension CZAS level l_data is czas.data level l_mies is czas.nr_mies level l_kwart is czas.nr_kwart level l_rok is czas.rok HIERARCHY czas_hier ( l_data child of l_mies child of l_kwart child of l_rok); 37
38 Rollup using dimension (2) Należy ustalić wartość parametru QUERY_REWRITE_INTEGRITY na TRUSTED lub STALE_TOLERATED alter session set QUERY_REWRITE_INTEGRITY='TRUSTED'; select pr.prod_nazwa, cz.rok, sum(l_sztuk*cena_jedn) from sprzedaz sp, produkty pr, czas cz where sp.produkt_id=pr.produkt_id and sp.data=cz.data Execution Plan group by pr.prod_nazwa, cz.rok; SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=2 Bytes=92) 1 0 SORT (GROUP BY) (Cost=13 Card=2 Bytes=92) 2 1 HASH JOIN (Cost=8 Card=682 Bytes=31372) 3 2 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY5' (Cost=2 Card=5 Bytes=100) 4 2 VIEW (Cost=5 Card=409 Bytes=10634) 5 4 SORT (UNIQUE) (Cost=5 Card=409 Bytes=10634) 6 5 TABLE ACCESS (FULL) OF 'CZAS' (Cost=2 Card=409 Bytes=10634) 38
39 Rollup using dimension (3) Wykorzystanie zależności funkcyjnych między atrybutami tabeli, zdefiniowanych w wymiarze create table sklepy (sklep_id number(3), nazwa varchar2(20) not null, rodzaj_sklepu varchar2(10) not null, miasto varchar2(15) not null, wojewodztwo varchar2(30) not null); create materialized view mv_suma_sprzedazy6 build immediate refresh force on commit enable query rewrite as create dimension SKLEPY level l_sklep is sklepy.sklep_id level l_miasto is sklepy.miasto level l_wojew is sklepy.wojewodztwo HIERARCHY sklepy_hier ( l_sklep child of l_miasto child of l_wojew) ATTRIBUTE l_sklep DETERMINES (rodzaj_sklepu); select sk.sklep_id, sum(l_sztuk*cena_jedn), count(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id group by sk.sklep_id; 39
40 Rollup using dimension (4) select sk.rodzaj_sklepu, sum(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id Execution Plan group by sk.rodzaj_sklepu; SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=2 Bytes=30) 1 0 SORT (GROUP BY) (Cost=6 Card=2 Bytes=30) 2 1 NESTED LOOPS (Cost=4 Card=2 Bytes=30) 3 2 TABLE ACCESS (FULL) OF 'MV_SUMA_SPRZEDAZY6' (Cost=2 Card=2 Bytes=8) 4 2 TABLE ACCESS (BY INDEX ROWID) OF 'SKLEPY' (Cost=1 Card=1 Bytes=11) 5 4 INDEX (UNIQUE SCAN) OF 'SKLEPY_PK' (UNIQUE) Uwaga: jeżeli tabela SPRZEDAZ będzie posiadała klucz podstawowy, to powyższe zapytanie zostanie również przepisane nawet jeśli nie zdefiniowano zależności funkcyjnych w wymiarze 40
41 QUERY_REWRITE_INTEGIRTY (1) Parametr określający jakie perspektywy zmaterializowane, ograniczenia integralnościowe i obiekty typu DIMENSION zostaną wykorzystane do przepisywania zapytań Modyfikowany dla całej instancji lub sesji Dopuszczalne wartości ENFORCED (wartość domyślna) Oracle zapewnia, że wynik zapytania przepisanego będzie identyczny z wynikiem oryginalnego zapytania na tabelach bazowych Sprawdza poprawność danych weryfikując za każdym razem ograniczenia integralnościowe Nie wykorzystuje obiektów typu DIMENSION STALE_TOLERATED Oracle wykorzysta perspektywy zmaterializowane, których zawartość albo nie jest aktualna albo nie odzwierciedla (zagregowanych) danych z tabel bazowych (dla perspektyw modyfikowalnych) 41
42 QUERY_REWRITE_INTEGIRTY (2) TRUSTED (zalecany w magazynach danych) pod warunkiem, że integralność danych zostanie zapewniona przez oprogramowanie zarządzające magazynem (również aplikacje) Oracle wykorzysta: obiekty typu DIMENSION ograniczenia integralnościowe oznaczone jako poprawne RELY ALTER TABLE nazwa MODIFY CONSTRAINT nazwa_ogr RELY; perspektywy zbudowane w oparciu o istniejące tabele (ON PREBUILT TABLE) tylko te perspektywy zmaterializowane, które zawierają dane aktualne Uwaga: jeżeli zapytanie nie zostanie przepisane w trybie STALE_TOLERATED, to w innych trybach na pewno nie zostanie przepisane Określenie aktualności danych zmaterializowanej perspektywy USER_MVIEWS.STALENESS wartości FRESH lub STALE (NEEDS_COMPILE) 42
43 Warunki niezbędne do przepisania zapytania - podsumowanie Uprawnienia użytkownika: uprawnienie obiektowe QUERY REWRITE na wszystkich tabelach, do których odwołuje się perspektywa zmaterializowana lub uprawnienie systemowe GLOBAL QUERY REWRITE Włączony mechanizm przepisywania zapytań dla perspektywy zmaterializowanej klauzula ENABLE QUERY REWRITE lub włączenie dynamicznie (alter materialized view) Włączony mechanizm przepisywania w systemie parametr konfiguracyjny QUERY_REWRITE_ENABLED=TRUE lub włączenie dynamicznie dla sesji (alter session) Wykorzystywany optymalizator kosztowy OPTIMIZER_MODE=CHOOSE (parametr konfiguracyjny, ustawienie dla sesji) dla tabel bazowych i perspektyw zmaterializowanych zebrano statystyki QUERY_REWRITE_INTEGRITY= ENFORCED STALE_TOLERATED TRUSTED (parametr konfiguracyjny, ustawienie dla sesji) 43
44 Wskazówki optymalizatora zapytań REWRITE (nazwa_perspektywy) NOREWRITE select /*+ REWRITE(MV_SUMA_SPRZEDAZY6) */ sk.sklep_id, sum(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id group by sk.sklep_id; select /*+ NOREWRITE */ sk.sklep_id, sum(l_sztuk*cena_jedn) from sprzedaz sp, sklepy sk where sp.sklep_id=sk.sklep_id group by sk.sklep_id; Uwaga: jeżeli we wskazówce REWRITE podamy perspektywę, której nie da się wykorzystać do przepisania zapytania, to optymalizator wybierze perspektywę właściwą 44
45 GROUPING SETS (1) create materialized view mv_suma_sprzedazy7 build immediate refresh force next sysdate+(1/(24*60*30)) enable query rewrite as Perspektywa zmaterializowana musi zawierać funkcję GROUPING lub GROUPING_ID, w przeciwnym przypadku zapytanie nie zostanie przepisane select sk.nazwa, pr.prod_nazwa, cz.rok, sum(l_sztuk*cena_jedn), count(l_sztuk), GROUPING_ID(sk.nazwa, pr.prod_nazwa, cz.rok) from sprzedaz sp, sklepy sk, produkty pr, czas cz where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id and sp.data=cz.data group by GROUPING SETS ((sk.nazwa, pr.prod_nazwa), (pr.prod_nazwa, cz.rok)); select sk.nazwa, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id group by GROUPING SETS ((sk.nazwa, pr.prod_nazwa)); 45
46 Procedura EXPLAIN_REWRITE Analizuje możliwość przepisania zapytania w oparciu o wskazaną perspektywę zmaterializowaną Wynik analizy w tabeli REWRITE_TABLE należy ją utworzyć w schemacie użytkownika skrypt ORACLE_HOME\rdbms\admin\utlxrw.sql BEGIN DBMS_MVIEW.EXPLAIN_REWRITE ('select sk.nazwa, pr.prod_nazwa, sum(l_sztuk*cena_jedn), count(l_sztuk) from sprzedaz sp, sklepy sk, produkty pr where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id group by GROUPING SETS ((sk.nazwa, pr.prod_nazwa))', 'MV_SUMA_SPRZEDAZY7'); END; select mv_name, message from rewrite_table; MV_NAME MESSAGE MV_SUMA_SPRZEDAZY7 QSM-01033: query rewritten with materialized view, MV_SUMA_SPRZEDAZY7 46
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Materializowanie wyników zapytania Cel optymalizacja
Perspektywy zmaterializowane
Perspektywy zmaterializowane Robert Wrembel Politechnika Poznaoska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Materializowanie wyników zapytania Cel optymalizacja
Hurtownie danych - przegląd technologii
Materializowanie wyników w zapytania Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Cel
Rozproszone bazy danych 1
Rozproszone bazy danych 1 Replikacja danych Laboratorium przygotował: Robert Wrembel ZSBD laboratorium 1 (1) 1 Plan laboratorium Dostęp do zdalnej bazy danych - łącznik bazy danych Replikowanie danych
Modelowanie wymiarów
Wymiar Modelowanie wymiarów struktura umożliwiająca grupowanie danych z tabeli faktów implementowana jako obiekt bazy danych DIMENSION wykorzystanie DIMENSION zaawansowane przepisywanie zapytań (ang. query
Oracle10g Database: struktury fizyczne dla hurtowni danych
Oracle1g Database: struktury fizyczne dla hurtowni danych 86 Plan rozdziału 87 Obiekty DIMENSION Materializowane perspektywy Przepisywanie zapytań Partycjonowanie tabel i indeksów Indeksy bitmapowe Obiekty
Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.
Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne. 1 Perspektywa Perspektywa (ang. view) jest strukturą
Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.
Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane. 1 Perspektywa Perspektywa (ang. view) jest strukturą logiczną
Rozproszone bazy danych Oracle. (c) Politechnika Poznańska, Instytut Informatyki 367
Rozproszone bazy danych Oracle (c) Politechnika Poznańska, Instytut Informatyki 367 Ogólna architektura systemu dedykowane oprogr. sieciowe (Net Services) CIO1.WAR.PL SIEĆ dblink CIO2.POZ.PL dedykowane
Rozproszone bazy danych 3
Rozproszone bazy danych 3 Optymalizacja zapytań rozproszonych Laboratorium przygotował: Robert Wrembel ZSBD laboratorium 3 (1) 1 Plan laboratorium Zapytanie rozproszone i jego plan wykonania Narzędzia
Rozszerzenia grupowania
Rozszerzenia grupowania 226 Plan rozdziału 227 Wprowadzenie ROLLUP CUBE GROUPING SETS GROUPING Rozszerzenia grupowania danych 228 W złożonych magazynach danych oprócz tabel faktów i wymiarów istnieje dodatkowo
Optymalizacja poleceń SQL
Optymalizacja poleceń SQL Przetwarzanie polecenia SQL użytkownik polecenie PARSER słownik REGUŁOWY RBO plan zapytania RODZAJ OPTYMALIZATORA? GENERATOR KROTEK plan wykonania statystyki KOSZTOWY CBO plan
Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych
Plan wykładu Bazy danych Cechy rozproszonej bazy danych Implementacja rozproszonej bazy Wykład 15: Rozproszone bazy danych Małgorzata Krętowska, Agnieszka Oniśko Wydział Informatyki PB Bazy danych (studia
Perspektywy zmaterializowane - migawki
Perspektywy zmaterializowane - migawki CIO.WAR.PL Ogólna architektura NET8 dblink SIEC CIO2.POZ.PL NET8 WO select... from konta@wo.cio.war.pl, klienci@po2.cio2.poz.pl...; insert into konta@cio.war.pl...;
Rozproszone bazy danych Oracle
Ogólna architektura systemu Rozproszone bazy danych Oracle dedykowane oprogr. sieciowe (Net Services) CIO1.WAR.PL SIEĆ dblink CIO2.POZ.PL dedykowane oprogr. sieciowe (Net Services) WO1 select... from konta@wo1.cio1.war.pl,
Integracja systemów transakcyjnych
Integracja systemów transakcyjnych Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Replikacja danych Problematyka replikacji Oracle
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji
KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów
KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw
Relacyjne bazy danych. Podstawy SQL
Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,
UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');
polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {
Widok Connections po utworzeniu połączenia. Obszar roboczy
Środowisko pracy 1. Baza danych: Oracle 12c - Serwer ELARA - Konta studenckie, dostęp także spoza uczelni - Konfiguracja: https://e.piotrowska.po.opole.pl/index.php?option=conf 2. Środowisko: SQL Developer
Bazy danych. dr inż. Arkadiusz Mirakowski
Bazy danych dr inż. Arkadiusz Mirakowski Początek pracy z Transact SQL (T-SQL) 153.19.7.13,1401 jkowalski nr indeksu 2 Perspektywa - tabela tymczasowa - grupowanie Perspektywa (widok) Perspektywa (widok)
Relacyjne bazy danych. Podstawy SQL
Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umoŝliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.
Podstawy języka SQL. SQL Structured Query Languagestrukturalny
Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych
I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE
Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy
3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota
Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)
Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze
Cwiczenie 4. Połączenia, struktury dodatkowe
Cwiczenie 4. Połączenia, struktury dodatkowe Optymalizacja poleceń SQL 1 W niniejszym ćwiczeniu przyjrzymy się, w jaki sposób realizowane są operacje połączeń w poleceniach SQL. Poznamy również dodatkowe
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie
Systemy GIS Tworzenie zapytań w bazach danych
Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE
Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p
Funkcje analityczne SQL CUBE (1)
Funkcje analityczne SQL CUBE (1) JOB DEPTNO SUM(SAL) --------- ---------- ---------- 29025 10 8750 20 10875 30 9400 CLERK 4150 CLERK 10 1300 CLERK 20 1900 CLERK 30 950 ANALYST 6000 ANALYST 20 6000 MANAGER
Bazy danych - Materiały do laboratoriów VIII
Bazy danych - Materiały do laboratoriów VIII dr inż. Olga Siedlecka-Lamch Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 23 kwietnia 2011 roku Polecenie COMMIT i ROLLBACK Polecenie
Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik
Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie
AUTOMATYCZNE PRZEPISYWANIE ZAPYTAŃ Z WYKORZYSTANIEM WIDOKÓW ZMATERIALIZOWANYCH W OPTYMALIZACJI OPERACJI W BAZACH DANYCH
STUDIA INFORMATICA 2011 Volume 32 Number 2B (97) Krzysztof CZAJKOWSKI, Marek BANACH Politechnika Krakowska, Instytut Teleinformatyki, Wydział Fizyki, Matematyki i Informatyki AUTOMATYCZNE PRZEPISYWANIE
Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];
Widoki/Perspektywy Podstawy Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy]; Usuwanie widoku DROP VIEW [nazwa_widoku]; Przykład 1 Przykład najprostszego
Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:
Zbiór pytań nr 2 1 Tabela DEPARTMENTS ma następującą strukturę: Nazwa kolumny Typ danych Uwagi dept_id NUMBER(4) NOT NULL, PRIMARY KEY dept_name VARCHAR2(30) mgr_id NUMBER(6) location_id NUMBER(4) Które
Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.
Typy numeryczne Typy daty i czasu. W celu uniknięcia niejasności czy zapis 11-08-2005 oznacza - 11 sierpnia 2005, czy może 8 listopada 2005, należy ustalić sposób interpretacji daty (europejski lub amerykański).
Optymalizacja poleceń SQL Wprowadzenie
Optymalizacja poleceń SQL Wprowadzenie 1 Fazy przetwarzania polecenia SQL 2 Faza parsingu (1) Krok 1. Test składniowy weryfikacja poprawności składniowej polecenia SQL. Krok 2. Test semantyczny m.in. weryfikacja
Optymalizacja. Plan wykonania polecenia SQL (1) Plan wykonania polecenia SQL (2) Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL
Optymalizacja Rozdział 19 Wprowadzenie do optymalizacji poleceń SQL Pojęcie i cel optymalizacji, schemat optymalizacji, plan wykonania polecenia SQL, polecenie EXPLAIN PLAN, dyrektywa AUTOTRACE, wybór
Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1
Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane
SQL (ang. Structured Query Language)
SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze
Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny
Schemat bazy danych, wczytanej z pliku create_tables.sql Relacji między tabelami klucze obce Klucz obcy jako ograniczenie dla kolumny customer_id INTEGER NOT NULL REFERENCES customer(customer_id), CONSTRAINT
Wydajność hurtowni danych opartej o Oracle10g Database
Wydajność hurtowni danych opartej o Oracle10g Database 123 Plan rozdziału 124 Transformacja gwiaździsta Rozpraszanie przestrzeni tabel Buforowanie tabel Różnicowanie wielkości bloków bazy danych Zarządzanie
Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach
Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym. Modele - konceptualne reprezentacja obiektów w
kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli
SPOOL moj_plik SPOOL OFF @ moj_ plik edit CREATE TABLE DESCRIBE ALTER TABLE RENAME DROP TABLE CONNECT CONNECT USER_NAME DISCONNECT EXIT zapisuje wszystkie wydane polecenia oraz ich wyniki do pliku moj_plik,
Ćwiczenie 8. Rozproszone bazy danych
Ćwiczenie 8. Rozproszone bazy danych 1. Uruchomienie i skonfigurowanie środowiska do ćwiczeń Celem niniejszych ćwiczeń jest przedstawienie podstawowych zagadnień, dotyczących rozproszonych baz danych.
Grupowanie i funkcje agregujące
Grupowanie i funkcje agregujące Zadanie 1. Stwórz odpowiednią tabelę Test_agr i wprowadź odpowiednie rekordy tak, aby wynik zapytania SELECT AVG(kol) avg_all, AVG(DISTINCT kol) avg_dist, COUNT(*) count_gw,
Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe
Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE
Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych
Informatyka sem. III studia inżynierskie Transport 2018/19 Lab 2 LAB 2 1. Backup bazy danych Tworzenie kopii (backup) bazy danych Odtwarzanie bazy z kopii (z backup u) 1. Pobieramy skrypt Restore 2. Pobieramy
77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.
77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele
Hurtownie danych - przegląd technologii
Funkcje analityczne SQL CUBE (1) Hurtownie danych - przegląd technologii Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel JOB DEPTNO SUM(SAL) 8750
Bazy danych Język SQL część 2 Wykład dla studentów matem
Bazy danych Język SQL część 2 Wykład dla studentów matematyki 21 marca 2015 Zapytania na kilku tabelach Czasem poszukiwana informacja znajduje się w kilku tabelach. Aby zapytanie dotyczyło kilku tabel,
Optymalizacja poleceń SQL
Optymalizacja poleceń SQL Optymalizacja kosztowa i regułowa, dyrektywa AUTOTRACE w SQL*Plus, statystyki i histogramy, metody dostępu i sortowania, indeksy typu B* drzewo, indeksy bitmapowe i funkcyjne,
Pakiety podprogramów Dynamiczny SQL
Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)
1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi
1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) Tworząc tabelę nie możemy określić, do którego pliku trafi, lecz możemy określić do której grupy plików trafi Zawsze istnieje grupa zawierająca
Rozproszone bazy danych Oracle
Rozproszone bazy danych Oracle (c) Robert Wrembel: Politechnika Poznanska, Instytut Informatyki 1 Ogólna architektura systemu dedykowane oprogr. sieciowe (Net Services) CIO1.WAR.PL SIEC dblink CIO2.POZ.PL
Optymalizacja poleceń SQL Metody dostępu do danych
Optymalizacja poleceń SQL Metody dostępu do danych 1 Metody dostępu do danych Określają, w jaki sposób dane polecenia SQL są odczytywane z miejsca ich fizycznej lokalizacji. Dostęp do tabeli: pełne przeglądnięcie,
Zarządzanie obiektami bazy danych Oracle11g
Zarządzanie obiektami bazy danych Oracle11g Wstęp Obiekty to struktury przechowujące, porządkujące lub operujące na danych takie jak: Tabele Więzy integralności Indeksy Widoki Sekwencje Procedury Linki
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Efektywność OLAP Perspektywy zmaterializowane
1. Wyzwalacze BD (ang. triggers)
1. Wyzwalacze BD (ang. triggers) Wyzwalacz bazy danych jest procedurą składowaną w bazie powiązaną z jedną konkretną tablicą. Z pojedynczą tablicą może być związane wiele wyzwalaczy, natomiast pojedynczy
Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)
Bazy danych wykład szósty Więzy i wyzwalacze Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa szósty Więzy i wyzwalacze 1 / 35 Wstęp Wiemy jak nakładać pewne ograniczenia (więzy) w
Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.
Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Efektywność przetwarzania OLAP 1. Indeksowanie
Hurtownie danych - przegląd technologii
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Efektywność OLAP Perspektywy zmaterializowane
Uprawnienia, role, synonimy
Uprawnienia, role, synonimy Schemat, użytkownicy, autoryzacja użytkowników, uprawnienia systemowe i obiektowe, nadawanie i odbieranie uprawnień, tworzenie ról, przywileje, synonimy Schematy i użytkownicy
Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?
Gr Masyla: 1. Zaznacz poprawne stwierdzenia dotyczące opcji recovery model w MS SQL Server a) Ustawienie Simple pozwala zaoszczędzid miejsce na dysku b) Model full jest zalecany dla baz danych, w których
Tworzenie raportów XML Publisher przy użyciu Data Templates
Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia
Wykład 5. SQL praca z tabelami 2
Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,
Wykład 8. SQL praca z tabelami 5
Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu
Hurtownie danych - przegląd technologii
Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl www.cs.put.poznan.pl/rwrembel Efektywność przetwarzania OLAP 1. Indeksowanie
Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle
Rozszerzenie obiektowe w SZBD Oracle Cześć 2. Kolekcje Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Malinowski Nowak Kowalski tablica zagnieżdżona (ang.
Replikacja danych w bazach danych Oracle9i
VII Seminarium PLOUG Warszawa Marzec 2003 Replikacja danych w bazach danych Oracle9i Bartosz Bêbel, Robert Wrembel Bartosz.Bebel@cs.put.poznan.pl, Robert.Wrembel@cs.put.poznan.pl Politechnika Poznañska,
"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz
"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie Krzysztof Jankiewicz Plan Opis schematu dla "kilku słów" Postać polecenia SQL Sposoby dostępu do tabel Indeksy B*-drzewo Indeksy
strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych
SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych
Przykładowa baza danych BIBLIOTEKA
Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych
Bazy danych 6. Klucze obce. P. F. Góra
Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:
Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z
Tworzenie tabeli Np. create table nazwa_tab( \\stworzenie tabeli Id numer(4) constraint PRAC_PK primary key, \\ustawiamy klucz podst. Nazwisko varchar2(30), \\typ tekstowy 30 znaków Kwota number(10,2)
Język SQL, zajęcia nr 1
Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze
Rozproszone bazy danych Oracle. (c) Politechnika Poznańska, Instytut Informatyki 367
Rozproszone bazy danych Oracle (c) Politechnika Poznańska, Instytut Informatyki 367 Ogólna architektura systemu dedykowane oprogr. sieciowe (Net Services) CIO1.WAR.PL SIEĆ dblink CIO2.POZ.PL dedykowane
SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek
SELECT SELECT kolumna1, kolumna2,, kolumnan FROM tabela wybrane kolumny SELECT * FROM tabela wszystkie kolumny select * from Orders select CustomerID, CompanyName, Country from Customers WHERE SELECT *
Laboratorium Bazy danych SQL 3 1
Laboratorium Bazy danych SQL 3 1 F U N K C J E operujące na grupach wierszy: avg([distinct all]kol) oblicza średnią arytmetyczną wartości kolumny kol wszystkich wierszy grupy. count([distinct all]wyr)
Język SQL. Rozdział 8. Język manipulowania danymi DML
Język SQL. Rozdział 8. Język manipulowania danymi DML Wstawianie danych i polecenie INSERT, modyfikowanie danych i polecenie UPDATE, usuwanie danych i polecenie DELETE, połączenia modyfikowalne, sekwencje.
Rozproszone bazy danych
Rozproszone bazy danych 1. Uruchomienie i skonfigurowanie środowiska do ćwiczeń Zadaniem niniejszych ćwiczeń jest przedstawienie podstawowych zagadnień dotyczących rozproszonych baz danych. Pierwsze ćwiczenia
Przestrzenne bazy danych Podstawy języka SQL
Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured
Język PL/SQL. Rozdział 6. Procedury wyzwalane
Język PL/SQL. Rozdział 6. Procedury wyzwalane Procedury wyzwalane, cele stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie
Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu
Zbiór pytań nr 5 1 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu connect athos/musketeer grant select,insert,update,delete on athos.services to porthos with grant option; grant
Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE
Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1 INSERT Instrukcja INSERT dodawanie
Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz
Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych
SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska
SQL TECHNOLOGIE BAZ DANYCH Wykład 5: Język DDL i DML. SQL (ang. StructuredQueryLanguage) strukturalny język zapytań używany do tworzenia, modyfikowania relacyjnych baz danych oraz do umieszczania i pobierania
Bazy danych 10. SQL Widoki
Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela
Systemowe aspekty baz
Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select
Wykład 05 Bazy danych
Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o
Typy Oracle atrybutów relacji Typ NUMBER (1)
Tworzenie relacji polecenie CREATE TABLE Rozdział 6 Język definiowania danych DDL CREATE TABLE nazwa_relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr],
Typy Oracle atrybutów relacji Typ NUMBER (1)
Tworzenie relacji polecenie CREATE TABLE Rozdział 6 Język definiowania danych DDL CREATE TABLE nazwa_relacji (nazwa_atrybutu typ (rozmiar) [DEFAULT wartość_domyślna] [ [CONSTRAINT nazwa_ogr] ograniczenie_atr],
Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML
Procedury wyzwalane Rozdział 13 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie
Fazy przetwarzania polecenia SQL. Faza parsingu (2) Faza parsingu (1) Optymalizacja poleceń SQL Część 1.
Fazy przetwarzania polecenia SQL Optymalizacja poleceń SQL Część 1. Fazy przetwarzania polecenia SQL, pojęcie i cel optymalizacji, schemat optymalizacji, plan wykonania polecenia SQL, polecenie EXPLAIN
SQL do zaawansowanych analiz danych część 1.
SQL do zaawansowanych analiz danych część 1. Mechanizmy języka SQL dla agregacji danych Rozszerzenia PIVOT i UNPIVOT Materiały wykładowe Bartosz Bębel Politechnika Poznańska, Instytut Informatyki Plan