Breaking News
Loading...
01/08/2013

Bulk insert trong SQL Server

Bulk insert là kỹ thuật thường dùng khi ta muốn insert dữ liệu từ một file vào một database SQL Server. Lợi ích của nó là transaction log không phình to đáng kể nếu ta load một file rất lớn.

Để hiểu bulk insert cần hiểu thêm về Recovery Model trong SQL Server.

Nếu database đang có Recovery Model được cấu hình như là bulk-logged, và ta thực hiện Bulk Insert thì các hoạt động insert sẽ được log lại đầy đủ trong transaction log. Nếu file insert lớn thì transaction log sẽ phình đáng kể.


Nếu database đang có Recovery Model được cấu hình như là Full, và ta thực hiện Bulk Insert thì transaction log không log lại đầy đủ, mà chỉ ghi nhận lại thông tin đơn giản như là có 1 hoạt động bulk insert đã xảy ra.

Trong một tài liệu dựa trên SQL Server 2012 có tiêu đề
"The Transaction Log (SQL Server)", có đoạn:
Under the full recovery model, all bulk operations are fully logged. However, you can minimize logging for a set of bulk operations by switching the database to the bulk-logged recovery model temporarily for bulk operations.
Tham khảo: http://msdn.microsoft.com/en-us/library/ms190925.aspx


Trong một tài liệu dựa trên SQL Server 2008R2 có tiêu đề "Optimizing Bulk Import Performance", có đoạn:
For a database under the full recovery model, all row-insert operations that are performed during bulk import are fully logged in the transaction log. For large data imports, this can cause the transaction log to fill rapidly. For bulk-import operations, minimal logging is more efficient than full logging and reduces the possibility that a bulk-import operation will fill the log space. To minimally log a bulk-import operation on a database that normally uses the full recovery model, you can first switch the database to the bulk-logged recovery model. After bulk importing the data, switch the recovery model back to the full recovery model.
Tham khảo: http://msdn.microsoft.com/en-us/library/ms190421(v=sql.105).aspx

Để tìm hiểu thêm về Bulk Insert, bạn có thể tham khảo ở đây:
http://msdn.microsoft.com/en-us/library/ms188365.aspx
http://www.mssqltips.com/sqlservertip/1185/minimally-logging-bulk-load-inserts-into-sql-server/

Để tìm hiểu về Recovery Model, bạn có thể tham khảo ở đây:
http://msdn.microsoft.com/en-us/library/ms189275.aspx


0 comments:

Post a Comment

 
Toggle Footer