Archiwum dla kategorii ‘SQL’

Jak działa TRANSACTION ISOLATION LEVEL SERIALIZABLE?

2011-03-13

W normalnych warunkach, czyli z ustawieniami domyślnymi każdy zapis nakłada na czas transakcji blokadę EXCLUSIVE czyli na wyłączność. Odczyty natomiast nakładają tzw. SHARE LOCK, czyli blokadę dzieloną. Na danym rekordzie może istnieć kilka SHARE LOCK, ale tylko jeden EXCLUSIVE LOCK. Jeżeli rekord ma nałożoną blokadę EXCLUSIVE, to nie można nałożyć na niego blokady SHARED. Takie […]

By Rafał Kraik in SQL

Table hint: TABLOCKX, HOLDLOCK, READPAST

2011-03-12

Jeżeli zamierzasz wykonać procedurę składowaną pobierającą określone dane z jednej chwili, nie dopuszczając takiej opcji, że podczas wykonywania procedury ktoś dopisał/usunął czy też zmienił jakiś rekord możesz posłużyć się table hint TABLOCKX.

By Rafał Kraik in SQL

Cache procedur. Rekompilacja zapytań, procedur. Query Hint RECOMPILE

2011-03-12

Ważną cechą optymalizacji zapytań w SQL Server jest to, że raz przygotowany plan wykonania (execution plan) jest zapisywany w cache procedur. Kiedy po raz kolejny użytkownik uruchomi takie samo zapytanie, SQL serwer nie tworzy nowego planu zapytań, ale realizuje stary zapamiętany plan. Oczywiście zdarzają się sytuacje kiedy plan trzeba utworzyć od nowa. Plan utworzy się […]

By Rafał Kraik in SQL

Query hint MAXDOP. Opcja serwera 'max degree of parallelism’. Wykorzystanie wielu procesorów w zapytaniu.

2011-03-10

Oczywiście do wykonywania zapytań konieczna jest praca procesora… Miło by też było gdyby podczas wykonywania zapytań serwer rzeczywiście wykorzystywał kilka procesorów na raz! Reguluje tym parametr ‘max degree of parallelism’. Jest to wartość całkowita, która mówi ile procesorów jednocześnie może maksymalnie wykonywać jedno zapytanie. Nie regulujesz nim ile procesorów rzeczywiście wykona zapytanie, a jedynie określasz […]

By Rafał Kraik in SQL

Jak sprawdzić numer zainstalowanej wersji MDAC?

2011-03-09

MDAC (Microsoft Data Access Components) to zbiór komponentów wydawanych przez Microsoft umożliwiający dostęp do danych.  Niektóre programy mają specyficzne wymogi dotyczące tej biblioteki. Pojawia się wtedy pytanie „jaka wersja MDAC jest teraz zainstalowana”? Zgodnie z opisem na http://support.microsoft.com/kb/301202 można do tego użyć programu Component Checker, albo, co wydaje się o wiele prostsze zajrzeć do rejestru! Pod kluczem […]

Przyśpieszanie importu danych poprzez wyłączenie indeksów tabel

2011-03-06

Podczas masowego importu danych komendą BULK INSERT lub bcp lub innych operacji typu ETL indeksy tabel są na bieżąco aktualizowane. Oczywiście spowalnia to porces importu danych. Indeksy można na czas importu wyłączyć, należy jednak pamiętać, aby po zakończeniu importu je na nowo przebudować. Najpierw sprawdźmy jakie indeksy ma tabela HumanResources.Shift: SELECT * FROM sys.indexes WHERE […]

By Rafał Kraik in SQL

Audyt operacji na tablach z wykorzystaniem DDL Trigger

2011-03-06

SQL Server umożliwia tworzenie triggerów nie tylko na operacje DML (wstawianie, modyfikacja i usuwanie rekordów), ale także na poziomie bazy danych (tworzenie, modyfikacja i usuwanie obiektów bazodanowych np tabel, widoków, procedur itp) a nawet na poziomie serwera (tworzenie obiektów serwera, czy  śledzenie logowania się uzytkowników). O ile zwykłe triggery nakłada się na tabele FOR UPDATE, […]

By Rafał Kraik in SQL