SlideShare a Scribd company logo
Operacje minimalnie
logowane
95. Spotkanie PLSSUG Warszawa, 07.04.2016.
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?
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
Log transakcyjny
Przechowuje informacje o każdej wykonanej
modyfikacji danych
Ilość zapisywanych informacji może zależeć od
modelu odzyskiwania danych (recovery model)
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
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
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ę
DEMO
Pierwsze z dwóch, ale za to duże i długie
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
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
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’
Zalety
Szybszy zapis danych do logu
Mniejsze I/O
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
TRUNCATE
Błyskawiczne kasowanie danych
Jest logowane, czy nie jest?
Dlaczego działa tak szybko?
DEMO
Drugie i ostatnie, za to krótkie
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
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/

More Related Content

Similar to Operacje minimalnie logowane

"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
Bartosz Ratajczyk
 
SQLite 2010
SQLite 2010SQLite 2010
SQLite 2010
Natalia Stanko
 
Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008Przemysław ...
 
Liquibase w praktyce
Liquibase w praktyceLiquibase w praktyce
Liquibase w praktyce
Mateusz Lubański
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja BazyPrzemysław ...
 
SQL Server 2014: In-memory OLTP
SQL Server 2014: In-memory OLTPSQL Server 2014: In-memory OLTP
SQL Server 2014: In-memory OLTPWlodek Bielski
 
Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014
Filip Rembialkowski
 
XML w SQL Server w praktyce
XML w SQL Server w praktyceXML w SQL Server w praktyce
XML w SQL Server w praktyce
Bartosz Ratajczyk
 
Sql day2015 fts
Sql day2015 ftsSql day2015 fts
Sql day2015 fts
Kamil Nowinski
 
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychLiquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
MarcinStachniuk
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz
 
Zasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceZasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyce
Kamil Nowinski
 
SQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowySQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowy
Wydawnictwo Helion
 
EXADATA - Infrastruktura Przyszłości
EXADATA - Infrastruktura PrzyszłościEXADATA - Infrastruktura Przyszłości
EXADATA - Infrastruktura Przyszłości
OPITZ CONSULTING Polska
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
Bartosz Ratajczyk
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)
Bartlomiej Zass
 
[#3] in memory - IBM Integrated Analytics System
[#3] in memory - IBM Integrated Analytics System[#3] in memory - IBM Integrated Analytics System
[#3] in memory - IBM Integrated Analytics System
Artur Wronski
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Kamil Nowinski
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
Tobias Koprowski
 

Similar to Operacje minimalnie logowane (20)

"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
SQLite 2010
SQLite 2010SQLite 2010
SQLite 2010
 
Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008
 
Liquibase w praktyce
Liquibase w praktyceLiquibase w praktyce
Liquibase w praktyce
 
ACID - Transakcje
ACID - TransakcjeACID - Transakcje
ACID - Transakcje
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja Bazy
 
SQL Server 2014: In-memory OLTP
SQL Server 2014: In-memory OLTPSQL Server 2014: In-memory OLTP
SQL Server 2014: In-memory OLTP
 
Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014
 
XML w SQL Server w praktyce
XML w SQL Server w praktyceXML w SQL Server w praktyce
XML w SQL Server w praktyce
 
Sql day2015 fts
Sql day2015 ftsSql day2015 fts
Sql day2015 fts
 
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychLiquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
 
Zasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceZasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyce
 
SQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowySQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowy
 
EXADATA - Infrastruktura Przyszłości
EXADATA - Infrastruktura PrzyszłościEXADATA - Infrastruktura Przyszłości
EXADATA - Infrastruktura Przyszłości
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)
 
[#3] in memory - IBM Integrated Analytics System
[#3] in memory - IBM Integrated Analytics System[#3] in memory - IBM Integrated Analytics System
[#3] in memory - IBM Integrated Analytics System
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
 

More from Bartosz Ratajczyk

SQL Server + docker - pierwsze kroki
SQL Server + docker - pierwsze krokiSQL Server + docker - pierwsze kroki
SQL Server + docker - pierwsze kroki
Bartosz Ratajczyk
 
Jak działa rekurencyjne CTE?
Jak działa rekurencyjne CTE?Jak działa rekurencyjne CTE?
Jak działa rekurencyjne CTE?
Bartosz Ratajczyk
 
SqlSaturday Denmark 2017 - Automate your SSIS deployment process
SqlSaturday Denmark 2017 - Automate your SSIS deployment processSqlSaturday Denmark 2017 - Automate your SSIS deployment process
SqlSaturday Denmark 2017 - Automate your SSIS deployment process
Bartosz Ratajczyk
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSIS
Bartosz Ratajczyk
 
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
Bartosz Ratajczyk
 
Szkolenia i certyfikacjesqlserver2016_plssug99
Szkolenia i certyfikacjesqlserver2016_plssug99Szkolenia i certyfikacjesqlserver2016_plssug99
Szkolenia i certyfikacjesqlserver2016_plssug99
Bartosz Ratajczyk
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
Bartosz Ratajczyk
 
Po co mi Temporal Tables?
Po co mi Temporal Tables?Po co mi Temporal Tables?
Po co mi Temporal Tables?
Bartosz Ratajczyk
 
Co to te CTE?
Co to te CTE?Co to te CTE?
Co to te CTE?
Bartosz Ratajczyk
 
Alerty WMI
Alerty WMIAlerty WMI
Alerty WMI
Bartosz Ratajczyk
 
Czy mi się przyda hierarchyid?
Czy mi się przyda hierarchyid?Czy mi się przyda hierarchyid?
Czy mi się przyda hierarchyid?
Bartosz Ratajczyk
 

More from Bartosz Ratajczyk (11)

SQL Server + docker - pierwsze kroki
SQL Server + docker - pierwsze krokiSQL Server + docker - pierwsze kroki
SQL Server + docker - pierwsze kroki
 
Jak działa rekurencyjne CTE?
Jak działa rekurencyjne CTE?Jak działa rekurencyjne CTE?
Jak działa rekurencyjne CTE?
 
SqlSaturday Denmark 2017 - Automate your SSIS deployment process
SqlSaturday Denmark 2017 - Automate your SSIS deployment processSqlSaturday Denmark 2017 - Automate your SSIS deployment process
SqlSaturday Denmark 2017 - Automate your SSIS deployment process
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSIS
 
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
 
Szkolenia i certyfikacjesqlserver2016_plssug99
Szkolenia i certyfikacjesqlserver2016_plssug99Szkolenia i certyfikacjesqlserver2016_plssug99
Szkolenia i certyfikacjesqlserver2016_plssug99
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
 
Po co mi Temporal Tables?
Po co mi Temporal Tables?Po co mi Temporal Tables?
Po co mi Temporal Tables?
 
Co to te CTE?
Co to te CTE?Co to te CTE?
Co to te CTE?
 
Alerty WMI
Alerty WMIAlerty WMI
Alerty WMI
 
Czy mi się przyda hierarchyid?
Czy mi się przyda hierarchyid?Czy mi się przyda hierarchyid?
Czy mi się przyda hierarchyid?
 

Operacje minimalnie logowane

  • 1. Operacje minimalnie logowane 95. Spotkanie PLSSUG Warszawa, 07.04.2016.
  • 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. 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. Log transakcyjny Przechowuje informacje o każdej wykonanej modyfikacji danych Ilość zapisywanych informacji może zależeć od modelu odzyskiwania danych (recovery model)
  • 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. 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. 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. DEMO Pierwsze z dwóch, ale za to duże i długie
  • 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. 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. 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. Zalety Szybszy zapis danych do logu Mniejsze I/O
  • 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. TRUNCATE Błyskawiczne kasowanie danych Jest logowane, czy nie jest? Dlaczego działa tak szybko?
  • 15. DEMO Drugie i ostatnie, za to krótkie
  • 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. 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/