Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
В таблицу загружаются новые товары, далее на основании этих записей создается куча документов

если товаров много, то другие пользователи начинают жаловаться на ухудшение производительности.

Как так сделать что бы вставленные товары обрабатывались не сразу все, а с некоторыми временными интервалами?
Знаю что это нужно делать через Сервис Брокер, но ссылок на примеры подобных решений не нашел

Если не ошибаюсь, то это называется троттлинг
2 мар 12, 11:31    [12181946]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wizandr
если товаров много, то другие пользователи начинают жаловаться на ухудшение производительности.

Как так сделать что бы вставленные товары обрабатывались не сразу все, а с некоторыми временными интервалами?

А может луше выяснить, почему падает производительность ?
2 мар 12, 11:35    [12181976]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Wizandr,

автор
В таблицу загружаются новые товары, далее на основании этих записей создается куча документов

А загружаются товары как, грузовики привозят или почтой россии приходят?
автор
если товаров много, то другие пользователи начинают жаловаться на ухудшение производительности.

А не пробовали не слушать жалобы пользователей, говорят беруши очень помогают?
автор
Как так сделать что бы вставленные товары обрабатывались не сразу все, а с некоторыми временными интервалами?

ну дак поставте таймауты там где вы их загружаете?
автор
Знаю что это нужно делать через Сервис Брокер, но ссылок на примеры подобных решений не нашел

слышу звон но не понимаю где он, вы хоть понимаете что такое сервис брокер?
2 мар 12, 11:37    [12182009]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
WarAnt
слышу звон но не понимаю где он, вы хоть понимаете что такое сервис брокер?

SB - позволяет организовывать выполнение асинхронных задач, советую вам почитать про это технологию, полезная штука
2 мар 12, 11:41    [12182063]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wizandr
SB - позволяет организовывать выполнение асинхронных задач, советую вам почитать про это технологию, полезная штука

А мне казалось, что SB - всего лишь механизм передачи сообщений

SQL Server Service Broker provides the SQL Server Database Engine native support for messaging and queuing applications.
2 мар 12, 11:43    [12182091]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
Glory
Wizandr
SB - позволяет организовывать выполнение асинхронных задач, советую вам почитать про это технологию, полезная штука

А мне казалось, что SB - всего лишь механизм передачи сообщений

SQL Server Service Broker provides the SQL Server Database Engine native support for messaging and queuing applications.


не совсем так. он еще позволяет асинхронно обрабатывать эти сообщения разными способами
2 мар 12, 11:46    [12182113]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wizandr
он еще позволяет асинхронно обрабатывать эти сообщения разными способами

Т.е. вы хотите потратить время на разработку кода, который будет обрабатывать очереди SB вместо того, чтобы потратить время на выяснение проблем текущего кода ?
А где гарантия того, что новый код решить проблему, если вы не знаете, какую проблему надо решать ?
2 мар 12, 11:49    [12182139]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Wizandr
WarAnt
слышу звон но не понимаю где он, вы хоть понимаете что такое сервис брокер?

SB - позволяет организовывать выполнение асинхронных задач, советую вам почитать про это технологию, полезная штука


Ваши абстрактные размышления боюсь никак не помогут вам рашить конкретные проблемы с производительностью конкретного кода.
Или у вас нет никаких пользователей и вопросы ваши чисто теоретические?
2 мар 12, 11:59    [12182224]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
Glory
Wizandr
он еще позволяет асинхронно обрабатывать эти сообщения разными способами

Т.е. вы хотите потратить время на разработку кода, который будет обрабатывать очереди SB вместо того, чтобы потратить время на выяснение проблем текущего кода ?
А где гарантия того, что новый код решить проблему, если вы не знаете, какую проблему надо решать ?


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

Проблему я вроде бы обозначил. Проводка большого количества документов требует много ресурсов (в частности дисковой подсистемы) и поэтому замедлят работу других пользователей.
Поэтому хотелось бы распределить проводку этих документов во времени.
2 мар 12, 12:11    [12182322]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
WarAnt
Wizandr
пропущено...

SB - позволяет организовывать выполнение асинхронных задач, советую вам почитать про это технологию, полезная штука


Ваши абстрактные размышления боюсь никак не помогут вам рашить конкретные проблемы с производительностью конкретного кода.
Или у вас нет никаких пользователей и вопросы ваши чисто теоретические?

Уверен что ваши "конкретные" советы насчет беруш и абстрактные предположения о ящиках и несуществующих пользователях мне уж точно не помогут
2 мар 12, 12:14    [12182339]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wizandr
Проблему я вроде бы обозначил. Проводка большого количества документов требует много ресурсов (в частности дисковой подсистемы) и поэтому замедлят работу других пользователей.

Какие ресурсы и чем вы меряли ?
Почему потребление этих ресурсов уменьшится при использовании SB ?

Wizandr
Поэтому хотелось бы распределить проводку этих документов во времени.

И у вас есть алгоритм, по которому вы будете "распределять по времени" ?
2 мар 12, 12:14    [12182341]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Wizandr
WarAnt
пропущено...


Ваши абстрактные размышления боюсь никак не помогут вам рашить конкретные проблемы с производительностью конкретного кода.
Или у вас нет никаких пользователей и вопросы ваши чисто теоретические?

Уверен что ваши "конкретные" советы насчет беруш и абстрактные предположения о ящиках и несуществующих пользователях мне уж точно не помогут


а для более полезных советов нет данных, я основывался исключительно на вашем первом посте, где нет ни строчки конкретики, только какието абстрактные рассуждения о документообороте.
2 мар 12, 12:36    [12182482]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
Glory
Wizandr
Проблему я вроде бы обозначил. Проводка большого количества документов требует много ресурсов (в частности дисковой подсистемы) и поэтому замедлят работу других пользователей.

Какие ресурсы и чем вы меряли ?
Почему потребление этих ресурсов уменьшится при использовании SB ?

Wizandr
Поэтому хотелось бы распределить проводку этих документов во времени.

И у вас есть алгоритм, по которому вы будете "распределять по времени" ?

Например нагрузка на диск возрастает (Database IO), смотрел в Активити мониторе

В данном случае хотелось бы не уменьшить потребление ресурсов, с делать так что бы их потребление было менее чувствительно для пользователей.
Особого алгоритма у меня нет. Пока есть идея сделать так что бы выполнялись не сразу все проводки, а пачки по несколько штук через одинаковые интервалы времени
2 мар 12, 12:38    [12182502]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Как вариант разбить на части,
части обрабатывать в цикле с WAITFOR DELAY
2 мар 12, 13:12    [12182813]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wizandr
Например нагрузка на диск возрастает (Database IO), смотрел в Активити мониторе

В данном случае хотелось бы не уменьшить потребление ресурсов, с делать так что бы их потребление было менее чувствительно для пользователей.
Особого алгоритма у меня нет. Пока есть идея сделать так что бы выполнялись не сразу все проводки, а пачки по несколько штук через одинаковые интервалы времени

Создайте job, который с нужным интервалом будет проверять наличие в таблице новых записей и выполнять для них какую-то логику
2 мар 12, 13:24    [12182948]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Dima T
Member

Откуда:
Сообщений: 15860
Wizandr
Проблему я вроде бы обозначил. Проводка большого количества документов требует много ресурсов (в частности дисковой подсистемы) и поэтому замедлят работу других пользователей.
Поэтому хотелось бы распределить проводку этих документов во времени.

Может лучше сразу приход на ночь перенести когда никого нет? :)
2 мар 12, 13:45    [12183145]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Mgvlad
Member

Откуда: Минск
Сообщений: 97
Wizandr,

А почему бы не вынести логику обработки записей в отдельный джоб?

Например, по приходу товара данные добавляются в некую специально обученную табличку. С определённым интервалом Джобик запускается и процессит сразу пачку данных. Или в конце дня запускается.
2 мар 12, 15:00    [12183854]     Ответить | Цитировать Сообщить модератору
 Re: как сделать такую штуку?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
Mgvlad
Wizandr,

А почему бы не вынести логику обработки записей в отдельный джоб?

Например, по приходу товара данные добавляются в некую специально обученную табличку. С определённым интервалом Джобик запускается и процессит сразу пачку данных. Или в конце дня запускается.


Glory
Создайте job, который с нужным интервалом будет проверять наличие в таблице новых записей и выполнять для них какую-то логику


думаю это наиболее простое решение
спасибо
2 мар 12, 15:41    [12184237]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить