Максимальный размер TClientDataSet

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Axline
Сообщения: 5
Зарегистрирован: 07 дек 2004, 14:47

Максимальный размер TClientDataSet

Сообщение Axline » 15 ноя 2007, 12:16

Доброго времени суток. Есть таблица с более чем 800.000 записей. Нужно выбрать из нее все данные и перенести на клиента. Специфика базы такова, что все данные нужны пользователю и должны быть доступны для редактирования и отображения (географические карты+ таблицы с метаданными). База под Ib 7.5, клиент написан под D7 с IBX 7.11. Данные сливаются через провайдера в CDS. Со стандартным менеджером памяти клиент загибается на 400.000 записей с ошибкой Out of memory. Памяти в машине 4Гб, что более, чем достаточно. При использовании менеджера памяти FastMM4 выбираются все данные. Но через раз вылетает все та же ошибка Out of memory. От чего зависит успешное/не успешное выполнение понять не могу. Может быть кто-нибудь сталкивался с подобным?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 15 ноя 2007, 12:32

Все зависит от:
1) Кривизны рук разрабочика программы
2) Кривизны рук разработчика IBX
3) Кривизны рук разработчика CDS.

4 гига могут использовать только 64-х разрядные программы. Остальные ограничены одним-двумя и то если повезет. Вывод: не надо в память всасывать больше чем можете отобразить. Лишнее надо из нее выкидывать.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 15 ноя 2007, 13:04

Dimitry Sibiryakov писал(а):4 гига могут использовать только 64-х разрядные программы. Остальные ограничены одним-двумя и то если повезет.
Тремя ;)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 ноя 2007, 14:19

Тремя
двумя-тремя. если на раб-станции, то фактически двумя.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 15 ноя 2007, 15:41

kdv писал(а):двумя-тремя. если на раб-станции, то фактически двумя.
При чём тут рабочая/нерабочая? Ключ "/3GB" действует не только в серверных OS, вроде.

ЗЫ: Насчёт отдельного процесса не знаю, но 32разрядные Win сервер поддерживают и 16Гб и даже больше.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 15 ноя 2007, 15:44

WildSery писал(а):Тремя ;)
И давно Дельфи научился компилять программы с поддержкой 3ГМ? Даже с MSVC для этого необходимы страшные пляски с бубном, НЯЗ. Плюс пинки системы в область boot.ini.

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 16 ноя 2007, 07:27

2Axline Я бы не парился с CDS. Для таких объёмов и задачь там оверхед просто страшенный.
Засосать всё в массивы структур - и работать с ними ручками.
Даже в 32м влезет без напрягов. :-)

Axline
Сообщения: 5
Зарегистрирован: 07 дек 2004, 14:47

Сообщение Axline » 16 ноя 2007, 11:30

2Tonal Спасибо за совет. Буду пробовать.

Ответить