m_abh Ответов: 4

лучший способ использовать .net Datatable с огромными данными


Всем Привет,
Мне нужна ваша помощь пожалуйста в очень срочном вопросе, Мне нужно заполнить .net datatable огромными данными( около 400 МБ), при загрузке данных я сталкиваюсь с проблемой памяти , исключение из памяти , я обнаружил, что это занимает более 1 ГБ из памяти.


Я ищу об этой проблеме и нахожу, что кто-то говорит об этом, когда использует .Net datatable он делает 3 копии этого .net datatable.


Мой вопрос таков:
что является лучшим способом, чтобы использовать .чистый объект DataTable с огромной сведения?
чтобы избежать проблем с памятью??
Заранее спасибо


Wonde Tadesse

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

m_abh

Я так сожалею , что не ответил вам, и ваши ответы очень благодарны.
но проблема, с которой я сталкиваюсь, заключается в том, что у меня есть sql return datatable имеет 1000 столбцов и около 1000 000 строк, типы столбцов-double и int.
этот возвращаемый размер данных составляет около 200-400 МБ , но при добавлении в .net DataTable размер увеличивается до 800 МБ - 1 ГБ.
так почему же это происходит в .net dataTable?? и есть ли способ избежать этого??
моя проблема заключается в проблеме производительности памяти.

Спасибо.

4 Ответов

Рейтинг:
1

thatraja

Сколько строк в вашей таблице данных?

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

Это System.Int32.MaxValue или 2 147 483 647. Но поскольку вы не сможете достичь этого предела, не генерируя исключение OutOfMemory, оно ограничено доступной памятью.

Чтобы добавить строки в DataTable, сначала необходимо использовать метод NewRow для возврата нового объекта DataRow. Метод NewRow возвращает строку со схемой DataTable, как она определена DataColumnCollection таблицы. Максимальное число строк, которое может хранить DataTable, составляет 16 777 216. Дополнительные сведения см. В разделе добавление данных в таблицу DataTable.

Лучший способ-разделить DataTable
Как разделить одну таблицу данных на множество таблиц данных?[^]


m_abh

Datatable имеет около 90 столбцов и 1000 000 строк

Рейтинг:
1

Carlos A Merighe

У меня была проблема с DataTable, случайно выбрасывающим исключение из памяти. Как оказалось, цель платформы сборки проекта была установлена на "предпочтение 32-битной". Как только я снял этот флажок, случайное исключение из памяти исчезло.

Карлос А Мериге


CHill60

Пока данные не вырастут настолько большими, что вернутся обратно. Я советую не публиковать ответы на очень старые сообщения таким образом

Рейтинг:
0

RaviRanjanKr

Рекомендации по использованию ADO.NET[^]
В этой статье представлены лучшие решения для реализации и достижения оптимальной производительности, масштабируемости и функциональности в вашей корпорации Майкрософт. ADO.NET приложения; он также охватывает лучшие практики при использовании объектов, доступных в ADO.NET и предлагает предложения, которые могут помочь вам оптимизировать дизайн вашего ADO.NET применение.


m_abh

Мне очень жаль, что я не ответил вам, я был очень занят, и ваш ответ очень благодарен.
но проблема, с которой я сталкиваюсь, заключается в том, что у меня есть sql return datatable имеет 1000 столбцов и около 1000 000 строк, типы столбцов-double и int.
этот возвращаемый размер данных составляет около 200-400 МБ , но при добавлении в .net DataTable размер увеличивается до 800 МБ - 1 ГБ.
так почему же это происходит в .net dataTable?? и есть ли какой-нибудь путь к этой пустоте??
моя проблема заключается в проблеме производительности памяти.

Спасибо.

Рейтинг:
0

Wendelius

Поскольку объем данных довольно велик, на мой взгляд, вы должны хранить данные, например, в базе данных и извлекать только необходимую их часть всякий раз, когда это необходимо. Например, вы можете использовать:
- SQL Server Compact Edition[^]
- Microsoft SQL Server Express Edition[^]


fjdiewornncalwe

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

Wendelius

Согласитесь, и datatable не предназначен для постоянного хранения данных, даже если он может быть использован в качестве такового