2012-03-14
Kiedy defragmentować indeks, to jedno z najczęstszych pytań na szkoleniach.
Tutaj nie tłumaczę, jak jest zbudowany indeks, ani na czym polega defragmentacja. Nie wyjaśnię nawet składni polecenia DBCC REORGANIZE ani DBCC REBUILD. Powtórzę jednak za blogiem Paula Randal wartości przy których należy uruchomić odpowiednie polecenia.
Przyznam, że szczera odpowiedź na pytanie „Kiedy mam uruchomić REBUILD, a kiedy REORGANIZE, a kiedy zupełnie się tym nie przejmować” brzmi to zależy od:
- rodzaju bazy danych i tego jak użytkownicy wykorzystują tę bazę danych (OLTP/OLAP)
- rodzaju zastosowanych technologii wysokiej dostępności (high aviability)
- parametrów serwera (wielkość dysku, ilość pamięci)
- zapytań wykonywanych przez użytkowników
- stategii backupu
- itp. Czytaj dalej »
2012-03-13
Ciągle zmieniają się technologie. Co z tego, że znasz SQL w wersji 2000/2005/2008 i twoja firma go używa. Jeśli osiądziesz na laurach i zamkniesz się w tej znanej ci technologii, a ktoś podejmie decyzję o przejściu na SQL 2012, to okaże się, że twoje umiejętności są marne!
Chcąc być na topie,przygotowanym do nowych wdrożeń, albo chcąc zmienić pracę po prostu musisz znać to co najnowsze. Czy Microsoft nie utrudnia nam przypadkiem w tym względzie życia? Przecież nowe wersje serwerów publikowane przez Microsoft co kilka lat powodują, że ciągle mamy coś nowego do zrobienia i do nauczenia się. Rzeczywiście, można tak postrzegać działania Microsoftu… Jeśli jednak nie jesteś upartym marudą i dostrzegasz zalety samorozwoju oraz nowe funkcjonalności nowych wersji serwerów to z pewnością ucieszy cię fakt, że wraz z nowymi technologiami Microsoft wypuszcza nowe wersje certyfikatów, egzaminów oraz co może najważniejsze kursów: Czytaj dalej »
2012-03-09
Jeśli skorzystałeś z próbnej wersji Windows Server 2008, masz 60 dni zabawy z tym systemem operacyjnym. Jeżeli zabawa Ci się podoba, a nie pamiętasz kiedy zainstalowałeś serwer użyj następującego polecenia do sprawdzenia ilości pozostałych dni:
slmgr -dli
Oto wynik:
Czytaj dalej »
2012-03-06
Funkcja systemowa fn_virtualfilestats pokaże wiele ciekawych informacji o tym jak bardzo jest używany plik bazy danych:
SELECT * FROM fn_virtualfilestats(DB_ID(’AdventureWorks2008R2′), NULL)

Przydatne są oczywiście kolumny:
- Bytes on disk
- Number Reads / Bytes Read
- Number Writes / Bytes Written
Kolumna IO Stall Read MS mówi o tym ile w sumie czasu trzeba było czekać na wykonanie odczytu z pliku. Jest to suma zmierzona w milisekundach. Podobnie IO Stall Write MS, mówi o sumie czasu oczekiwania na zapis.
Analizując dyski przydatne będą także liczniki sysmon-a:
- Average Disk sec/Read (The average time, in milliseconds, of a read of data from disk; read latency)
- Average Disk sec/Write (The average time, in milliseconds, of a write of data to disk; write latency)
Choć trudno tu podać jednoznaczny wzór, można posiłkować się tabelką:
- <5 ms super!
- 5-20 ok
- 20-50 wolno
- 50-100 – raczej wąskie gardło
- >100 – na pewno wąskie gardło!
2012-03-06
Szukałem polecenia pokazującego rozmiar loga transakcyjnego. Oto ono:
SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'AdventureWorks2008R2′
Zapytanie pochodzi z http://blog.sqlauthority.com/2010/02/08/sql-server-find-the-size-of-database-file-find-the-size-of-log-file/
2012-03-06
Podczas wykonywania loga transakcyjnego liczysz na to, że zwolni się miejsce w logu na kolejne transakcje. TO prawda, ale… zwalniane jest miejsce tylko z tych częśi loga transakcyjnego, które nie są w danej chwili aktywne, to znaczy nie zawierają ani jednej aktywnej transakcji. Tymczasem może się zdarzyć, że gdzieś w logu „wisi” zapomniana przez użytkownika transakcja. Do kogo należy i z jakiej chwili ta transakcja pochodzi? Na to pytanie odpowie DBCC: Czytaj dalej »
2012-03-06
Log transakcyjny składa się z Virtual Log Files. Podobnie jak właściwa baza danych składa się ze stron i extentów, tak log transakcyjny składa się z VLF. Zaraz po utworzeniu bazy danych (i loga) można sprawdzić ile i jakich VLF zostało utworzonych:
CREATE DATABASE x
ALTER DATABASE x SET RECOVERY FULL
DBCC LOGINFO (x)
W tym przypadku plik log ma 2 VLF. Utwórzmy teraz dużo transakcji:
CREATE TABLE x
(x char(8000))
GO
INSERT x VALUES (’x’)
GO 1000
DBCC LOGINFO (x)
Po takiej czynności log tranakcyjny musiał urosnąć. Tutaj ma już 3 kawałki. Jak widać, jeżeli często plik loga musi się rozrastać, będzie się składał z dużej liczby małych VLF. A to nie dobrze… Czytaj dalej »