sql >> Databáze >  >> RDS >> Sqlserver

Jaká je doporučená velikost dávky pro SqlBulkCopy?

Mám nástroj pro import umístěný na stejném fyzickém serveru jako moje instance SQL Server. Pomocí vlastního IDataReader analyzuje ploché soubory a vloží je do databáze pomocí SQLBulkCopy . Typický soubor má asi 6 milionů kvalifikovaných řádků, v průměru 5 sloupců desítkového a krátkého textu, asi 30 bajtů na řádek.

Vzhledem k tomuto scénáři jsem zjistil, že velikost dávky 5 000 je nejlepším kompromisem rychlosti a spotřeby paměti. Začal jsem s 500 a experimentoval s většími. Zjistil jsem, že 5000 je v průměru 2,5x rychlejší než 500. Vložení 6 milionů řádků trvá asi 30 sekund při velikosti dávky 5000 a asi 80 sekund při velikosti dávky 500.

10 000 nebylo měřitelně rychlejší. Přesun až na 50 000 zvýšil rychlost o několik procentních bodů, ale za zvýšené zatížení serveru to nestojí. Nad 50 000 nevykazovalo žádné zlepšení rychlosti.

Toto není vzorec, ale je to další datový bod, který můžete použít.



  1. Práce s databázemi cPanel MySQL

  2. Vytvořte Computed Column v SQL Server pomocí T-SQL

  3. Jak vrátit řetězec v obráceném pořadí pomocí SQL Server – REVERSE()

  4. Jak funguje current_time v PostgreSQL