2015-02-21 4 views
1

это новый вопрос.Скорость вставки

У меня есть две таблицы в базе данных SQL. И просто дюжина столбцов строки, int или дата, ни индексов, ни хранимых процедур. В операторе select * from я получаю ~ 30 000 строк в секунду. Но на insert into ... я получаю только < 1000 вставок в секунду.

Является ли это (фактором), что я должен ожидать. (Я на самом деле ожидал сопоставимую скорость на вставной части.)

+0

select * - это операция чтения, даже для нас, людей, читающих быстрее, чем что-то писать, поэтому, когда вы делаете «вставляете в select * from», вы читаете и записываете данные одновременно, ожидая более медленного ответа, когда вы делая больше вещей, это в значительной степени ожидается. –

+0

Ваш выбор * может содержать все данные в кеше (вы можете проверить с помощью «set statistics io on»), а затем это просто операция с памятью или вставка, которая всегда записывается на диск. –

+0

Да. Я ожидал, что вставка будет медленнее, но не тем фактором. Является ли мое ожидание неправильным или что-то не так с моей системой или моим использованием. –

ответ

0

Скорость вставки сильно зависит от способа вставки. Существует диск и компонент ЦП. С низкой скоростью вставки я предполагаю, что вы вставляете строки один за другим в отдельной транзакции каждый. Это в значительной степени максимизирует использование ЦП и диска. Каждая вставка представляет собой запись на диск.

Ознакомьтесь с эффективными способами вставки. Существует множество различных уровней производительности и времени разработки, необходимых для их программирования.

Чтобы начать работу с чем-то простым: добавьте много (100+) вставок в одну транзакцию. Вставлять в пакеты.

+0

Чтобы добавить к этому ответу, когда каждая вставка выполняется как отдельная транзакция, ограничение скорости является синхронным журналом транзакций IO, необходимым для гарантии долговечности транзакции во время фиксации. Объединение нескольких вложений в большую транзакцию или использование метода объемной вставки уменьшит производительность. Также учитывайте, что отдельные вставки требуют отдельных раундов, тогда как многие строки передаются с помощью одного «SELECT». –

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