1. OLEDB
Kiedy FastLoad nie jest takie Fast
116. Spotkanie Data Community Poland, Warszawa 10.05.2018.
2. Bartosz Ratajczyk
Konsultant SQL Server @ 7N
Trener @ CBSG, Stacja.IT
Programista baz danych i aplikacji
Prelegent
Członek Komisji Rewizyjnej DC MCSE: Data Platform, MCT
http://bartekr.net | b.ratajczyk@gmail.com
5. Awaria zasilania
• Zabrakło miejsca na dysku podczas przetwarzania pakietu SSIS
• Mechanizm: zasilenie danych do pomocniczej tabeli (z kompresją
PAGE), po zasileniu przełączenie między tabelami
• Po awarii: tabela docelowa i tymczasowa mają prawie tyle samo
rekordów, ale tymczasowa jest kilka razy większa od drugiej
TableName # Records Reserved (KB) Data (KB) Indexes (KB) Unused (KB)
TableA 238 659 266 28 179 200 28 123 264 52 376 3 560
TableA_TEMP 239 645 078 162 601 616 162 577 856 400 23 360
6. Środowisko
• Baza w trybie odzyskiwania SIMPLE
• Interesuje nas minimalne logowanie
• TableA, TableA_TEMP
• Tabela główna (indeks klastrowy) i pomocnicza (sterta)
• Każda ma jedną partycję
• DATA_COMPRESSION = PAGE
• Zasilanie tabeli TEMP, tworzenie indeksu, przełączenie partycji
8. Dlaczego to działa?
Bulk Update Locks
Bulk update (BU) locks allow multiple threads to bulk load data concurrently
into the same table while preventing other processes that are not bulk
loading data from accessing the table. The Database Engine uses bulk update
(BU) locks when both of the following conditions are true.
• You use the Transact-SQL BULK INSERT statement, or the
OPENROWSET(BULK) function, or you use one of the Bulk Insert API
commands such as .NET SqlBulkCopy, OLEDB Fast Load APIs, or the ODBC
Bulk Copy APIs to bulk copy data into a table.
• The TABLOCK hint is specified or the table lock on bulk load table option is
set using sp_tableoption.
https://technet.microsoft.com/en-us/library/jj856598(v=sql.110).aspx
W ramach demo:
Backup bazy źródłowej (opcjonalnie)
Utworzenie katalogu SSIS (jeśli nie istnieje)
Restore bazy SSISDB
Rozwinięcie katalogu SSIS – wszystkie elementy pokazują się bez problemu
Pokazanie zmiennych środowiskowych – nadal wszystko działa
Weryfikacja zmiennych środowiskowych z PowerShell – problem (polecenia z pliku PowerShell.txt)
Uruchomienie walidacji – błąd
Wytłumaczenie powodu