|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Всем доброго дня! SQL SErver 2008 R2, RAM 16 Gb Запрос на сервере: Код: sql 1. 2. 3.
Поле Posts - varchar(max) Код на клиенте: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Когда происходит чтение поля Posts (val = reader[FieldCounter]), где длина содержимого более 30 Mb, вылетает "Exception of type 'System.OutOfMemoryException' was thrown." Пробовал заменить val = reader[FieldCounter] на reader.GetChars() - все то же самое. Есть ли возможность прочитать длинную строку из БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 00:20 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Вопрос не в длине конкретной строки, а в объеме, который ты пихаешь в несчастный Dictionary в цикле . Отсюда и переполнение памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 00:31 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
МСУ, Именно в длине строки, исключение вылетает до добавления строки в словарь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 00:33 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, какая блин разница доили после?? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 00:54 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
странно, прошло уже полчаса, а ОРМ до сих пор не предложили Belowzero2, какова реальная длина большого поля? 2GB - это тоже больше 30MB ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 00:59 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRos, как какая разница? ошибка возникает при чтении из reader'а. ОК, давайте уберем все лишнее. Теперь код выглядит так: Код: c# 1. 2. 3.
Почему сейчас вылетает? Да, актуальная длина данных в поле около 30 Mb, до 2 Gb очень далеко ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:09 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, а скоко памяти уже пожрала твоя прога до этого чтения? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:10 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2Да, актуальная длина данных в поле около 30 Mb, до 2 Gb очень далекоа сколько данных в памяти уже к этому моменту? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:11 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, ты сначала запроси память, а потом читай если память доступная имеется а то все время будешь натыкаться на аутофмемари ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:12 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Изопропил, интересно а ORM с outofmem как то борятся? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:13 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRos, Памяти свободной физической еще около 10 Gb на этот момент. А как запросить памяти в данном контексте? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:19 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, а приложение 32-битное? тогда и 500GB свободных не поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:24 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, ну не знаю какая там ОС, прога (32-64) и т.д. а память можно так Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:25 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRos, Все 64-битное ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:31 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, тогда дело не в этом скорее всего ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:32 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, гавнакодец Код: sql 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.
Belowzero2, а что ты хочешь делать в своем коде с полем 30 МБ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:33 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRosИзопропил, интересно а ORM с outofmem как то борятся? wrapper'ами для LOB просто ленивой загрузки недостаточно ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:34 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRos, Опередил. --- Автор, на какой итеррации цикла аутофмемори? Если на первой, то кидай тип колонки того самого поля в БД. Или минимальный пример, на котором воспроизводится. И скажи что ты хочешь делать, а то вдруг гвозди забивать, а микроскоп жалко, можно и камешком. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:36 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Изопропил, ну а если без блоб? какая та предварительная проверка на доступность памяти там есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:37 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRosИзопропил, ну а если без блоб? какая та предварительная проверка на доступность памяти там есть? ORM в кишках читает тем же datareader'ом, так что пофиг (я про EF). Да и проверки скорее всего нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:40 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Lord British, В поле находится закодированный inverted index, по которому потом находятся сообщения из другой таблицы. Что-то типа поискового движка. Да, вылетает на первой же итерации. Если в выборке нет полей с длиной >30M, все хорошо. Поле типа varchar(max) - вы это спрашивали? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 01:49 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Сдается мне, что передавать длинные строки MSSQL через ADO просто так не будет, где-то параметры связанные с памятью может нужно установить. Побьюсь еще немного, и буду хранить индекс в текстовых файлах - чуть медленнее будет робить, но надежнее ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 02:00 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, их считывают при необхдимости в них Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 02:41 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
ViPRos, Прошу прощения, невольно ввел вас в заблуждение. Вопрос не в базе данных вообще, а в создании длинных строк. .NET почему-то не может создать длинную строку (размер данных оказался около 250M) То есть в примере Код: c# 1. 2. 3. 4. 5.
буфер создается, а вот создание строки вылетает. Разбираемся дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 03:31 |
|
OutOfMemoryException при чтении SqlDataReader
|
|||
---|---|---|---|
#18+
Belowzero2, дак вам ViPRos и показал, как застолбить участок памяти фрагмента райдера от от смещения при выборе места для строки менеджером памяти, другой вопрос, есть ли у вас место под массив строки, как бы это не одно и тоже - есть ли память... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 03:43 |
|
|
start [/forum/topic.php?fid=20&msg=38129951&tid=1405259]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 166ms |
0 / 0 |