Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Query сжирает всю память

2.1K
29 августа 2004 года
sasik
15 / / 21.01.2003
есть IBQuery с запросом select * from table;
table состоит из ID integer
NAME1 varchar(4096)
NAME2 varchar(2048)
в ней 10 записей.
После открытия Query Диспетчер задачь регистрирует выделение общей памяти объемом 6 метров. После закрытия Query - эти 6 метров освобождаются. В "процессах" процесс с Query сжирает всего несколько килобайт. Может ли Query сжирать столько памяти, и как этого избежать? В программе используется с десяток таких запросов, поэтому каждому п 6 метров- просто неприемлимо.
Конфигурация:
Delphi 5, SP1, SP2, IBX5.04
TIBQuery
10
29 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by sasik
В программе используется с десяток таких запросов, поэтому каждому п 6 метров- просто неприемлимо.


Ответ прост: ни один уважающий себя программист не будет давать запросы вида "select * from table" без WHERE. Это сродни программированию на Clipper'е, а потому - моветон.

2.1K
30 августа 2004 года
sasik
15 / / 21.01.2003
Цитата:
Originally posted by smartsoft

Ответ прост: ни один уважающий себя программист не будет давать запросы вида "select * from table" без WHERE. Это сродни программированию на Clipper'е, а потому - моветон.



Ой! Точно! Как я не догадался! Конечно!
Надо поставить всемогущий WHERE и у меня все заработает!! И ошибки исчезнут, и заказчики деньги сразу заплатят.
А если серьезно - то я привел шаблонный текст запроса (это означает, что текст запроса - просто пример ;) ).
Вопрос был совершенно другой. Прочти внимательнее.

10
30 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by sasik
Вопрос был совершенно другой. Прочти внимательнее.


Согласен, 6 метров для десяти записей - это слишком. Тут уже надо думать.

Вопрос первый - последняя версия IB(X) стоит? Я не помню номер версии, которая поставлялась с Дельфи, но она работала просто страшно.

Потом, создается впечатление, что память отводится либо под строки, которых нет, либо под кэш? Проверь настройки IBSession (или как оно там называется).

И, наконец, если данные не должны отображаться в гриде, а обрабатываются по одной записи или в пакетном режиме, можно попробовать выставить параметр UniDirectional.

Блин, как давно это было...

Кстати, не помню где, но был косяк с Lookup-полями. Они не только жрали память, но и тормозили безбожно.

2.1K
30 августа 2004 года
sasik
15 / / 21.01.2003
Цитата:
Вопрос первый - последняя версия IB(X) стоит? Я не помню номер версии, которая поставлялась с Дельфи, но она работала просто страшно.


Delphi 5 SP1, SP2 IBX 5.04 - все последнее

Цитата:
Потом, создается впечатление, что память отводится либо под строки, которых нет, либо под кэш? Проверь настройки IBSession (или как оно там называется).


Использую строковые calculated поля типа IBString.
В них хранятся дешифрованные значения оригинальных полей. IBSession не использую.

Цитата:
И, наконец, если данные не должны отображаться в гриде, а обрабатываются по одной записи или в пакетном режиме, можно попробовать выставить параметр UniDirectional.


Это мысль :)

Цитата:

Кстати, не помню где, но был косяк с Lookup-полями. Они не только жрали память, но и тормозили безбожно.


Этого тоже нету :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог