Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Operacje minimalnie logowane

  1. 1. Operacje minimalnie logowane 95. Spotkanie PLSSUG Warszawa, 07.04.2016.
  2. 2. Dziś w programie Na 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?
  3. 3. Bartosz Ratajczyk Konsultant SQL Server Programista aplikacji i baz danych MCSE: Data Platform, MCT, MCTS SQL Server 2008 http://bartekr.net | b.ratajczyk@gmail.com
  4. 4. Log transakcyjny Przechowuje informacje o każdej wykonanej modyfikacji danych Ilość zapisywanych informacji może zależeć od modelu odzyskiwania danych (recovery model)
  5. 5. 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
  6. 6. Logowanie minimalne (2) Zawiera tylko informacje o alokacji stron danych Przez co oszczędzamy na I/O zapisu do logu ALE: Nie wszystkie informacje niezbędne do odtworzenia danych znajdują się w logu transakcyjnym Dopiero backup logu transakcyjnego zawiera zmienione strony danych
  7. 7. Rodzaje logowania Peł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ę
  8. 8. DEMO Pierwsze z dwóch, ale za to duże i długie
  9. 9. Co jest/może być minimalnie logowane? BULK INSERT bcp SELECT INTO INSERT INTO .. SELECT CREATE INDEX ALTER INDEX REBUILD, DBCC DBREINDEX REORGANIZE niestety nie .WRITE WRITETEXT, UPDATETEXT DEPRECATED
  10. 10. Wymagania, wymagania non-FULL recovery model AND NOT replicated AND ( (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
  11. 11. Jeszcze jeden myk Jeś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’
  12. 12. Zalety Szybszy zapis danych do logu Mniejsze I/O
  13. 13. Wady Wrażliwe na błędy w plikach danych Wymaga trybu odzyskiwania danych SIMPLE lub przełączania między FULL i BULK LOGGED Czyli odpadają mirroring i Availability Groups Ale zadziała przy Log Shipping Może wymagać TF 610 – sysadmin Wszystkie strony danych muszą być zapisane na dysku przed zakończeniem transakcji
  14. 14. TRUNCATE Błyskawiczne kasowanie danych Jest logowane, czy nie jest? Dlaczego działa tak szybko?
  15. 15. DEMO Drugie i ostatnie, za to krótkie
  16. 16. Do zapamiętania Logowanie minimalne to zapisywanie do logu transakcyjnego tylko informacji o alokacji stron danych Przyspiesza część operacji, ale jest wrażliwe na błędy plików danych TRUNCATE jest operacją w pełni logowaną, po prostu jest logowana efektywnie
  17. 17. Do poczytania Itzik Ben-Gan „Minimally logged inserts: http://sqlmag.com/t- sql/minimally-logged-inserts Gail 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/

×