• Blog
  • Oferta
    • Oprogramowanie na zamówienie
    • Oprogramowanie dla firm
      • HostedSMS
      • HostedWindows
      • HostedExchange
      • Serwis eczaspracy.pl
    • Narzędzia administracyjne
      • DSM
      • FSM
      • SPM
      • ATC
    • Wdrożenia, migracje, support
      • Wdrożenia systemów
      • Migracja Exchange 2003 2007 2010 2013
      • Szkolenia Microsoft Exchange
      • Migracja Lotus Domino / Notes do Microsoft Exchange
    • Obsługa konkursów
    • Marketing SMS
    • Systemy intranetowe
      • Wdrożenia intranetów
      • Serwisy Microsoft SharePoint
      • Platforma intranetowa
    • Sprzedaż oprogramowania
      • VMware
      • Veeam
      • Proxmox
    • Wynajem specjalistów IT
    • Obsługa informatyczna firm i outsourcing IT
    • Audyty Informatyczne
    • Utrzymanie, rozwój i modernizacja starego oprogramowania
  • Dowiedz się więcej
    • Nasze realizacje
      • Bramka SMS
      • Konfigurator telefonów
      • Systemy finansowo ubezpieczeniowe
      • Wspomaganie zarządzania kryzysowego
      • Zarządzanie sprzedażą
      • Platforma komunikacji społecznościowej
      • CMS - Systemy zarządzania treścia
      • Wirtualna Recepcja
      • Projekt omnie.to
      • SMS Vote
    • Nasze technologie
    • Modele współpracy
    • Oprogramowanie jako usługa
  • O firmie
    • O nas
    • Nasz zespół programistów
    • Praca w dcs.pl
      • Junior Programista .NET
      • Programista .Net
      • Programista React
      • Programista Python
      • Inżynier DevOps
      • Inżynier Systemowy
      • IT Project Manager
      • Tester aplikacji
    • Nagrody i wyróżnienia
    • Partnerzy i Certyfikacje
      • Microsoft Partner
      • VMware Partner
      • Veeam Partner
      • Idera
      • Kentico
      • Unizeto
    • Polityka prywatności
  • Kontakt
PL EN
  • Blog
  • Oferta
    • Oprogramowanie na zamówienie
    • Oprogramowanie dla firm
      • HostedSMS
      • HostedWindows
      • HostedExchange
      • Serwis eczaspracy.pl
    • Narzędzia administracyjne
      • DSM
      • FSM
      • SPM
      • ATC
    • Wdrożenia, migracje, support
      • Wdrożenia systemów
      • Migracja Exchange 2003 2007 2010 2013
      • Szkolenia Microsoft Exchange
      • Migracja Lotus Domino / Notes do Microsoft Exchange
    • Obsługa konkursów
    • Marketing SMS
    • Systemy intranetowe
      • Wdrożenia intranetów
      • Serwisy Microsoft SharePoint
      • Platforma intranetowa
    • Sprzedaż oprogramowania
      • VMware
      • Veeam
      • Proxmox
    • Wynajem specjalistów IT
    • Obsługa informatyczna firm i outsourcing IT
    • Audyty Informatyczne
    • Utrzymanie, rozwój i modernizacja starego oprogramowania
  • Dowiedz się więcej
    • Nasze realizacje
      • Bramka SMS
      • Konfigurator telefonów
      • Systemy finansowo ubezpieczeniowe
      • Wspomaganie zarządzania kryzysowego
      • Zarządzanie sprzedażą
      • Platforma komunikacji społecznościowej
      • CMS - Systemy zarządzania treścia
      • Wirtualna Recepcja
      • Projekt omnie.to
      • SMS Vote
    • Nasze technologie
    • Modele współpracy
    • Oprogramowanie jako usługa
  • O firmie
    • O nas
    • Nasz zespół programistów
    • Praca w dcs.pl
      • Junior Programista .NET
      • Programista .Net
      • Programista React
      • Programista Python
      • Inżynier DevOps
      • Inżynier Systemowy
      • IT Project Manager
      • Tester aplikacji
    • Nagrody i wyróżnienia
    • Partnerzy i Certyfikacje
      • Microsoft Partner
      • VMware Partner
      • Veeam Partner
      • Idera
      • Kentico
      • Unizeto
    • Polityka prywatności
  • Kontakt
  1. dcs.pl
  2. Blog
29-09-2015 Marcin Zawadzki SQL

Wydajność aplikacji korzystających z Microsoft SQL Server

Wydajność baz danych SQL to problem, który prędzej czy później spotyka każdego administratora systemu. Dzieje się tak, ponieważ developerzy tworząc nowe aplikacje niejednokrotnie korzystają z niewielkich ilości danych testowych, nie poświęcając wiele czasu jej wydajności. Po uruchomieniu aplikacji w środowisku produkcyjnym z biegiem czasu ilość danych zgromadzonych w bazie zwiększa się, przez co aplikacja działa coraz wolniej… do tego stopnie, iż czasami uniemożliwia pracę użytkownikom.

Na szczęście w przypadku aplikacji korzystających z serwera bazy danych Microsoft SQL Server administratorzy mają do dyspozycji narzędzia, które w wielu przypadkach mogą istotnie poprawić wydajność takich aplikacji. Cały ten proces optymalizacji wydajności jest nazywany strojeniem bazy danych i składa się z kilku kroków.

Performance Monitor

Podstawową optymalizacji jest znalezienie zasobu będącego wąskim gardłem. Takim wydajnościowym wąskim gardłem może być dostęp do dysku, wielkość pamięci operacyjnej, obciążenie CPU, ale także zbyt duża liczba użytkowników sięgająca do tych samych danych i w efekcie blokująca się wzajemnie. Diagnozę można postawić sprawdzając wartości liczników systemowych (procent wykorzystania CPU, wolna pamięć operacyjna, kolejka dyskowa) jak i bazy danych (stopień wykorzystania buforów i pamięci podręcznej, oraz liczniki dotyczące blokad).

Następnie administrator aplikacji powinien znaleźć zapytania będące źródłem problemów. Kluczowym narzędziem w tym procesie jest SQL Profiler, oraz wbudowane raporty bazodanowe - w szczególności „Top Queries by Total CPU Time”, a także „Top Queries By Total IO”.  W przypadku, gdy wykorzystanie dysków i procesora jest niewielkie, a zapytania kończą się timeoutem należy sprawdzić również „Object Execution Statistics”, „Top Queries By Average CPU Time” i „Top Queries By Average IO”.

object execution statistics

Częstym problemem obniżającym wydajność są brakujące indeksy. Można je znaleźć analizując zapytania będące źródłem problemu za pomocą wbudowanego „Database Engine Tuning Advisor” lub sprawdzając odpowiednie widoki dynamiczne gromadzące wiedzę o brakujących indeksach na podstawie danych historycznych (google for: „missing index script”). Należy przy tym pamiętać, że zbyt duża liczba niepotrzebnych indeksów również może być przyczyną problemów wydajnościowych, ponieważ musza one być utrzymywane przy operacjach wstawienia, modyfikacji i kasowania rekordu. W niektórych przypadkach narzędzia te nie wskażą rozwiązania problemu i wymagana będzie ręczna analiza planu zapytania (przykład braku indeksu na kolumnie funkcyjnej).

Jeżeli mimo założonych indeksów baza wybiera błędny plan zapytania, problemem mogą być nieaktualne statystyki lub ich zupełny bark. Rozwiązaniem jest ustawienie odpowiednich opcji na bazie danych (auto create/update statistics), lub ustawienie odpowiedniego planu utrzymaniowego zawierającego przeliczanie statystyk. Możliwe jest również wymuszenie odpowiedniego planu dla zapytania, ale jest to zwykle ostateczność i należy być w tym przypadku bardzo ostrożnym.

W przypadku niektórych problemów związanych z blokowaniem istotne jest ustawienie odpowiedniego poziomu izolacji dla transakcji. Pomóc tutaj może poziom izolacji - snapshot, który można włączyć we właściwościach bazy danych. W niektórych przypadkach wskazane może być przepisanie niektórych funkcji, procedur lub widoków w bazie danych, jeżeli aplikacja z takich obiektów korzysta.

W przypadku aplikacji biznesowych często problem jest generowany przez raporty wykonujące się w czasie normalnej pracy aplikacji. Rozwiązaniem problemu może być przeniesienie generowania raportów na godziny nocne, lub rozdzielenie części raportowej od części odpowiedzialnej za bieżące działanie aplikacji.

Na zakończenie warto również wspomnieć o defragmentacji indeksów, partycjonowaniu danych i odpowiednim ułożeniu struktur na dysku (np. plik logu transakcyjnego powinien być na innym dysku niż plik bazy danych, baza tempdb powinna być na innym dysku, niż bazy użytkownika, a indeks może być na innym dysku, niż tabela, z której są pobierane dane). Oczywiście w tym ostatnim przypadku chodzi o fizyczne dyski – przypisywanie plików do różnych partycji na tym samym dysku lub na macierzy RAID5 nie ma większego sensu.

Powyższe metody są o tyle istotne, że pozwalają administratorom rozwiązać problem z wydajnością aplikacji bez jej modyfikacji. Właściwe modelowanie baz danych, czy zmiana kodu aplikacji pod kontem wydajności baz danych to już tematy na osobne rozważania.

Powiązane

Nowy tester aplikacji - czyli monitorowanie wewnętrznych i zewnętrznych aplikacji biznesowych
Niedoceniona migracja bazy danych SQL (1/2)
Tweet

1 komentarze

Romek7 listopada 2015 12:58

deadlocki, to jest wyzwanie - najczęściej spowodowane źle zaprojektowaną aplikacją

Odpowiedz
Zgłoś

Kategorie

  • Oprogramowanie dla firm 11
  • Wdrożenia, migracje, support 3
  • Oprogramowanie na zamówienie 2
  • Marketing SMS 3
  • Konkursy 2
  • Systemy intranetowe 2
  • Narzędzia administracyjne 6

Tagi

administracja administration bezpieczeństwo it case study django CMS dla firm featured głosowanie sms hostedsms hosting intranet kampanie sms kampanie SMS konferencja masowe wysyłki sms migracje monitorowanie aplikacji narzędzia .NET network resources o nas permissions portale firmowe prawybory programowanie proxmox python SQL system ubezpieczeniowy systemy intranetowe system zarządzania treścią testy produktów tools ubezpieczenia uprawnienia wdrożenia wybory prezydenckie
dcs.pl - linkedin
Bądź na bieżąco Śledź nas na LinkedIn, aby otrzymywać aktualizacje i informacje.

Kontakt

dcs.pl Sp. z o.o,
ul. Puławska 303,
02-785 Warszawa,
NIP: 951-20-63-362,
+48 22 5486000,
info@dcs.pl

O firmie

  • Kontakt z nami
  • O nas
  • Blog
  • Kariera

Zasoby

  • Polityka prywatności
  • Aktualności dcs.pl

Usługi

  • Projekty na zamówienie
  • Implementacja Systemów
  • Outsourcing

Produkty

  • Narzędzia administracyjne
  • Software as a Service
  • Produkty finansowe & ubezpieczeniowe

Nasze serwisy

  • Hosted SMS
  • Hosted Exchange
  • Hosted Windows
  • eczaspracy.pl
  • Przeglądy Budynku
  • Share File Safe
  • File Share Manager
dcs.pl - linkedin
Bądź na bieżąco Śledź nas na LinkedIn, aby otrzymywać aktualizacje i informacje.

Copyright ©dcs.pl 1995-2025 Sp. z o.o. All rights reserved.