|
|
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Добрый день! Столкнулись со следующей проблемой в ADO.Net. Есть таблица на SQL сервере, для простоты - одна таблица. В настоящее время она занимает 61Мб. При загрузке этой таблицы в DataTable "съедается" ровно 160 Мб (а если использовать DataSet и DataTable, то немножко побольше - 168Мб). В дальнейшем эта таблица грузится не в стандартный DGV, а в самописный контрол, к-росто летает (очень быстро скроллирует и перемещается по таким большим данным). НО уже сейчас у программы начинаются проблемы (нехватка памяти), а в дальнейшем таблица будет только расти. Одна из задач программы - показать все данные сразу (так удобнее работать клиенту, и так работают программы у конкурентов). Т.н. "paging" (как на интернет-форумах - показывать постранично, с кнопками "следующая страница", "предыдущая страница", и т.п.) нельзя использовать, т.к. неудобно пользоваться. В то же время, MS Sql 2k5 Management Studio, написанная также на C# и Ado.Net, легко справляется с подобными данными, и даже гораздо большими. Например, полное открытие (не select * from table, а именно right click on table -> open table) открывает всю таблицу, используя 12Мб ОЗУ, а когда мы проскроллим всю эту таблицу до самого конца, у нас будет израсходовано еще столько же - 12Мб ОЗУ. Таким образом, если мы по-простому (как в учебнике ADO) открываем таблицу, то расходуется 160Мб, а SQL Management Studio на это же действие расходует всего лишь 12-24Мб. Есть предположения, как она это делает? И вопрос в догонку - почему с#, framework, ado.net не используют виртуальную память, а вылетают с исключением "Out of memory"? Может, настройка такая есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 11:45 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
XML наше все в ado.net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 11:47 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
И сколько можно говорить, ну не может живой человек работать с такими объемами , сделайте фильтры пусть выбирает что ему нужно. Хочет видеть все пусть видит - но медлееееено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 11:48 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Что значит "XML наше все"? Прокомментируйте. Что касается фильтров = конечно же, они есть. Я не говорю, что пользователю отображается вся таблица, я сказал "вся таблица грузится в память". Грузится для того, чтобы пользователь одновременно мог наложить любое количество фильтров и отобразить любое количество вкладок с данными. Таким образом, таблицу мы загружаем в память один раз, а показываем уже либо всю, либо фильтрованные части. И при наложении каждого нового фильтра память уже не расходуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 11:57 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Это значит что в датасете ваши данные как xml хранит. Фильтры это значит фильтры на сервере, а не все данные на клиента, а потом их фильтруем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 11:59 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
КхеИ сколько можно говорить, ну не может живой человек работать с такими объемами , сделайте фильтры пусть выбирает что ему нужно. Хочет видеть все пусть видит - но медлееееено. Не обобщайте. Если Вы неспособны работать с большими объёмами - это не означает, что кто-то другой не способен. Автору - выбросьте весь этот адонет с фреймворком нахер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:00 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Пропала Планета Не обобщайте. Если Вы неспособны работать с большими объёмами - это не означает, что кто-то другой не способен. Вы и есть этот кто то?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:01 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
ТрудностьВ_ADO, http://www.rsdn.ru/article/dotnet/DataGridView20.xml#EOAAE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:01 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Уважаемые, но ведь SQL Server Management Studio успешно работает, и быстро, и с большими (гораздо большими, чему у меня) объемами! Вопрос - как она это делает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:01 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Может он не в датасет загружает данные, как считаете?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:02 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Кхе, Насчёт больших объёмов - да, в частности я. И я не одинок По поводу менеджмент студии - ееё тоже можно уложить приличным объёмом данных Автору же помочь может грид в виртуальном режиме(от любого производителя).данные могут при этом лежать хоть в dbf , хоть в текстовом файле, хоть в локальной СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:07 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Пропала Планета, Не поделитесь с каким объемами вы работаете в дататэйбл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:15 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Вообще, идея насчет виртуального режима интересная. Данные у нас лежат сейчас в xml на жестком диске, но можно сделать и dbf, и mdb, и даже SQL Compact CE. Только вот еще задача: должна поддерживаться сортировка. Виртуальный режим позволит применять сортировку таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 12:22 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Спасибо за наводку на виртуальный грид! Теперь я знаю на 100%: в SQL Management Studio именно так и реализовано. Теперь память не "съедается", максимум - 26Мб, и работает все быстро. Хороший пример здесь: http://msdn.microsoft.com/ru-ru/library/ms171625.aspx Пример использует базу Nortwind, но не заточен под нее, будет работать с любой другой таблицей, где первый столбец - уникальный ключ. Сотня тысяч строк - и все летает (ну насколько стандартный dgv вообще может летать...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 13:41 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Мда.. я вот сейчас с ораклом. вожусь... секционированная таблица, 48 полей, ~2 млрд. записей. Интересно, что будет, если я всю эту таблицу попробую грузануть на клиента?.. Первым делом мы испортим самолёты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 14:07 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
КхеЭто значит что в датасете ваши данные как xml хранит. Это значит, что надо открыть рефлектор и посмотреть, что там и как хранится, а не молоть чепуху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 14:07 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Ъй, меряться с Вами тяжело = у вас больше :) Всему же есть разумные пределы, про миллиард записей речь не шла :) Сейчас у меня ~60 тыс. записей, при любом раскладе будет никак не больше 600 тыс., скорее всего будет меньше 300 тыс. записей одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 17:02 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Уважаемые, а почему никто не обратил внимание на второй вопрос из первого поста: почему с#, framework, ado.net не используют виртуальную память, а вылетают с исключением "Out of memory"? Просто непонятно, как может быть out of memory в системе, где существует файл подкачки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 17:05 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
ТрудностьВ_ADOУважаемые, но ведь SQL Server Management Studio успешно работает, и быстро, и с большими (гораздо большими, чему у меня) объемами! Вопрос - как она это делает? Очень просто. Любая таблица данных разбита в MS SQL на страницы определенного фиксированного размера. А не лежит тупо целиком. Как это делаете вы. Скачала первый кадр - страницу - подкачивает второй. потом третий, но при этом первый выбрасывает. Грубо говоря тот же самый пейджинг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 17:30 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
ТопикстартерУважаемые, а почему никто не обратил внимание на второй вопрос из первого поста: почему с#, framework, ado.net не используют виртуальную память, а вылетают с исключением "Out of memory"? Просто непонятно, как может быть out of memory в системе, где существует файл подкачки... Читайте про CLR. Принцип организации памяти в среде. Управляемая куча. Стек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 17:34 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Вроде бы решили задачу: поставили SQL CE, сунули в него эту большую таблицу. Нарисовали грид в виртуальном режиме - все бы замечательно. Но, как Вы знаете, существует не так много способов организации PAGING (постраничная выборка) при использовании MS Sql. Учитывая что SQL CE не умеет работать с row_number и не умеет делать set rowcount, этих способов остается еще меньше - два или три. При этом на 60 тыс. записей возникает следующая проблема = первые страницы возвращаются быстро, чем дальше - тем медленнее, последние страницы вообще еле-еле ворочаются :( Модератор: Тема перенесена из форума "C#.NET". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2009, 18:30 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Есть такая штука - LinqDataSource у DevExpress, на его GridControl преблема решается совершенно прозрачно. Любой объем данных, скроллится быстро в любую сторону, память при этом расходуется минимально. все когда-нибудь начинается снова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2009, 09:37 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
ТопикстартерУважаемые, а почему никто не обратил внимание на второй вопрос из первого поста: почему с#, framework, ado.net не используют виртуальную память, а вылетают с исключением "Out of memory"? Просто непонятно, как может быть out of memory в системе, где существует файл подкачки... Курим доки про "распределение адресного пространства процесса Win32" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2009, 11:39 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
хах, спустя месяц этот потерянный топик нашел знаток венды Антошка и сказал как отрезал, курите про вин32. Антошка, вин32-то тут причем со своим адресным пространством? разъясни что ты там прочитал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2009, 23:06 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
зыхах, спустя месяц этот потерянный топик нашел знаток венды Антошка и сказал как отрезал, курите про вин32. Антошка, вин32-то тут причем со своим адресным пространством? разъясни что ты там прочитал :) Программы где выполняются? В процессах операционной системы, причём не важно .Net ли это, либо native-код. Всего один процесс может адресовать не больше 4Гб (2^32, если кто не помнит). Далее, ОС забирает под свои нужны верхние 2 Гб в КАЖДОМ процессе пользователя, делая их недоступными за некоторыми исключениям. Следовательно, программе осталось уже не более двух Гб. Потом ещё веселее: в эти два гигабайта подгружаются код и глобальные данные программы и всех используемых dll, в т.ч. системных типа user32.dll. Там же на каждый поток создаются стеки (а это по умолчанию 1 Мб на поток) и системные кучи. В итоге пользователю останется доступно порядка 2000 Мб. Если их все занять, то адресное пространство процесса исчерпается и вывалится знаменитое OutOfMemory. Подробнее на http://www.thevista.ru/page.php?id=10539&print=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2009, 21:45 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Antoshka харош бездумно копипастить, ты не ответил на главный вопрос - какого фига не используется виртуальная память? и, да, что делать если у меня x64? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2009, 12:27 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
зыAntoshka харош бездумно копипастить, ты не ответил на главный вопрос - какого фига не используется виртуальная память? и, да, что делать если у меня x64? :) Ты хоть читаешь, то что пишут? Если у тебя x64, то всё будет ОК. А вот если на x86 у тебя будет 3 гБ пользовательских данных, то куда ты их уложишь, если у тебя всего порядка 2000 Мб адресного пространства. Даже если они будут лежать в свопе, то всё равно место в АП процесса они занимают. Чтобы обойти эту беду, необходимо организовать специальное окно в адресном пространстве процесса, в которое при необходимости маппить необходимые порции данных из файла подкачки. Кстати, примерно так работают с очень большими файлами: замаппили кусочек в память, обработали, отменили маппинг - перешли к следующему куску. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2009, 10:21 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Antoshka Ты хоть читаешь, то что пишут? Если у тебя x64, то всё будет ОК. твоя проблема в том, что как раз ты тут и не читаешь. Про архитектуру процессора никто даже не заикался, кроме тебя с твоим "Win32". дальше у тебя много слов опять не по теме, комментировать не буду. Повторю исходный вопрос - он был не в том, почему приложение не может воспользоваться более чем N гигабайтами оперативы, он был в том, почему .net не использует виртуальную память. Разницу способен понять? И ответ на этот вопрос лежит не в статьях про Win32, а в описании CLR и сборщика мусора и особенностях их работы. Иди читай, потом расскажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2009, 12:30 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Так, вернёмся к истокам... ТрудностьВ_ADOДобрый день! И вопрос в догонку - почему с#, framework, ado.net не используют виртуальную память, а вылетают с исключением "Out of memory"? Может, настройка такая есть? Ты хочешь сказать, что дотнет получает память от операционной системы в обход стандратного WinAPI? Ты ошибаешься, он также точно где-то в своих дебрях вызовает VirtualAlloc, который имеет те же самые грабли с "Out of memory", о которых я рассказывал. Ниже приведена программа, которая легко это доказывает. Код: plaintext 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Запусти, и увидишь, что далее двух шагов она не пройдёт, если, конечно процесс не x64 (в этом случае она будет продолжать работать до исчерпания ОЗУ и файла подкачки). Но, опять же, топикстартер не упомянул версию своей операционной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2009, 14:20 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
не нужно показывать все данные сразу, пусть пользователь/автор программы конкретизирует выборку и на одну проблему меньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2009, 15:45 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Antoshka Запусти, и увидишь, что далее двух шагов она не пройдёт, если, конечно процесс не x64 (в этом случае она будет продолжать работать до исчерпания ОЗУ и файла подкачки). Но, опять же, топикстартер не упомянул версию своей операционной системы. ололо, а у меня даже один шаг ниасилила, к чему бы это? винда 2008 x32, 2гб оперативы. давай усложним твой пример, ну так чтобы память реально выделялась и использовалась, а не просто резервировалась под возможные нужды. Код: plaintext 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. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2009, 04:17 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
зы ололо, а у меня даже один шаг ниасилила, к чему бы это? винда 2008 x32, 2гб оперативы. :) и ты тут ещё про своп рассуждаешь.. зы давай усложним твой пример, ну так чтобы память реально выделялась и использовалась, а не просто резервировалась под возможные нужды. Да будет тебе известно, что дотнет при выделении памяти усердно инициализирует её нулями. Так что нет никакой разницы между моим и твоим кодом за исключением размера блока. зы сиди и наблюдай в таскменеджере за процессом, потом расскажешь на скольки у тебя отвалилось и почему это оно так происходит. И, кстати, не забудь заодно поведать нам, какая у тебя ось и сколько памяти стоит. Результаты: 1) моя рабочая машина, Vista x64 2Gb - моя прога доходила до 4-5 и вываливалась, что соответствовало 4-5 Гб всей доступной памяти (ОЗУ+файл подкачки). Твоя прога честно дошла до 5334. Результат по объёму аналогичный; 2) тестовый сервер Win 2003 x86, 16 Gb, /PAE включен. Моя прога стабильно отваливалась после цифры 2, твоя - после 1725. Включи мозг и подумай, почему, при наличии дофига ОЗУ + хз сколько места в файле подкачки, больше двух гигов процесс сожрать не может? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2009, 08:27 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Случайно наткнулся на топик. Жестко Антошка упертого рогом в забор зы отодрал :) Про ваш спор - баян столетней давности про распределение памяти под своппинг, зы - двойка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 02:26 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
МСУ, тебя-то драли, дерут и драть будут, до сих пор иногда ржу над твоими перлами. Надолго разбанили-то? Antoshka, к сожалению, в разгар спора мне не хватило времени проверить один момент, поскольку я уехал на несколько недель, а потом забыл :( (МСУ может даже не пытаться глумиться что это типа отмазка, данный любитель некропостов может поискать мои сообщения за этот период - не найдет ни одного). момент заключался в том, чтобы уточнить, как это работало на старом .нет, поскольку не отрицаю что в новом они много чего улучшили, включая работу с памятью, а со времен 1.1 я помнил что на виртуальную память были ограничения. Общая суть такая, что своп и сборщик мусора плохо совместимы с собой, поскольку своппинг пытается засунуть неиспользуемые страницы на диск, а сборщик - найти среди неиспользуемых то, что можно выкинуть, поднимая тем самым страницы с диска обратно в память. Несмотря на то, что синтетические тесты показывают возможность выделения большого объема на 64-битной ОС, в реальности, если далеко выбраться за пределы доступной физической, реальное приложение начнет сильно тормозить себя и систему в целом. Хуже, если несколько .нет приложений работают на одном сервере (веб сервер, например), тогда у них начнется конкуренция за физическую память, что приведет к общей деградации производительности. Очевидно, что то, что я написал выше, справедливо для любых приложений - нет свободной памяти, система свопит и тормозит, но с .net этот эффект значительно хуже, потому что сборщик мусора не дает страницам долго покоиться на диске, в отличие от обычных приложений, которые можно надолго частично схоронить. авторДа будет тебе известно, что дотнет при выделении памяти усердно инициализирует её нулями. Так что нет никакой разницы между моим и твоим кодом за исключением размера блока. разница, как ни странно, есть, и её отчетливо видно в таскменеджере. Чтобы её объяснить - надо дальше углубляться в работу менеджера памяти, сейчас нет на это времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 12:54 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Нет времени, работа, ... Зы, Вы похожи на нашкодившего первоклассника :) Да не расстраивайтесь так, все когда-то с чего-то начинали. У Вас еще всё впереди :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 13:26 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
>ТрудностьВ_ADO, 30 апр 09, 18:30 [7135839] > ... При этом на 60 тыс. записей ... Здесь рассказано как строился прототип защищенных распределенных многоуровневых информационных систем. Задачу страничной подкачки также пришлось решать. Я сразу отбросил вариант закачки в кеш клиентского компьютера полной выборки запроса. Не реально это по медленным каналам. Жизнеспособна только страничная подкачка. Разные варианты реализации её приведены в статьях. На миллиарде записей не проверял. Но на 60 тыс. не должно быть существенной разницы во времени получения первой и последней страницы. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 14:02 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
>ТрудностьВ_ADO, 30 апр 09, 18:30 [7135839] > ... При этом на 60 тыс. записей ... Здесь рассказано как строился прототип защищенных распределенных многоуровневых информационных систем. Задачу страничной подкачки также пришлось решать. Я сразу отбросил вариант закачки в кеш клиентского компьютера полной выборки запроса. Не реально это по медленным каналам. Жизнеспособна только страничная подкачка. Разные варианты реализации её приведены в статьях. На миллиарде записей не проверял. Но на 60 тыс. не должно быть существенной разницы во времени получения первой и последней страницы. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 14:03 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
Можно использовать серверный курсор и датагрид в виртуальном режиме. У меня на 40 тыс записей открывает курсор около полусекунды, затем работает (скроллит) очень быстро. Так же реализовал сортировку, поиск и фильтрацию. Народ доволен. Память на клиенте практически не используется (полмегабайта - можно пренебречь). В памяти держится только то, что выведено на экране. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2009, 17:35 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
серверные курсоры обладают феноменально низкой производительностью, кроме того, не имеют должной поддержки со стороны ado.net. Наверное, ты все-таки хотел воспользоваться пейджингом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2009, 18:48 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
По поводу SQL Management Studio. Информирую. Студия использует диск для хранения прочитаных с сервера данных. Аналогичным образом делает старый добрый jet (движок Access), но он более интеллектуальный и поддерживает разные курсоры с разной функциональностью. Только студийный вариант свой и не поддерживает фильтров и сортировки. В памяти хранятся только указатели на смещение в этом файле кэша (я так думаю). Данные читаются только в одном направлении, пока не будет достигнута последняя запись. Скажем, нельзя быстро перейти в конец и листать в обратном направлении. Используется ADO.NET forward-only курсор (DataReader). С уважением, Павел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 16:45 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
зы, Для отчитки по 100 строк для показа страниц на экране - самое то. У меня написан класс на iBindingList - все прекрасно вяжеться с гридом. Но есть несколько минусов: 1. Не сделать нормальный поиск - все равно придется все перебрать 2. Фильтрация и сортировка - только для запросов (select) для хранимок не получится (или нужно задавать жестко параметры для хранимок) Все это из-за того, что на скуле нет нормальных средств для выборки из запроса по принципу "с 100 записи выбрать 200 штук". Но для простых списков (например справочник товаров (>100 тыс), список накладных и т.п.) работает нормально, гораздо лучше, чем тянуть все в память ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2010, 20:07 |
|
||
|
ADO.Net и большие объемы данных
|
|||
|---|---|---|---|
|
#18+
krudensoft1. Не сделать нормальный поиск - все равно придется все перебрать Вы просто не умеете писать SQL-запросы или пользовать ORM. krudensoft2. Фильтрация и сортировка - только для запросов (select) для хранимок не получится (или нужно задавать жестко параметры для хранимок) Вы просто не умеете писать SQL-запросы или пользовать ORM. krudensoftВсе это из-за того, что на скуле нет нормальных средств для выборки из запроса по принципу "с 100 записи выбрать 200 штук". Вы просто не умеете писать SQL-запросы или пользовать ORM. krudensoftНо для простых списков (например справочник товаров (>100 тыс), список накладных и т.п.) работает нормально, гораздо лучше, чем тянуть все в память Вы просто не умеете писать SQL-запросы или пользовать ORM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2010, 20:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=17&tid=1351441]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
205ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 574ms |

| 0 / 0 |
