Optymalizacja serwera baz danych
Wielokrotnie odpowiadając na wss.pl na pytania o optymalizacje podrzucałem komuś linki do poniższego wykresu:

Ta prawda objawiona pochodzi z rozdziału 14 dokumentu: Improving .NET Application Performance and Scalability. Myślę że powyższego nie ma co analizować – tak po prostu jest – w świecie baz danych najważniejsza jest aplikacja i dobry projekt baz danych – reszta to juz pojedyncze procenty. Bardzo fajnie się z tym wiąże ankieta jaką Paul Randal zrobił na swoim blogu. Pytanie jakie postawił Paul brzmi: what’s the most important thing when performance tuning?, a wyniki ankiety do zobaczenia tutaj.
rss – wyjaśnienie
Ponieważ pojawiło się trochę pytań związanych z rssami, krótki komunikat:
- rss całego bloga ma adres:
http://itsouldiers.com/blog/feed/
- rss dla kategorii ma adres:
http://itsouldiers.com/blog/category/NazwaKategorii/feed/
- rss da taga ma adres:
http://itsouldiers.com/blog/category/NazwaTaga/feed/
jeśli w nazwie kategorii/taga są spacje to zamiast nich wpisujcie minus np.: rss dla kategorii bazy danych:
Nowa baza? nowe wrażenia?
Masz nowego Klienta? A może odziedziczyłeś bazę w spadku? Twoja firma się rozrasta (lub ktoś się rozrasta)? Jest wiele sytuacji, kiedy stajemy się szczęśliwcami administrującymi bazami danych “po kimś”. Co w takiej sytuacji zrobić? Jak powinna wyglądać checklista pierwszych tygodni pracy?
Inspiracją do poniższego tekstu był podobny artykuł pod tytułem: 9 Things to Do When You Inherit a Database. To co przeczytanie poniżej skrzywia developerskie podejście autorki wskazanego artykułu na korzyść DBA :)
-T 845, czyli lock pages w praktyce
Jak uruchomić SQL Server 2008 SP1 CU2 x64 Standard Edition z opcją Locked Pages in memory ???
Potrzebujemy:
- DBA – sztuk: 1
- Instancja SQL Server 2008 SP1 CU2 x64 Standard Edition – sztuk: 1
- 5 minut wolnego czasu
Błąd 3041 podczas wykonywania backupu
Błąd 3041 – otrzymywałem przy okazji backupu baz danych wykonywanego przez Maintenance Plan. Pierwsza myśl – znowu problem uprawnień … klikam kombinuje i nic … no to patrze w log aplikacyjny może coś więcej będzie … e-e nie było. No to google a tam min. linki takie jak ten czy ten- generalnie nic pomocnego. W totalnej desperacji posądziłem już UAC’a z Windows 2008 x64 że to jego sprawka – ale jak się łatwo domyśleć to był ślepy zaułek.
Bulk insert i problem ze znakiem < LF >…
Problem:
jak przy pomocy BULK INSERT zaimportować pliki, kiedy znak nowej linii mają rozdzielany przy pomocy <LF> (zamiast windowsowego <CR><LF>) ?
Podpowiedź:
nie należy szukać wśród kombinacji \n i \r
Rozwiązanie:
DECLARE @sql varchar(1000) SET @sql = 'BULK INSERT table_name FROM ''file_path'' WITH (FIELDTERMINATOR = ''\t'', ROWTERMINATOR = '''+CHAR(10)+''')' EXEC (@sql)
Więcej o problemie <CR><LF> można znaleźć tutaj: http://en.wikipedia.org/wiki/CRLF.
Na jednym z ostatnich spotkań PLSSUG Ziemek Borowski miał świetną sesję o licencjonowaniu. W pewnym momencie sesji stwierdził że licencencje SQL Serverowe można ustawiać za pomocą wpisów w rejestrze … zapalony tym stwierdzeniem oraz wczorajszym pogonieniem mnie przez Pawła Potasińskiego poszukałem i znalazłem :))
ostatnio na forum wss.pl pojawił się wątek o przeszukiwaniu ciągów znakowych, punktem wyjścia dla niniejszego researchu był post Pawła Potasińskiego (aka brejk):
————————————————————————————-
Akodo_Shado:
select name from slowa
where name LIKE ‘kote[a-z]%’.
Efekt był piorunujący! 140 wyników w mig.
brejk:
I nic dziwnego. Przecież w tych 3,5 mln słów ile mogło się zaczynać od “kote” :-) Naturalne, że przy tak dobrej selektywności serwer może użyć indeksu na polu name (jakiegokolwiek indeksu, warto dodać).
Akodo_Shado:
Konsekwencja tego problemu jest też taka, że
o ile ‘kote[a-z]%’ robi się błyskawicznie o tyle
‘[a-z]%otek’ już nie koniecznie.
brejk:
Co w tym dziwnego? W drugim przypadku serwer musi przecież przeszukać praktycznie całą tabelę (od a do z).
————————————————————————————-