ÖVERVAKNING AV SQL SERVER

Relevanta dokument
Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Databaser design och programmering. Transaktionshantering och säkerhet säkerhetsproblem fleranvändarproblem transaktioner låsning

Föreläsning 6 Databaser och säkerhet

Transaktioner och samtidighet

Databaser - Design och programmering. Säkerhetsproblem. SQL-injektion. Databashanteraren. Transaktion. Exempel. Transaktionshantering och säkerhet

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Databaser design och programmering Säkerhetsproblem Databashanteraren SQL-injektion

Föreläsning 7: Transaktioner

Stored procedure i ASP.NET

1.Lär känna MS SQL Observera. Tips. Förberedelse

LEX INSTRUKTION - REPLIKERING

KAP 16 BACKUP, RESTORE OCH RECOVERY

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Databasutveckling Introduktion till SQL och TSQL

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

Installationsanvisning. Dokumenttyp Installationsanvisning Område Boss med delad databas

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Monitor Pro V7 SCADA. Kom-igång med kommunikation Unitelway TCP/IP

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

JobOffice SQL databas på server

Kunskapsbank ICARUS DB

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Innehåll Programability Del 2

Funktionsbeskrivning

LEX INSTRUKTION REPLIKERING UPPGRADERING

TENTAMEN DATABASKUNSKAP ITEK12

KAP 18 SQL SERVER AGENT

LEX INSTRUKTION LEX LDAP

Innehåll Översikt: Arbeta med databaser... 3 Översikt databaser i SQL Server... 4 Översikt databaser i SQL Server... 5 Hur information lagras i SQL

Karlstads Universitet, Datavetenskap 1

Övningar i SQL. SQLAccess.doc Ove Lundgren

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Stored procedure i ASP.NET

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Administration av SQL Server. Laboration ADM2

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Lösningar till tentamen i EDAF75

OBS!!! Anslut ej USB kabeln till dator eller GPS innan du först har installerat drivrutinerna för USB kabeln i din dator.

Uppdatera Easy Planning till SQL

Klientprogrammering mot databaser

DI Studio nyheter

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

1.1 Runnable och Thread

Tips & Trix - Teknik Jeeves World Copyright 2011 Jeeves Information Systems AB

Övning 1: Skapa virtuell maskin för utveckling.

Starta MySQL Query Browser

Informationsmaterial och manual Nytt körordersystem webb

Microsoft Operations Manager 2005

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Tentamen i Databasteknik

Innehåll Security. Chapter 4 och 7 Beginning SQL Server 2008 for Developers

Hur patchar man Entré?

Structured query language (SQL)

Alternativ till låsning. Optimistik approach TimeStamp

LABORATION 2 DNS. Laboranter: Operativsystem 1 HT12. Martin Andersson. Utskriftsdatum:

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

SKOLA24 ARBETSSÄTT I SKOLA24 SCHEMA

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

OBS! Figuren visar inte alla aspekter och objekt som är inblandade i säkerhetssystemet.

1 Installationsinstruktioner

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Uppdatera Easy Planning till SQL

Installationsanvisningar VisiMIX. Ansvarig: Visi System AB Version: 2.2 Datum: Mottagare: Visi MIX kund

Sample exam questions. Database exam TIG058

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Föreläsning 2: Översikt över ett databassystem

Message Broadcasting. Driftmiljö. Installera Message Broadcasting. Skapa meddelanden

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

ADO.NET Murach Kapitel 17-20

ARX på Windows Vista, Windows 7 eller Windows 2008 server

Capitex dataservertjänst

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

1DV416 Windowsadministration I, 7.5hp MODULE 4 GROUP POLICY, STORAGE AND ACCESS CONTROLS GROUP POLICY

Arbetssätt i Skola24 Schema

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

1 Installationsinstruktioner

Systemintegration Outlook

Design och underhåll av databaser

Vyer, Prepared Statements, Triggers

Language Integrated Query, LINQ, och databaser

Informationsmaterial och manual Nytt körordersystem webb

Manuell installation av SQL Server 2008 R2 Express SP2 fo r SSF Timing

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Exam Concurrent and Real-Time Programming

Storegate Pro Backup. Innehåll

Hur patchar man Entré?

Manual Körorder webb

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Tentamen DATABASTEKNIK - 1DL116

Transkript:

ÖVERVAKNING AV SQL SERVER Hantering resurser för samtidiga användare Övervakning av SQL Servers aktiviteter Hantering av blockerade processer Användning av SQL Profiler för att hitta besvärliga frågor 1 TRANSAKTIONER KORT ORIENTERING En transaktion innebär kortfattat att "allt eller inget" utförs 1. Implicita Transaktioner Antag att du ska skriva en SQL-fråga som ökar lönen på alla personer som tillhör dataavdelningen med 5%. Detta kan utföras med en enda SQL-fråga som skulle kunna se ut så här. UPDATE Personal SET Lön = Lön * 1.05 WHERE Avdelning = 'Data'; Varje INSERT, UPDATE och DELETE-fråga är en automatisk (implicit) transaktion. Om det skulle bli strömavbrott eller något annat fel under tiden frågan körs skulle man inte veta vilka som fått högre lön och vilka som inte fått det. Det skulle kosta mycket tid och pengar att rätta till det hela. Tack vare transaktionen innebär det att om inte hela frågan lyckas så görs ROLLBACK på transaktionen och återställer till läget innan transaktionen. Om frågan lyckas görs COMMIT automatiskt vilket innebär att resultatet sparas permanent 2 1

2. Explicita transaktioner TRANSAKTIONER KORT ORIENTERING När flera av varandra beroende operationer görs efter varandra och alla måste lyckas, måste man själv skapa en (explicit) transaktion. Transaktionen ska göra ROLLBACK om något gör fel och COMMIT om inget fel uppstått. BEGIN TRY BEGIN TRAN -- Ta ut 1000 kr från konto 5 Ex. UPDATE Account En bank ska överföra en summa pengar från ett SET Amount -= 1000 WHERE AccountID = 5; konto till ett annat konto. Då får det inte vara så att bara uttaget eller bara insättningen skulle lyckas. Både uttag OCH insättning måste utföras utan fel. En transaktion kan enkelt beskrivas med: Allt eller inget -- Sätt in 1000 kr till konto 9 UPDATE Account SET Amount += 1000 WHERE AccountID = 9; COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN; Raiserror('Fel',16,1); END CATCH Inne i ett TRY-block utförs uttag och insättning. Transaktionen startar med BEGIN TRAN. Om allt fungerar, utförs sist COMMIT TRAN som sparar operationerna permanent. Om det blir ett fel i TRY-bocket fortsätter körningen i CATCH-blocket och gör alla operationerna ogjorda med ROLLBACK TRAN. 3 LÅS (LOCKS) Lås SQL-Server SQL Server låser objekt när samtidiga användare (concurrent users) vill komma åt dem för uppdatering eller radering SQL Server använder lås för att uppfylla villkoren på en transaktion andra användare ska inte komma in och störa transaktionen SQL Server väljer själv lämplig nivå att låsa på Row, Page, Keys, Key Ranges, Table, Index, Database, Schema Förhindrar de problem som kan uppstå: Dirty data -Användare kan se andra användares uncommited data Lost update -En användares uppdatering skriver över en annan uppdatering Unrepeatable reads -En andra läsning ger ett annat resultat än tidigare läsning av samma post 4 2

LÅS (LOCKS) Lås krävs för att skydda resurser när det finns samtidiga (concurrent) användare Problem med Lås (Locks) Blockerade processer En process som ligger och väntar på att lås ska släppas Deadlock Kallas även "The deadly embrace", kan uppstå då två transaktioner låser data som den andra vill ha, fast i omvänd ordning. BEGIN TRAN A --(1) Låser ProductID=1 SET UnitPrice = UnitPrice*1.20 WHERE ProductID = 1 1 2 BEGIN TRAN B --(2) Låser ProductID=2 SET UnitPrice = UnitPrice*0.9 WHERE ProductID = 2 --(3) Väntar på att få låsa ProductID=2 3 SET UnitPrice = UnitPrice*1.15 WHERE ProductID = 2 --(4) Väntar på att få låsa ProductID=1 SET UnitPrice = UnitPrice*0.8 WHERE ProductID = 1 4 Deadlock Vi har fått en deadlock! SQL Server kommer att som tur är avbryta en av transaktionerna, förmodligen avbryts B, eftersom den kom sist. 5 ÖVERVAKNING AV SQL SERVER Varför övervaka? Förbättra prestanda Hitta flaskhalsar Kontrollera om hårdvaran rätt dimensionerad Kontrollera om SQL Server är effektivt konfigurerad Studera användarnas aktiviteter Vilken typ av arbete utförs Vilka resurser krävs av vanliga transaktioner Övervakningsverktyg SQL Server Profiler Detaljerade spårningar (traces) av aktiviteter Hittar besvärliga frågor Övervakar händelser (events) i SQL Servermotorn Activity Monitor - Aktivitetsövervakaren Övervakning av processer och resurser Hittar besvärliga frågor sp_who, sp_who2, sp_lock Kommando-versioner av Activity Monitor 6 3

SQL SERVER PROFILER SQL Server Profiler är ett verktyg för att övervaka händelser (events) i SQL Server Engine. Startas från Start-menyn eller från Tools-menyn i Management Studio En spårning (trace) skapas antingen från scratch där man väljer vilka händelser man vill undersöka eller så används en färdig mall Man kan filtrera så att endast vissa användares aktiviteter spåras - håller informationen nere Med profiler startad visas alla inställda händelser med information om tider, SQL satser mm Man kan hitta frågor som tar lång tid, långa låsningar, deadlocks, ja i princip all trafik och händelser i servern kan inspekteras Kan användas till prestandatrimning eller kanske till "reverse engineering" för att utröna vilka frågor som ställs från en applikation 7 ACTIVITY MONITOR #1 Activity monitor Startas genom att högerklicka på valfri SQL server i Object Explorer - Välj sedan Activity monitor. 4 diagram visar: 1. "% Processor time" 2. "Waiting tasks" 3. "Database I/O" 4. "Batch Requests/s" Underst finns fyra utfällbara fönster där processer, väntetider, file I/O och tunga frågor kan studeras. 8 4

ACTIVITY MONITOR #2 I Processes kan man t ex hitta processer blockerande processer Man kan också filtrera på alla kolumner hitta blockerande processer visa fråga (högerklick- Details) döda process (- Kill Process) trace'a i profiler. (-Trace Process ) I Resource Waits kan man leta efter flaskhalsar (hög Wait Time) I Data File I/O kan man hitta databaser som har hög I/O I Recent Expensive Queries visar de senaste "tunga" frågorna 9 HANTERING AV BLOCKERADE PROCESSER Visa låsta processer Med Activity Monitor kan man lätt spåra orsaken till att processer blir hängande. Se föregående bild! Åtgärder Man kan antingen avbryta den blockerande processen eller den blockerande processen med "Kill Process" när man tagit reda på orsaken. Skydd mot att bli blockerad Lägg in en timeout med: SET LOCK_TIMEOUT milliseconds -- Kan endast sättas för sessionen Ex. SET LOCK_TIMEOUT -1 -- Vänta för evigt SET LOCK_TIMEOUT 0 -- Vänta inte alls SET LOCK_TIMEOUT 3000 -- Vänta 3 s SELECT @@LOCK_TIMEOUT -- visar aktuellt värde 10 5

SAMMANFATTNING En transaktion är ett antal SQL-satser som måste utföras i sin helhet. Allt eller inget. En lyckad transaktion avslutas med COMMIT och en misslyckad med ROLLBACK. Alla INSERT, UPDATE och DELTE - SQL-satser är implicita (automatiska) transaktioner. När två eller flera operationer ska utföras i sin helhet (allt eller inget) bildar man en explicit transaktion med BEGIN TRAN och testar alla operationer på fel. Om inget fel uppstår gör man COMMIT TRAN som sparar resultatet permanent och om det uppstår ett fel gör man ROLLBACK TRAN som gör alla operationer i transaktionen ogjorda. När flera användare vill komma åt samma resurser måste dessa låsas för en användare i taget - speciellt för update och delete. SQL Server väljer själv lämplig nivå att låsa på - Row, Page, Keys, Key Ranges, Table, Index, Database, Schema Lås förhindrar o Dirty data o Lost update o Unrepeatable reads Låsen gör att nya problem kan uppstå t ex Blockering och Deadlock. Låsningar kan studeras med: Activity Monitor, sp_who, sp_who2, sp_lock Väntetid kan minskas med SET LOCK_TIMEOUT Aktiviteter i SQL Server kan detaljstuderas med hjälp av SQL Profiler 11 6