1 / 30

SQL Server Lock Model

SQL Server Lock Model. Lock Model , o que é ?. Como o SQL Server gere toda a problemática dos locks. Lock Model , porquê ?. Os locks , em conjunto com os índices, são as 2 coisas que mais contribuem para escalabilidade do SQL Server, ou para a falta dela.

mliss
Download Presentation

SQL Server Lock Model

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Server LockModel

  2. LockModel, o que é ? • Como o SQL Server gere toda a problemática dos locks

  3. LockModel, porquê ? • Os locks, em conjunto com os índices, são as 2 coisas que mais contribuem para escalabilidade do SQL Server, ou para a falta dela. • Conhecer o lockmodel é uma grande ajuda, nos despiste de problemas “estranhos”, como por exemplo a aplicação estar lenta e o CPU, IO não ter utilização significativa ou ainda um determinado job às vezes não terminar.

  4. Locks

  5. Problemática dos locks Problemas “estranhos” tps Escalabilidade “NonrepeatableReads” Integridade carga “Phantoms” Concurrência Duração “Dirty Read”

  6. Propriedades das transacções ACID • A)tomicity (tudo ou nada) • C)onsistency • I)solation (grau de independência) • D)urability

  7. Uma transação BEGIN TRY BEGIN TRANSACTION T1 INSERT INTO dbo.t1 SELECT p.ProductID FROM Production.Product AS p INSERT INTO dbo.t1 VALUES (1) COMMIT TRANSACTION T1 END TRY BEGIN CATCH ROLLBACK TRANSACTION T1 PRINT 'An error occurred' RETURN END CATCH

  8. Granularidade dos Locks • Row (RID) • Key (KEY) • Page (PAG) • Extent (EXT) • Table (TAB) • Database (DB)

  9. Background information • P:Qual a dimensão máxima de uma row ? • R:8060 bytes • P:Qual é a dimensão de uma página ? • R:8Kb • P:Qual é a dimensão de um extent ? • R:8 Páginas, 64 Kb

  10. Row : até 8Kb (8060 Bytes) Page : 8Kb (8192 Bytes) Extent (8 pages) 8 x 8Kb =64Kb Mixedexents (8 objectos)

  11. Tipos de Lock • Shared (S) • Update (U) • Exclusive (X) • IntentShared (IS) • Intent Exclusive (IX) • ShemaModification (Sch-M) • ShemaStability (Sch-S) • RangeS-S • Etc..

  12. Gestão da concorrência:a) Níveis de Isolamento • ReadUncomited • ReadCommitted • ReadCommitedSnapshot • RepeatableRead • Serialzable • Snapshot b) LockHints

  13. “Sistema Solar” do SQL

  14. Comportamentos Permitidos

  15. LockHints

  16. Qual estratégia esclher ?

  17. P: Como definir o isolationlevel ? • R: SET TRANSACTION ISOLATION LEVEL R: DBCC USEROPTIONS P: Como saber qual oisolationlevel ?

  18. SET TRANSACTION ISOLATION LEVEL • SET TRANSACTION ISOLATION LEVEL     • { • READ UNCOMMITTED | • READ COMMITTED     | • REPEATABLE READ     | • SNAPSHOT     | • SERIALIZABLE    • } • Nota : Se READ_COMMITTED_SNAPSHOT está ON, O SQL Server usa “row versioning” (tempdb).

  19. Modo de compatibilidade Sim Grant Lock Compatível ? Não WaitSET LOCK_TIMEOUT timeout_period @@LOCK_TIMEOUT S > S > Grant X > S > Wait

  20. Modo de compatibilidade (full)

  21. Quais os locks na alteração e porquê • P: S ⇒ X ou S ⇒ U ⇒ X ? • R: S ⇒ U ⇒ X

  22. Deadlock

  23. Tipos de Locks especiais • IntentLock • Latches

  24. Ferramentas • sp_lock • SQL Server ManagementStudio • Profiler • Performance counter

  25. sp_lock S,X,U,etc

  26. Recomendações • Manter transacções pequenas evitando operações “caras”. • Optimizar queries usando índices. • Evitar perder controlo no âmbito da transacção. • Monitorizar “longrunning processes”. • Investir no tratamento de erros ou usar SET XACT_ABORT ON paraevitarumatransacçãoficaraberta no surgimento de umacondição de erro. • Usar o nível de isolamento o maisbaixopossível,

  27. Problemática dos locks Problemas “estranhos” sp_lock tps EscalabilidadeBaixar isolation level “NonrepeatableReads” Repeatableread Integridade carga “Phantoms” Serializable Concurrência Baixar isolation level Duração Lock timout Controloerros SET XACT_ABORT ON “Dirty Read” Read commited Repetable reads Serializable

  28. Bibliografia • Hand on SQL 2000 Troubleshooting locking and blocking (net impress) • Inside Microsoft SQL Server 2005. TheStorageEngine (microsoft) • Microsoft SQL Server 2008 Internals (microsoft) • SQL Server 2008 Query Performance TuningDistilled (apress)

  29. Q & A

  30. fim.

More Related