Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Есть программулина, которая заполняет БД SQL. Делает она это посредством генерации огромной кучи Инсертов (заполняются всего 2 таблицы - одна 70'000 строк по 250 байт, другая 1'200'000 по 100 байт). Так вот в начале работы скорость выполнения Insert'ов приемлимая - порядка 600-800 в секунду. Но чем дальше, тем меньше. И примерно после загрузки 80% данных скорость обработки скатывается на 3-5 в секунду. Проверено это было на разных SQL серверах (P3X/256 , 2xP3X/512). Результат одинаковый, причес производительность разнится не сильно, несмотря на почти в два раза разнящиеся мощности.

Скорее всего, глюки где-то в программе, потому как параллельно Insert'ам идут еще и периодические запросы к SQL на предмет того, сколько уже загружено. Может быть, где-то что-то остается висеть. Но у меня абсолютно нет никаких идей ЧТО может так сильно бить про производительности. Может кто сталкивался?

Приветствуются любые идеи (brain-storm)
6 авг 04, 10:58    [863923]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17091
а что счетчики говорят?
6 авг 04, 11:10    [863953]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
sti
Member

Откуда:
Сообщений: 769
индексы есть?
6 авг 04, 11:10    [863955]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Гость2
Guest
Если "параллельно Insert'ам идут еще и периодические запросы к SQL" по таймеру, то возможно это и есть причина, тк подсчет миллиона строк, например, 2 раза в секунду сожрет любые ресурсы.
6 авг 04, 11:14    [863972]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Road Runner
Member

Откуда:
Сообщений: 274
Есть ли в таблицах в которые идет вставка индексы? Идея в том, что если данные в инсертах будут идти не в порядке индекса, то SQL-у придется с каждой вставкой перестраивать все больший индекс. Кстати - а данные вставленные в прошлый раз - они по прежнему лежат в таблицах или таблицы перед вставкой чистятся? И, имхо, в любом случае, для вставки таких больших объемов данных лучше не использовать инсерты, а организовать заполнение через импорт\экспорт данных из файлов.
6 авг 04, 11:18    [863999]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Если запросы делаются только чтобы информировать о ходе заполнения, то имеет смысл применить хинт READPAST или NOLOCK.
6 авг 04, 11:19    [864003]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Гость2
Guest
Индексы так сильно влиять не могут, тк "перестройка" в подавляющем болшинстве случаев происходит в рамках одной страницы данных независимо от размеров таблицы, особенно если ключ индексирования маленький.
6 авг 04, 11:23    [864027]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Glory
Member

Откуда:
Сообщений: 104760
Индексы так сильно влиять не могут, тк "перестройка" в подавляющем болшинстве случаев происходит в рамках одной страницы данных независимо от размеров таблицы, особенно если ключ индексирования маленький.
Ага, не могут повлиять.
Особенно если индекс кластерный а добавляемое значение попадает в уже заполненную страницу где-нибудь в середине индексного дерева.
Плюс если еще не открыта общая транзакция и каждая команда insert дложна комитится отдельно.
6 авг 04, 11:29    [864060]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Счетчики использования камня говорят 50% (нагрузка распределена примерно 50/50 по обоим камням). Счетчики использования памяти говорят, что SQL сожрал метров 300-350 (на сервере 512 :[ ). Таблицы индексированы, но это не проблема - индексы можно снять, т.к. таблицы временные - они создаются перед началом загрузки, затем по ее окончании данные быстро копируются в основные таблицы, а временные удаляются. Вставка данных (90% записей) идет в порядке индексов. Запросы на количество отработанных идут 1 раз в 5 секунд.
6 авг 04, 11:33    [864088]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17091
а сетевой трафик? а диски?
6 авг 04, 11:35    [864104]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Общая транзакция не открыта. Потому как при разработке программулины решили, что такого объема транзакции - это изврат
6 авг 04, 11:35    [864106]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17091
лоченные объекты во время загрузки?
6 авг 04, 11:38    [864124]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Сетевой траффик 0, т.к. прога запускается на том же сервере (для ускорения работы) , диск используется в среднем на 10-15%, файл подкачи - на 5-8%.
6 авг 04, 11:39    [864136]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Glory
Member

Откуда:
Сообщений: 104760
Сетевой траффик 0, т.к. прога запускается на том же сервере (для ускорения работы) , диск используется в среднем на 10-15%, файл подкачи - на 5-8%.
Что это за счетчик "диск используется в среднем на 10-15%" ? Average Disk Queue ? Disk Write/Read Queue ?
И какаой именно диск ? Или у вас все файлы лежат на одном диске ? Не на RAID-5 массиве случайно ?
6 авг 04, 11:42    [864151]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Гость2
Guest
Про "периодические запросы к SQL" по подробнее можно?
"1 раз в 5 секунд" - это тоже не мало.
6 авг 04, 11:43    [864156]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Локи создает все время один SPID, среднее время ожидания лока - 0ms. Локи трех типов всегда - TAB( Mode IX), PAG ( Mode IU), RID (Mode U).
6 авг 04, 11:47    [864176]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Обычный SCSI-диск, один, не в массиве (это периферийный сервер базовой конфигурации). Счетчик - Average Disk Queue. Раздел на диске тоже один.

Про периодические запросы:
SELECT @Count = Count(*) FROM TempTable1
Запускается в проге отдельным тредом, SqlConnection не закрывает, в треде Thread.Wait(5000) в цикле while(mainThread.IsAlive). mainThread - это поток, в котором идет загрузка. Счет идет по строкам маленькой таблицы TempTable1 (которая 70'000 строк)
6 авг 04, 11:55    [864238]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17091
глупый ворос сервер вставляет мало записей потому что не может или потому что ему программа мало запросов на запись посылает?
6 авг 04, 11:56    [864241]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Еще одно маленькое дополнение:))

Примерно на 100-200 инсертов приходится один Update. Тобишь их немного, но они есть.
6 авг 04, 11:57    [864248]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Glory
Member

Откуда:
Сообщений: 104760
Счетчик - Average Disk Queue
Счетчики Disk Queue не измеряются в процентах. Если это у вас очередь к диску 10-15 то это очень большая очередь.
Чего в принципе и следовало ожидать при выполнении каждой команды добавления как отдельной транзакции и расположении всех файлов базы на одном диске.
6 авг 04, 11:58    [864252]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
2ScareCrow:
Прога, которая на том же сервере работает, пожирает 1-2% камня. Больше ресурсов ей никаких не нужно вообще - значит, дело в SQL сервере. Хотя может быть происходит так - прога генерит запрос, выполняет SqlCommand.ExecuteNonQuery() и ждет, пока SQL его обработает. после чего метод ExecuteNonQuery() возвращает управление проге и, пока та генерит новый инсерт - у SQL передышка.

2Glory:
Может быть, но диск всегда используется равномерно, а вот производительность падает по экспоненте.
6 авг 04, 12:12    [864327]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
Glory
Member

Откуда:
Сообщений: 104760
Может быть, но диск всегда используется равномерно
Еще раз спрошу - какой счетчик вы понимаете под "диск используется равномерно" ? И каково его значение - среднее, максимальное ?
К тому же равномерно не означает что диск справляется с нагрузкой.
6 авг 04, 12:17    [864351]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
vinnie
Member

Откуда:
Сообщений: 26
Есть пара счетчиков - Average Disk queue и Average Disk Activity (%). Их показания совпадают (при шкале 1-го в 100 единиц, а второго - в 1%). Так вот их я и понимаю под словами 10-15%. Тобишь средняя очередь - 0.1 - 0.15 (извиняюсь за ошибку в предыдущем посте)
6 авг 04, 12:25    [864383]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17091
судя по всему копать надо предмет взаимодействия проги и сервера... попробуй просто вставить такое количество данный.. сам.. напиши что нибудб и посмотри результат...
6 авг 04, 12:40    [864447]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с падением скорости при Insert'ах  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17091
все таки посмотри bytes read/write сколько оно читать/писать пытается...
6 авг 04, 12:43    [864463]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить