powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как сделать очередь обращений к БД?
20 сообщений из 20, страница 1 из 1
Как сделать очередь обращений к БД?
    #39050221
Фотография anc32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно аккумулировать запросы к БД от ADO.NET, т.к. они долго будут выполняться, чтобы не висела программа на них. Как умнее всего реализуется очередь запросов к БД, чтобы их не накапливалось бесконечное количество, а в отдельных потоках они в фоне выполнялись в определенном порядке? Какие объекты можно ставить в очередь, чтобы аккумулировать запросы для выполнения ExecuteNonQuery и ExecuteScalar? Спасибо.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050257
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32, можно просто new List<Action>() сделать и туда добавлять всё то, что нужно выполнять.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050260
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или new Queue<Action>().
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050297
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу или new Queue<Action>().

или, лучше, ConcurrentQueue<T> )
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050301
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНу или new Queue<Action>().

или, лучше, ConcurrentQueue<T> )Возможно, но чтобы Action-ы "в фоне выполнялись в определенном порядке" и List<T> сгодится :)
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050343
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВозможно, но чтобы Action-ы "в фоне выполнялись в определенном порядке" и List<T> сгодится :)

С листом как раз таки всё понятно, а вот в очередь во время исполнения заданий могут поступать новые задания, иначе зачем вообще втюхивать сюда очередь?
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050356
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВозможно, но чтобы Action-ы "в фоне выполнялись в определенном порядке" и List<T> сгодится :)

С листом как раз таки всё понятно, а вот в очередь во время исполнения заданий могут поступать новые задания, иначе зачем вообще втюхивать сюда очередь? И? Добавление: list.Add(), извлечение: list[0]. Вот тебе и очередь :)
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050371
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ? Добавление: list.Add(), извлечение: list[0]. Вот тебе и очередь :)

По голове настучать разрабам, понавыдумали, понимаешь, очереди какие-то, вот балбесы, да? Есть же List
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050381
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAИ? Добавление: list.Add(), извлечение: list[0]. Вот тебе и очередь :)

По голове настучать разрабам, понавыдумали, понимаешь, очереди какие-то, вот балбесы, да? Есть же List Это разные структуры данных, разные характеристики производительности в разных задачах.
Но для задачи ТС особой разницы нет, разве что более чётко быдет обозначено назначение объекта.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050431
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ээммм...

авторКак умнее всего реализуется очередь запросов к БД , чтобы их не накапливалось бесконечное количество, а в отдельных потоках они в фоне выполнялись в определенном порядке

нужна потокобезопасная очередь, так как из разных потоков будет происходить поступление/изъятие задач из очереди.

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

конечно, я понимаю, что велосепедостраение никто ещё не отменял. но всё же
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050496
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

ээммм...

авторКак умнее всего реализуется очередь запросов к БД , чтобы их не накапливалось бесконечное количество, а в отдельных потоках они в фоне выполнялись в определенном порядке

нужна потокобезопасная очередь, так как из разных потоков будет происходить поступление/изъятие задач из очереди.

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

конечно, я понимаю, что велосепедостраение никто ещё не отменял. но всё же Ты несколько иначе понял постановку вопроса.
Задачи вроде как выполнять планируется в отдельных потоках, а не "из разных потоков будет происходить поступление".
А учитывая то, что "они в фоне выполнялись в определенном порядке", предполагаю, что отдельные потоки тут и не нужны вовсе.

Банальный lock обеспечит "поверх List-а, свою потокобезопасную очередь" в данном контексте.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050507
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы несколько иначе понял постановку вопроса.

Я ж цитату привёл и всё выделил жирненьким. Как это иначе понять-то можно?

skyANAЗадачи вроде как выполнять планируется в отдельных потоках, а не "из разных потоков будет происходить поступление".

Т.е. ты считаешь, что в определённое время сформировался пакет задач, который отдали на выполнение в синхронном режиме, так? Значит будет 1 поток, выполняющий задачи 1 за другим, или запускающий таски и ожидающий их выполнение. Но если речь идёт о накапливаемости , значит в определённые моменты, кто-то другой (поток) будет подсовывать новые задачи в очередь. Если ты залочишь List, то подсунуть задачу не получится, и другой поток провиснет, по наитупейшей причине. Зачем ему ждать "окошка", чтобы сунуть в List свои задачи? При использовании потокобезопасной очереди такие проблемы исключены. В очередь можно сувать новые задачи откуда угодно и как угодно, не важно синхронно они при этом обрабатываются или нет.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050562
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, да все там получится и с List, и с ConcurrentQueue, не драматизируй :)

Кстати надо бы версию фреймворка у ТС уточнить.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050563
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, да все там получится и с List, и с ConcurrentQueue, не драматизируй :)

Да и без List всё получится, даже без C# тоже, да и без компа в принципе, гоу жареть шашлеки и всё получится
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050567
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32, и уточните насчет "в определенном порядке". Это в каком? Не в порядке поступления?
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050569
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAanc32, и уточните насчет "в определенном порядке". Это в каком? Не в порядке поступления?

да тут нет никого кроме нас
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39050982
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32,

судя по аватарке с Чаком в профиле, ты есть и на форумах msdn и задал там похожий вопрос. Только там почему-то подробней расписываешь, а тут как-то скромно. А лучше наоборот, на этом форуме по БД спрашивать.
В частности, про балансировку нагрузки, индексы, уровни изоляции. Только раздел форума правильно выбери: MS Sql Server.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39051683
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39053279
Фотография anc32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех за Ваши советы. Фрейворк последний. В определенном порядке имеется в виду, что будет возможность, к примеру если поступают задания на выполнение BULK INSERT 1000 записей, запустить эти BULK INSERT один за другим. Не уверен ,получится ли это реализовать, но в идеале хотелось бы гарантировать перед выполнением ExecuteScalar, что все предшествующие INSERT выполнились.
...
Рейтинг: 0 / 0
Как сделать очередь обращений к БД?
    #39053348
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС, если надо загрузку в БД (что загружаешь, в каком, объёме, с какой периодичностью), то так и спрашивай. иначе какой-то поток сознания - догадайтесь сами
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как сделать очередь обращений к БД?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]