Как увеличить скорость insert (MySQL->MSSQL)
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Как увеличить скорость insert (MySQL->MSSQL)
Каждый день, все данные из таблиц Table на нескольких MySQL серверов должны быть скопированы в одну таблицу TableBackup на Microsoft SQL Server 2000.
В принципе, суммарное число записей для копирования невелико ~2 000 000 - 3 000 000.
Пока база на Microsoft SQL Server 2000 невелика, всё идёт сносно. При размере базы (где TableBackup) порядка ~ 300 Gbt, копирование занимает ~ 7-9 часов, что критично.
Можно ли на Microsoft SQL Server каким -то образом отключить логи на время этих операций, или ещё что...
Как увеличить скорость копирования???
Спасибо.
В принципе, суммарное число записей для копирования невелико ~2 000 000 - 3 000 000.
Пока база на Microsoft SQL Server 2000 невелика, всё идёт сносно. При размере базы (где TableBackup) порядка ~ 300 Gbt, копирование занимает ~ 7-9 часов, что критично.
Можно ли на Microsoft SQL Server каким -то образом отключить логи на время этих операций, или ещё что...
Как увеличить скорость копирования???
Спасибо.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
-
- Частый Гость
- Сообщения: 41
- Зарегистрирован: 02 авг 2005, 16:14
- Откуда: Vancouver
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
если это продакшен, то чтоб играть рековери моделью надо знать точно что делаешь.. если не знаешь, то использовать надо Full.BB писал(а):В добавку к Папе... Если на TableBackup есть триггеры - disable. Какая Recovery Model на MS SQL'ной базе? Еще можно поиграть с размером batch'а (если, конечно, копирование идет batch'ами)
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Simpleпапа Карло писал(а):если это продакшен, то чтоб играть рековери моделью надо знать точно что делаешь.. если не знаешь, то использовать надо Full.BB писал(а):В добавку к Папе... Если на TableBackup есть триггеры - disable. Какая Recovery Model на MS SQL'ной базе? Еще можно поиграть с размером batch'а (если, конечно, копирование идет batch'ами)
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
1 ) 6 часов отрабатывает MS job построенный на packages DTS.папа Карло писал(а):чем копируешь ? bcp? tablock используешь? общий размер таблицы в которую вливаете? индыксы в таблице перед вливанием сбрасываете и после создаете?
3 млн записей за 7-9 часов....... это ОЧЕНЬ медленно.
9 часов и более работает моё приложение (VB.NET). Сливает данные, прочитав с MySQL серверов. Там в цикле read record - insert record.
Для чтения из MySQL, и вставки на MSSQL используется ADO.NET.
DTS API хотелось бы избежать (DTS валится по какой-то причине при работе с MySQL в качестве источника или назначения)
2) Общий размер таблицы в которую вливаем - около 300 Gbt.
3) Индексов думаю там нет. Хотя проверю. Впринципе, это может быть причиной, если там оставили индексы.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
Можно и хранимую процедуру написать в MS SQL.
Ключевые слова
sp_addlinkedserver для подключения к удаленной базе через имеющийся драйвер (например ODBC)
и
openquery или ее аналоги для выполнения select запроса на удаленном сервере.
Мы так выкачивали данные из удаленной Sybase системы, работает быстро плюс достаточная свобода в манипулировании системными ресурсами.
Ключевые слова
sp_addlinkedserver для подключения к удаленной базе через имеющийся драйвер (например ODBC)
и
openquery или ее аналоги для выполнения select запроса на удаленном сервере.
Мы так выкачивали данные из удаленной Sybase системы, работает быстро плюс достаточная свобода в манипулировании системными ресурсами.
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
1) Так (почти так) делали используя DTS. Если данных не много - работает. Если порядка 2 000 000 записей - валится. Говорит идиотские вещи, что мол ODBC MySQL не хватило 2G памяти.ura писал(а):Можно и хранимую процедуру написать в MS SQL.
Ключевые слова
sp_addlinkedserver для подключения к удаленной базе через имеющийся драйвер (например ODBC)
и
openquery или ее аналоги для выполнения select запроса на удаленном сервере.
Мы так выкачивали данные из удаленной Sybase системы, работает быстро плюс достаточная свобода в манипулировании системными ресурсами.
2) Так не прокатит по другой причине. Своеобразные JOB-ы должны крутиться именно на MySQL серверах. Там много чего делается и синхронизируется перед тем как на послених тасках джоба начать копировать данные.
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Да это будет работать. Чуствую. Спасибо за совет. И кстати более надёжно. К тому же файло можно будет поджать перед прокидыванием по сетке.папа Карло писал(а):вот это проблема. надо зачитывать и вваливать то дело в файл, который потом надо вливать с помощью bcp, используя хинт tablock.vg писал(а):Там в цикле read record - insert record.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
попробуй сначала без архивирования.... выкачал фйл и влил его бисипой в базу... померяй... должно быть гораздо быстрее... если конечно основное время не уходит на чтение из майсиквела.vg писал(а):Да это будет работать. Чуствую. Спасибо за совет. И кстати более надёжно. К тому же файло можно будет поджать перед прокидыванием по сетке.папа Карло писал(а):вот это проблема. надо зачитывать и вваливать то дело в файл, который потом надо вливать с помощью bcp, используя хинт tablock.vg писал(а):Там в цикле read record - insert record.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
личше так не надо делать.... loosely coupled systems u knowura писал(а):Можно и хранимую процедуру написать в MS SQL.
Ключевые слова
sp_addlinkedserver для подключения к удаленной базе через имеющийся драйвер (например ODBC)
и
openquery или ее аналоги для выполнения select запроса на удаленном сервере.
Мы так выкачивали данные из удаленной Sybase системы, работает быстро плюс достаточная свобода в манипулировании системными ресурсами.

-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
Ну там то вариантов особых не было, либо напрямую из базы, которую мы никак не контролируем, либо раз в день по FTP. Правда не все ODBC драйвера вели себя одинаково, но всетаки нашелся один.папа Карло писал(а):личше так не надо делать.... loosely coupled systems u knowura писал(а):Можно и хранимую процедуру написать в MS SQL.
Ключевые слова
sp_addlinkedserver для подключения к удаленной базе через имеющийся драйвер (например ODBC)
и
openquery или ее аналоги для выполнения select запроса на удаленном сервере.
Мы так выкачивали данные из удаленной Sybase системы, работает быстро плюс достаточная свобода в манипулировании системными ресурсами.
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Майсиквел делает тоже за 1 час. Чтение тоже очень быстрое. Проверял.папа Карло писал(а):попробуй сначала без архивирования.... выкачал фйл и влил его бисипой в базу... померяй... должно быть гораздо быстрее... если конечно основное время не уходит на чтение из майсиквела.vg писал(а):Да это будет работать. Чуствую. Спасибо за совет. И кстати более надёжно. К тому же файло можно будет поджать перед прокидыванием по сетке.папа Карло писал(а):вот это проблема. надо зачитывать и вваливать то дело в файл, который потом надо вливать с помощью bcp, используя хинт tablock.vg писал(а):Там в цикле read record - insert record.