profil

Ściąga na bazy danych

poleca 85% 103 głosów

Treść
Grafika
Filmy
Komentarze

1.Blokady i poziomy izolacji
-wielodostęp jest możliwy dzięki izolacji i blokadom
-ustawienie poziomu izolacji decyduje o sposobie izolowania i blokowania danych
-dla aplikacji istotnie wielodostępnych poziomy izolacji musz± być dobrane do okoliczno¶ci
-blokowanie zapisu następuje na poziomie stron
-blokady s± zwalniane po COMMIT / ROLLBACK
-poziomy izolacji ustala się:
- poleceniem SET ISOLATION poziom w SQLTalk
- funkcj± SqlSetIsolationLevel w SQLWindows
każdy kursor otwarty przez klienta ma własny bufor wej¶ciowy
Read Repeatability
-wypełnia bufor wej¶ciowy danymi
-wszystkie przeczytane strony zostaj± zablokowane
-gwarantuje powtarzalno¶ć odczytów wiersza w ramach transakcji
-jest to domy¶lny poziom izolacji
Cursor Stability
-pobiera do bufora tylko pojedynczy wiersz
-blokowana jest tylko „bież±ca" strona -- na której jest kursor
-blokada jest zdejmowana gdy kursor przejdzie na inn± stronę
-dane między kolejnymi odczytami mog± być zmienione przez innych użytkowników
-generuje duży ruch na sieci, ale nie blokuje dostępu innym
-poziom przeznaczony do zmian pojedynczych wierszy
Release Locks
-wypełnia bufor wej¶ciowy danymi
-zakłada blokadę na stronę na której jest kursor
-zwalnia blokadę natychmiast po zakończeniu operacji
-zapewnia dobry wielodostęp
-poziom przeznaczony do pokazywania wielu wierszy
Read Only
-nie zakłada żadnych blokad, ale nia pozwala na modyfikacje
-przekazuje „migawkę" danych z chwili zadania zapytania
-używa specjalnych plików .HIS do przechowywania migawki
-poziom przeznaczony do odczytów które musz± zawierać dane z tej samej chwili
-możliwość użycia tego trybu trzeba odblokować przez SET READONLY ON

2.Rowid
ROWID jest wewnętrznym identyfikatorem wiersza w tabeli
jest typu STRING, można go używać w zdaniach SQL tak jak nazwy kolumny
służy do identyfikacji wiersza, np. do koordynacji działania dwóch kursorów
zmienia wartość po każdej zmianie wiersza -- należy używać ostrożnie,
zwłaszcza w fromularzach master-detail
5.Etapy przetwarzania:

BOOL SqlPrepare (SqlHandle, String)

Przykład:
if SqlPrepare (hsql,
‘SELECT t1.a1, t1.a2, t2.b1
FROM tablica1 t1, tablica2 t2
WHERE t1.a4 = t2.b2 and t1.b3 = :bind_var
INTO :into_var1, :into_var2, :into_var3 ‘)
przesłanie komendy do serwera
analiza syntaktyczna
sprawdzanie istnienia obiektów (tablice, perspektywy, kolumny ...)
sprawdzenie uprawnień (poziom uprawnień do operowania na zawartościach tabel)
podstawienia (np. zastąpienie perspektyw, synonimów)
optymalizacja i wybór planu wykonania (wykorzystanie optymalizatora kosztowego):
pobranie statystyk z katalogu systemowego
analiza możliwych ścieżek realizacji wyszukiwania (access path)
wybór ścieżki o najniższym koszcie wykonania (SQL cost)
tłumaczenie na ciąg wywołań wykonywalnych modułów
PREPARE służy do przygotowania instrukcji SQL. W dynamicznym SQL
instrukcje są tworzone w czasie wykonywania programu i przechowywane
jako tekst w zmiennej znakowej. Instrukcja PREPARE konwertuje zawartość zmiennej
na instrukcję SQL. Można ją następnie wykonać instrukcją EXECUTE lub
usunąć DEALLOCATE PREPARE
PREPARE LOCAL instrukcjaBartka FROM :SQLInstrukcja1;
[przygotowana zostaje instrukcja o nazwie 'instrukcjaBartka' ze zmiennej
znakowej 'SQLInstrukcja1', nie będzie ona widoczna dla innych instrukcji]


BOOL SqlExecute (SqlHandle)
Przykład:
if SqlExecute (hsql)
wysłanie zmiennych wiążących (bind variables)
wykonanie komendy (rozpoczęcie tworzenia zbioru result set)
EXECUTE służy do wykonywania przygotowanej instrukcji SQL (stworzonej instrukcją PREPARE).
EXECUTE instrukcja1 USING :nazwa, :miejsce_urodz INTO LOCAL deskryptor3;
[wykonywana jest instrukcja o nazwie 'instrukcja1', dwa parametry są
przekazywane do lokalnego deskryptora o nazwie 'deskryptor3']

BOOL SqlFetchNext (SqlHandle, Number)
(SqlFetchPrevious , SqlFetchRow)

Przykład:
if SqlFetchNext (hsql, nRet)
pobieranie wierszy rozwiązania
(każdy “FETCH” pobranie wiersza ze zbioru result-set)

FETCH umożliwia pobranie wierszy z otwartego kursora.
Wartości są umieszczane na specjalnej liście w uporządkowanej kolejności.
FETCH [orientacja] FROM nazwa INTO specyfikacja_docelowa,...
Kursor - obiekt używany do przechowywania wyników zapytania.
Różni się od widoku tym iż nie zachowuje się jak tabela. Jest rodzajem zmiennej,
przechwujjącej wyniki zapytania, aby można je póżniej wykorzystać wiersz po wierszu.

6.Autoryzacja i poziomy dostępu
Autoryzacja:
-użytkownicy są identyfikowani przez nazwy i hasła
-identyfikator PUBLIC używany do przyznania przywilejów dla wszystkich użytkowników
Poziomy dostępu:
SYSADM - pełna kontrola nad baz±, zarządzanie użytkownikami i
DBA - pełny dostęp, zarządzanie przywilejami
RESOURCE - tworzenie tablic, usuwanie i nadawanie przywilejów do własnych tablic
CONNECT - tylko dostęp według przyznanych przywilejów
Przywileje dostępu do tablic i perspektyw
-wyszukiwania (SELECT)
-zmiany danych (INSERT, DELETE, UPDATE), można okre¶lić dostęp do kolumn
-zmiany struktury (ALTER)
-tworzenie i usuwanie indeksów (INDEX)
Nadawanie i odbieranie przywilejów dostępu do tablic/perspektyw
-przywileje może nadawać i odbierać tylko właściciel, DBA lub SYSADM
-można odebrać tylko przywileje nadane expilicite
-tworzenie użytkowników i nadawanie poziomów dostępu:
GRANT CONNECT|RESOURCE|DBA TO uid IDENTIFIED BY passwd;
usuwanie użytkowników:
REVOKE CONNECT|RESOURCE|DBA FROM uid;
przyznawanie przywilejów dostępu do tabeli lub perspektywy:
GRANT ALL | lista_przywilejów ON nazwa TO uid | PUBLIC
przywilej UPDATE może dotyczyć tylko wybranych kolumn, składnia:
UPDATE ( lista_kolumn )
odbieranie przywilejów:
REVOKE ALL | lista_przywilejów FROM uid | PUBLIC
użytkowników i przywileje można oglądać przez perspektywy:
SYSUSERAUTH, SYSTABAUTH, SYSCOLAUTH

Załączniki:
Czy tekst był przydatny? Tak Nie
Przeczytaj podobne teksty

Czas czytania: 4 minuty