Выполнение базовых операций ввода-вывода на диске требует очень и очень небольшого процессорного времени (по крайней мере, на любом устройстве, на котором я запускаю Perfmon). Если вы загружаете процессор на 100%, то процесс архивации, вероятно, требует интенсивной загрузки процессора. Вы выполняете какой-то сложный запрос, вызов встроенной функции или делаете что-то еще, что потребует больше, чем просто чтение / запись байтов жесткого диска? (Возможно, файлы вашей базы данных находятся на сжатых жестких дисках? Или мешает какой-то другой аналогичный «фоновый» процесс?)
Один из возможных способов (акцент на возможном, поскольку он полностью зависит от вашей среды) распределить нагрузку на ЦП - это одновременное выполнение нескольких задач. Это можно сделать, разбив нагрузку. Для общего архива и некоторых общих предположений это может выглядеть так:
- Первый шаг, определить объем данных, которые будут заархивированы. Скажем, выбранные строки и связанные данные из основной таблицы, содержащей столбец идентификаторов, где архивируемые данные находятся в диапазоне от Id 10000 до 20000
- Разбейте это на куски. Хотите использовать четыре процессора? Попробуйте четыре куска, 10000-12500, 12501-15000, 15001-17500, 17501-20000. Запишите их в таблицу «должно быть сделано».
- Настройте четыре задания агента SQL на запуск, скажем, в 3:00 AM, 3:01, 3:02 и 3:03. Когда каждое задание запускается, оно получает следующий «готовый» набор данных и обрабатывает его.
- Вы можете подготовить столько кусков данных, сколько захотите. Вы можете иметь столько работы, сколько захотите. Работа может продолжать обрабатывать куски, пока в списке больше не будет.
Обратите внимание, что если у вас есть два или более процессов, считывающих данные с одних и тех же дисков и записывающих их на одни и те же диски, вы в конечном итоге станете привязанными к диску. Но вы можете улучшить производительность, или, по крайней мере, я видел ее в некоторых системах ... если для перемещения задачи требуется более X раз, то для перемещения 2 МБ данных двум задачам может понадобиться менее 2 раз, и это даже больше шансов удержаться, если между чтением и записью нужно выполнить много работы с процессором. Но проверьте это на своей системе, чтобы убедиться.
Чтобы проверить дисковый ввод-вывод, используйте Perfmon (системный монитор, системный монитор, «Производительность» или как там их называют в наши дни) со счетчиками «средний размер дисковой очереди». Если они постоянно превышают 2 или 3, значит, вы привязаны к диску. (Конечно, это сложнее, но это даст вам сильное начало в этой проблеме.)