operacje minimalnie logowane

17
Operacje minimalnie logowane 95. Spotkanie PLSSUG Warszawa, 07.04.2016.

Upload: bartosz-ratajczyk

Post on 13-Apr-2017

162 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Operacje minimalnie logowane

Operacje minimalnie logowane

95. Spotkanie PLSSUG Warszawa, 07.04.2016.

Page 2: Operacje minimalnie logowane

Dziś w programieNa czym polega minimalne logowanie?Kiedy możemy z niego skorzystać?Ile można na tym stracić?A ile zyskać?Co to jest logowanie efektywne?Logowanie w TRUNCATE TABLE?

Page 3: Operacje minimalnie logowane

Bartosz Ratajczyk

Konsultant SQL Server

Programista aplikacji i baz danych

MCSE: Data Platform, MCT, MCTS SQL Server 2008

http://bartekr.net | [email protected]

Page 4: Operacje minimalnie logowane

Log transakcyjnyPrzechowuje informacje o każdej wykonanej

modyfikacji danychIlość zapisywanych informacji może zależeć od

modelu odzyskiwania danych (recovery model)

Page 5: Operacje minimalnie logowane

Logowanie minimalne (1)„At a minimum, enough information has to be logged when minimally logged operation is performed to allow SQL Server to rollback a transaction that has failed.”

Kalen Delaney, SQL Server Internals 2012

„Minimal logging involves logging only the information that is required to recover the transaction without supporting point-in-time recovery.”

BOL: https://msdn.microsoft.com/en-us/library/ms191244.aspx

Page 6: Operacje minimalnie logowane

Logowanie minimalne (2)Zawiera tylko informacje o alokacji stron danychPrzez co oszczędzamy na I/O zapisu do logu

ALE:Nie wszystkie informacje niezbędne do odtworzenia danych znajdują

się w logu transakcyjnymDopiero backup logu transakcyjnego zawiera zmienione strony

danych

Page 7: Operacje minimalnie logowane

Rodzaje logowaniaPełne – każda operacja ma swój rekord w logu

Efektywne – w logu znajduje się rekord dla zmienionej strony danych

Minimalne – logowany jest tylko fakt alokacji danych na stronę

Page 8: Operacje minimalnie logowane

DEMOPierwsze z dwóch, ale za to duże i długie

Page 9: Operacje minimalnie logowane

Co jest/może być minimalnie logowane?BULK INSERTbcpSELECT INTOINSERT INTO .. SELECTCREATE INDEXALTER INDEX REBUILD, DBCC DBREINDEX

REORGANIZE niestety nie.WRITEWRITETEXT, UPDATETEXT

DEPRECATED

Page 10: Operacje minimalnie logowane

Wymagania, wymaganianon-FULL recovery modelAND NOT replicatedAND (                (Heap AND TABLOCK)       OR (B-tree AND empty AND TABLOCK)       OR (B-tree AND empty AND TF-610)       OR (B-tree AND nonempty AND TF-610 AND NEW key-range))

Źródło: Itzik Ben-Gan, http://sqlmag.com/t-sql/minimally-logged-inserts

Page 11: Operacje minimalnie logowane

Jeszcze jeden mykJeśli nie ma możliwości użycia TABLOCK można użyć wytrychu

EXEC sys.sp_tableoption@TableNamePattern = N’dbo.Tabela’,@OptionName = ’table lock on bulk load’,@OptionValue = ’ON’

Page 12: Operacje minimalnie logowane

ZaletySzybszy zapis danych do loguMniejsze I/O

Page 13: Operacje minimalnie logowane

WadyWrażliwe na błędy w plikach danychWymaga trybu odzyskiwania danych SIMPLE lub

przełączania między FULL i BULK LOGGEDCzyli odpadają mirroring i Availability GroupsAle zadziała przy Log Shipping

Może wymagać TF 610 – sysadminWszystkie strony danych muszą być zapisane na dysku

przed zakończeniem transakcji

Page 14: Operacje minimalnie logowane

TRUNCATEBłyskawiczne kasowanie danychJest logowane, czy nie jest?Dlaczego działa tak szybko?

Page 15: Operacje minimalnie logowane

DEMODrugie i ostatnie, za to krótkie

Page 16: Operacje minimalnie logowane

Do zapamiętaniaLogowanie minimalne to zapisywanie do logu

transakcyjnego tylko informacji o alokacji stron danychPrzyspiesza część operacji, ale jest wrażliwe na błędy

plików danychTRUNCATE jest operacją w pełni logowaną, po prostu

jest logowana efektywnie

Page 17: Operacje minimalnie logowane

Do poczytaniaItzik Ben-Gan „Minimally logged inserts:

http://sqlmag.com/t-sql/minimally-logged-insertsGail Shaw, Tony Davis „Managing the Log in BULK_LOGGED Recovery

Model” http://www.sqlservercentral.com/articles/Stairway+Series/94552/

Paul Randall „The Myth that DROP and TRUNCATE TABLE are Non-Logged” http://sqlperformance.com/2013/05/sql-performance/drop-truncate-log-myth

Remus Rusanu „How to read and interpret the SQL Server log” http://rusanu.com/2014/03/10/how-to-read-and-interpret-the-sql-server-log/