|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Доброе время суток. Вопрос в следующем. Есть код заполнения датасета Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Иногда требуется загружать в него много записей (до 1000000) для обсчета через LINQ. Стопор в том что при загрузке большого кол-ва записей dataset заполняется довольно долго (примерно до 30 секунд) Есть ли возможность организовать много поточную загрузку в Dataset? Не откладывай на завтра то что можно сделать послезавтра :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 07:57 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
сделать загрузку в отдельном потоке я думаю можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 08:28 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Нет не сделать загрузку отдельным потоком, а именно запустить несколько потоков в которых бы заполнялся dataset чтобы запускалось скажем 3-4 потока и каждый добавлял свою часть данных. За счет этого время заполнения dataset снизится в разы ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 08:53 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SkyS, Может и не в тему, а на SQL этот обсчёт сделать нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 09:42 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
BarkanSkyS, Может и не в тему, а на SQL этот обсчёт сделать нельзя? в процедуру передается текст запроса на sql . БД Firebird 1.5. Если честно то я не знаю можно ли в теле запроса указать на многопоточность и если честно я не курсе потдерживает ли такое дело firebird ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 10:00 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SkyS, На таком маленьком количестве записей не нужна никакая многопоточность. И не забивайте гвозди микроскопом. Изучите свою СУБД и выполните на ее языке свою задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 11:12 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SkySДоброе время суток. Вопрос в следующем. Есть код заполнения датасета Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Иногда требуется загружать в него много записей (до 1000000) для обсчета через LINQ. Стопор в том что при загрузке большого кол-ва записей dataset заполняется довольно долго (примерно до 30 секунд) Есть ли возможность организовать много поточную загрузку в Dataset? Мне кажется вообще неправильный подход... Никогда в dataset не грузят столько записей... Ну это мой взгляд... Есть трехзвенная архитектура .... Большую часть работы выполнять на сервере... И то что ты хочешь просчитать через LINQ... можно сделать на сервере... причем проверсти оптимизацию запросов... И выдать результат пользователю... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 12:21 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SkyS, Правильный подход - каждому свое - программе - код, БД - данные Обработку больших объемов данных надо делать в БД - она для того и делалась, а не в коде! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 17:25 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
spSkyS, Правильный подход - каждому свое - программе - код, БД - данные Обработку больших объемов данных надо делать в БД - она для того и делалась, а не в коде! +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 20:36 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
spSkyS, Правильный подход - каждому свое - программе - код, БД - данные Обработку больших объемов данных надо делать в БД - она для того и делалась, а не в коде! Тут я согласен. Просто отчет довольно сложный и мне проще делать обсчет на клиенте так как не смог придумать каким образом сделать это на сервере бд (знаю что это мои проблемы и мой косяк). Но тут вопрос даже не в этом. Вопрос в том Умеет ли датасет заполняться в много поточном режиме? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 05:32 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Владимир САБольшую часть работы выполнять на сервере... . Тут имеется в виду сервер БД ? или свой собственныый написанный сервер для обработки запросов? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 05:34 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SkySВладимир САБольшую часть работы выполнять на сервере... . Тут имеется в виду сервер БД ? или свой собственныый написанный сервер для обработки запросов?Конечно на сервере БД... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 06:21 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SkySВопрос в том Умеет ли датасет заполняться в много поточном режиме? Редактировать в многопоточном режиме пробовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 07:15 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Данные разбивать на пачки, а их с помощью tpl записывать параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 07:51 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Открою маленький секрет - база данных данных хранится на одном жестком диске и обрабатывается одним контроллером НЖМД поэтому попытка многопоточной загрузки ничего не даст - система поставит все запросы к базе в одну огрооомную очередь к медленному устройству ввода вывода и все только станет хуже. Сущность LINQ в кешировании данных на клиенте, лет пять назад такую архитектуру пнул бы даже лежачий, а счаз запрудрили людям моск типа это круто. Разумеется, многопоточное заполнение ОЗУ произойдет быстрее и Ваше приложение как бы отделается раньше, но за кадром, ado.net будет потом все это пихать в файл СУБД. Кстати, транзакций возможны побочные эффекты при многопоточной загрузке. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 10:39 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
enyОткрою маленький секрет - база данных данных хранится на одном жестком диске и обрабатывается одним контроллером НЖМД поэтому попытка многопоточной загрузки ничего не даст - система поставит все запросы к базе в одну огрооомную очередь к медленному устройству ввода вывода и все только станет хуже. Сущность LINQ в кешировании данных на клиенте, лет пять назад такую архитектуру пнул бы даже лежачий, а счаз запрудрили людям моск типа это круто. Разумеется, многопоточное заполнение ОЗУ произойдет быстрее и Ваше приложение как бы отделается раньше, но за кадром, ado.net будет потом все это пихать в файл СУБД. Кстати, транзакций возможны побочные эффекты при многопоточной загрузке. Полная хрень ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 11:06 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
enyОткрою маленький секрет - база данных данных хранится на одном жестком диске и обрабатывается одним контроллером НЖМД поэтому попытка многопоточной загрузки ничего не даст Это не совсем так. Чтение-запись в нескольких потоках может заметно улучшить производительность. enyСущность LINQ в кешировании данных на клиенте, Не говорите ерунды, учите матчасть! По теме. А зачем использовать датасеты? Считаете линком - используйте свои коллекции, если хотите даже анонимных типов. Как то так. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 11:23 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
SeVaenyОткрою маленький секрет - база данных данных хранится на одном жестком диске и обрабатывается одним контроллером НЖМД поэтому попытка многопоточной загрузки ничего не даст - система поставит все запросы к базе в одну огрооомную очередь к медленному устройству ввода вывода и все только станет хуже. Сущность LINQ в кешировании данных на клиенте, лет пять назад такую архитектуру пнул бы даже лежачий, а счаз запрудрили людям моск типа это круто. Разумеется, многопоточное заполнение ОЗУ произойдет быстрее и Ваше приложение как бы отделается раньше, но за кадром, ado.net будет потом все это пихать в файл СУБД. Кстати, транзакций возможны побочные эффекты при многопоточной загрузке. Полная хрень Согласен. Браво! Но сама по себе многопоточность не улучшает производительность, а только может ускорить отклик системы. И вообще, в самом начале вопрос очень сферичен - две строчки чего-то там, без запроса и данных и вопрос - а будет ли это работать быстрее? Ответ - как хотите так и будет работать ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 11:59 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
enyНо сама по себе многопоточность не улучшает производительность, а только может ускорить отклик системы. На одном одноядерном проце - да. Но где бы такую систему сейчас найти? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 12:45 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
пестец, дорогая редакция. сраный многоэтажный селект написать и оптимизировать план не хотим, запилим на PLINQ обработку пачками. где здравый смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 12:53 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
ЕвгенийВenyНо сама по себе многопоточность не улучшает производительность, а только может ускорить отклик системы. На одном одноядерном проце - да. Но где бы такую систему сейчас найти? Где-то на системном уровне многоядерность еще заметна. На пользовательском уровне - что система даст от этих ядер то и будет, и это без учета возможных блокировок и переключений потоков в самом апликейшене и заморочек нетовской виртуальной машины. В итоге система программе отдает ресурсы по принципу отклика, когда системе удобно. Если несколько потоков маниакально хотят от системы одного и того же, например общий адоконнекшн, система обижается и начинает ставить их в угол ;-) отбирать ядра ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:05 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Lord Britishпестец, дорогая редакция. сраный многоэтажный селект написать и оптимизировать план не хотим, запилим на PLINQ обработку пачками. где здравый смысл? ну не совсем сраный как вы выражаетесь. у потом я уже писал что мне не удалось в то время придумать правильно и быстро работающую процедуру в субд (используется firebird). Просто хотелось узнать можно ли...? Сейчас запрос оптимизирован и процедура написана, но остался вопрос про много поточность . Ну и внесу свои пять копеек по поводу целесообразности применения многопоточности при заполнение датасета. Может я чего то не понимаю но из кода видно что я заполняю датасет данными из базы а не наоборот. Поэтому говорить об транзакциях и прочих прелестях записи в бд не стоит. я считаю если выполнение процедуры на сервере бд занимает времени больше чем выборка данных и обработка их на клиенте то смотреть нужно в сторону обработки на клиенте(ну опять же все зависит от оптимизации). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:09 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Lord Britishпестец, дорогая редакция. сраный многоэтажный селект написать и оптимизировать план не хотим, запилим на PLINQ обработку пачками. где здравый смысл? +1024 по сабжу: PLINQ + ForEach + создание и заполнение дататейбла с последующей регистрацией его в DataSet типа ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:10 |
|
Многопоточное заполнение Dataset c#
|
|||
---|---|---|---|
#18+
Lord Britishпестец, дорогая редакция. сраный многоэтажный селект написать и оптимизировать план не хотим, запилим на PLINQ обработку пачками. где здравый смысл? Скоро дот-нетовцы вообще оторвутся от реальности и будут считать ассемблером виртуальный байт код, а LINQ СУБД ;-) - виртуализация наступает. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:10 |
|
|
start [/forum/topic.php?fid=20&tid=1405170]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 9ms |
total: | 158ms |
0 / 0 |