Download - Operacje minimalnie logowane
![Page 1: Operacje minimalnie logowane](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/1.jpg)
Operacje minimalnie logowane
95. Spotkanie PLSSUG Warszawa, 07.04.2016.
![Page 2: Operacje minimalnie logowane](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/8.jpg)
DEMOPierwsze z dwóch, ale za to duże i długie
![Page 9: Operacje minimalnie logowane](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/12.jpg)
ZaletySzybszy zapis danych do loguMniejsze I/O
![Page 13: Operacje minimalnie logowane](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/14.jpg)
TRUNCATEBłyskawiczne kasowanie danychJest logowane, czy nie jest?Dlaczego działa tak szybko?
![Page 15: Operacje minimalnie logowane](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/15.jpg)
DEMODrugie i ostatnie, za to krótkie
![Page 16: Operacje minimalnie logowane](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022082907/58eeaf741a28ab10338b45bb/html5/thumbnails/17.jpg)
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/