SlideShare ist ein Scribd-Unternehmen logo
1 von 17
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/

Weitere ähnliche Inhalte

Ähnlich wie 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
 
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 ...
 
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 2014Filip Rembialkowski
 
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 danychMarcinStachniuk
 
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 praktyceKamil Nowinski
 
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 SystemArtur 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 2016Kamil Nowinski
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaTobias Koprowski
 

Ähnlich wie 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
 

Mehr von Bartosz Ratajczyk

SQL Server + docker - pierwsze kroki
SQL Server + docker - pierwsze krokiSQL Server + docker - pierwsze kroki
SQL Server + docker - pierwsze krokiBartosz 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 processBartosz 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 SSISBartosz Ratajczyk
 
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534How minimalloggingcanhelpme bartoszratajczyk_sql_sat534
How minimalloggingcanhelpme bartoszratajczyk_sql_sat534Bartosz Ratajczyk
 
Szkolenia i certyfikacjesqlserver2016_plssug99
Szkolenia i certyfikacjesqlserver2016_plssug99Szkolenia i certyfikacjesqlserver2016_plssug99
Szkolenia i certyfikacjesqlserver2016_plssug99Bartosz 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
 
Czy mi się przyda hierarchyid?
Czy mi się przyda hierarchyid?Czy mi się przyda hierarchyid?
Czy mi się przyda hierarchyid?Bartosz Ratajczyk
 

Mehr von 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/