Optymalna konfiguracja Microsoft SQL Server 2014 Damian Widera SQL Server MVP © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Damian Widera damian.widera@live.com @Damian.Widera http://sqlblog.com/blogs/damian_widera/default.aspx
Agenda Czy jest sens w ogóle o tym mówić? Gdzie popełniamy błedy? Design? Aplikacja? Konfiguracja serwera? Konfiguracja SQL Server
Trendy IT Dane cyfrowe zwiększą się 44x w ciągu następnej dekady EKSPLOZJA DANYCH KONSUMERYZACJA IT PRIVATE & PUBLIC CLOUD Dane cyfrowe zwiększą się 44x w ciągu następnej dekady W 2015, usługi w chmurze będą stanowiły 46% wzrostu wydatków na IT IDC Digital Universe Study, sponsored by EMC, May 2010. Worldwide and Regional Public IT Cloud Services 2011 – 2015 Forecast, IDC , June 2011—Doc #228485
Czy mamy dużo danych? 2 miesiące 198 GB
Kompresja kopii zapasowej - TAK Od SQL Server 2008 – tylko w edycji Enterprise Od SQL Server 2008 R2 ++ - dostępne w edycji Standard Domyślnie wyłączona BACKUP WITH COMPRESSION Zmiana domyślnego zachowania: EXEC sys.sp_configure 'backup compression default'‚ 1
Kompresja kopii zapasowej - TAK KAŻDA edycja jest w stanie odtworzyć skompresowaną kopię zapasową bazy danych Zysk: SELECT backup_size / compressed_backup_size, backup_start_date,backup_finish_date FROM msdb.dbo.backupset
Optimize for adhoc workload - TAK Pomaga uratować cache - plan cache Użycie zapytań „adhoc” utrudnia ponowne użycie planów zapytań Cache zawiera mnóstwo planów użytych tylko raz Cache planów będzie coraz większy kosztem pamięci przeznaczonej na dane
Optimize for adhoc workload - TAK Zapytanie wykonane tylko raz – w cache przechowywany jest tylko „stub” planu (128 bajtów) Pełny plan będzie przechowany jeśli zapytanie zostanie wykonane po raz kolejny Konfiguracja: EXEC sys.sp_configure'optimize for ad hoc workloads',1
Optimize for adhoc workload - TAK SELECT * FROM sys.dm_exec_cached_plans WHERE objtype='Adhoc'
Włączenie opcji Priority Boost - NIE Opcja przeznaczona do wycofania, była istotna w SQL Server 2000 Wątki SQL Server uruchamiane są z wysokim priorytetem Wątki „nie SQL” mogą być uruchamiane rzadko lub wcale Uwaga – serwer może nie odpowiadać Uwaga – można zauważyć nieplanowane przełączenia klastra
Instant File Initialization - TAK Plik danych jest inicjalizowany bez operacji zerowania Tworzenie bazy danych Dodawanie plików danych Zwiększenie rozmiaru pliku Odtworzenie pliku z kopii zapasowej Co trzeba zrobić: PERFORM VOLUME MAINTENANCE TASK Restart SQL Server
Instant File Initialization - TAK Nie działa: Plik dziennika transakcji – zawsze musi być zerowany Migawka bazy danych Włączone TDE TF 1806 – wyłącza opcję
Domyślna opcja rozszerzania plików - NIE Domyślne opcje rozszerzania plików bazy danych 1MB dla plików danych 10% dla dziennika transakcji Wartości są dziedziczone z bazy model – można / trzeba je zmienić! Produkcyjne bazy danych są większe niż kilka MB Częste powiększanie powoduje konieczność alokacji zasobów serwera – zwolnienie jego pracy Fragmentacja
Zbyt wiele plików VLF - NIE Plik dziennika transakcji (ldf) składa się wewnętrzne z wirtualnych plików DBCC LOGINFO – zwraca 1 wiersz dla każdego VLF
Zbyt wiele plików VLF - NIE Fakty: Około 100 VLF – OK Dla bazy 350 GB – 350-400 plików jest OK Mała ilość dużych plików – niedobrze Duża ilość małych plików - nieodbrze Tracimy czas podczas odtwarzania / odzyskiwania / startu bazy danych
Zbyt wiele plików VLF - NIE Ile plików jest tworzonych domyślnie: < 64MB = 4pliki (1/4 wielkości bazy) 64MB -> 1GB = 8 plików (1/8....) > 1GB = 16 plików (1/16....) Uwaga: SQL 2014 ma zmieniony algorytm http://www.sqlskills.com/blogs/paul/important-change-vlf-creation-algorithm-sql-server-2014/
Nieużywane indeksy - NIE Indeksy muszą być zarządzane Operacje DML ( I + U + D) Fragmentacja Gdzie szukać informacji: SELECT * FROM sys.dm_db_index_usage_stats Index_id -> sys.indexes Object_id Database_id
Opcja AUTO_CLOSE OFF - TAK Opcja konfiguracyjna w bazie danych Domyślnie włączona w SQL Server Express Przy braku aktywnych połączeń baza danych przechodzi w tryb offline Nowe połączenie powoduje przełączenie bazy w tryb online – może wystąpić timeout!!!
Opcja AUTO_SHRINK OFF - TAK Opcja konfiguracyjna w bazie danych Włączona – zmniejsza pliki bazy danych Czas / Moment zmniejszenia – nieznany Powoduje znaczne obciążenie serwera Powoduje fragmentację indeksów
Poprawne ustawienie MAXDOP - TAK MAXDOP > 1 (lub =0) umożliwia wielowątkowe uruchamianie zapytań Może się zdarzyć, że spowoduje to problemy z zasobami i w efekcie zamiast szybszego wyniku – będzie wolniej
CXPACKET Pojawia się w momencie, kiedy zadanie jest wykonywane na wielu procesorach To nie znaczy, że jest źle Jeśli wartości szybko rosną – może to być problem NIE rekomendować od razu MAXDOP = 1 Najlepiej na całej instancji (to żart) Jeśli pojawia się w towarzystwie PAGEIOLATCH_SH -> duuuży skan danych
Jak to działa – wykonywanie „zadania” w SQL Server Processor Waiting Queue Runnable Queue
Zadania - informacje SUSPENDED = Waiter List (chcę coś zrobić, ale czekam na zasoby) - sys.dm_os_waiting_tasks RUNNABLE = Runnable Queue (mam już zasoby, czekam na procesor) sys.dm_exec_requests RUNNING – PROCESSOR (zadanie jest w trakcie wykonywania)
Jak to działa czII Processor Waiting Queue Runnable Queue Processor
Jak to działa – wykonanie równoległe Thread 5 Thread 0 Thread 1 Thread 6 Thread 2 Exchange operator Thread 7 Thread 3 Thread 8 Thread 4
Execution Model w praktyce SQL Server 2005 Waits and Queues , Tony Davidson
Execution Model w praktyce SQL Server 2005 Waits and Queues , Tony Davidson
Execution Model w praktyce (*,**) SQL Server 2005 Waits and Queues , Tony Davidson
CXPACKET – brak problemu
CXPACKET – problem
CXPACKET - diagnoza Pojawia się zawsze przy zrównolegleniu operacji Table scan Brak indeksu (ncl), nieodpowiedni plan zapytania Brak dobrych statystyk Należy Zadbać o aktualizację statystyk Zweryfikować strategię indeksowania MAXDOP …
MAXDOP – na marginesie Znalezione w sieci „rekomendacje” Fakty Ustawić na 1, jeżeli CXPACKET to dominujący WAIT Ustawić na 1 zawsze dla systemów OLTP Ustawić na połowę liczby fizycznych procesorów Ustawić na liczbę węzłów NUMA Fakty NIE MA jednej, dobrej reguły ustawiania MAXDOP Są wskazówki, co należy zrobić
MAXDOP – wskazówki Dla większości systemów OLTP ustawienie MAXDOP na 1 da dobry rezultat. Można spróbować zrobić to dla całej instancji (*), ale można też zidentyfikować problematyczne zapytania i spróbować dla nich ustawić taką opcję Dla systemów „mieszanych” (raporty – analizy – oltp) nie należy ustawiać MAXDOP=1 na poziomie instancji, tylko na poziomie poszczególnych zapytań. Jeśli jest Resorce Governor, to można zdefiniować grupy i im przydzielić MAXDOP Jeżeli w systemie dominuje CXPACKET, to przed zmianą MAXDOP należy sprawdzić, co jest jego przyczyną. Mogą to być problemy np. ze statystykami. Można zmienić Cost of Parallelism na wyższy
tempdb – „bottleneck by design” Default config: one data file, one log file. Now imagine: 64 cores, heavy workload – and everyone hitting the same tempdb file. Contention on page 2:1:1 (PFS) and/or 2:1:3 (SGAM) Solution: Create multiple files for tempdb, of equal size. MS recommends 1:1 with #CPUs, I recommend 1:2 unless more needed
MIN – MAX SERVER MEMORY - TAK Obydwie wartości powinny zostać poprawnie ustawione Jest to krytyczne ustawienie w środowiskach wirtualnych Dobre praktyki: Z dostępnego RAMu pozostawić 2-6GB na system operacyjny Pozostałą pamięć rozdzielić na instancje SQL Server Zwłaszcza ważne w klastrze!
Optymalna konfiguracja Microsoft SQL Server 2014 Damian Widera SQL Server MVP © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.