2015-02-18 2 views
1

im в настоящее время пытается вставить около 100 миллионов строк в лазурной таблице. Проблема в том, что каждая вставка занимает значительно больше времени, чем при использовании локальной базы данных. Есть ли способ более эффективно управлять этой задачей?Вставьте миллионы строк в лазурь

+0

Является ли ваш локальная база данных работает с SSD? – tadman

+0

Нет, но он может, как правило, вставлять 1 миллион строк, например, 10 минут. Но прямая вставка в sql azure занимает много времени. – Ravenous

+0

Используете ли вы локальную рабочую станцию ​​для загрузки на Azure, или вы скопируете данные из экземпляра Azure на локальный SQL Server? Загрузка удаленно может быть значительно медленнее. – tadman

ответ

1

Если вы делаете строковые вставки, это будет неэффективно. Два варианта, которые следует учитывать в противном случае, используют API ADO.Net BULK в вашем коде C# (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx) или с помощью утилиты BCP для выполнения объемных вставок. Оба этих метода уменьшат округление до базы данных и избегают операций с верхним журналом транзакций для каждой строки.

Обратите внимание, что Azure SQL DB еще не предлагает возможность загрузки файлов на сервер и импорта оттуда. (Однако вы можете переместить плоский файл в Azure Storage Blob и выполнить программу импорта BCP или C# из Azure VM, если латентность перехода непосредственно из локальной базы в Azure DB еще слишком длинна.)

+0

в этом случае, было бы лучше сжать файл flatfile перед загрузкой в ​​blob, а затем распаковать его в виртуальной машине до BCPing до лазурной SQL-базы данных? – garrilla

Смежные вопросы