Interbase, как закачать всю базу в память
Interbase, как закачать всю базу в память
Использую interbase 5.5 или Intebase 6.0. Компонент TIBQuery.
Запрос типа select * from Database
Открываю базу. Активной становится первая запись.
Выполняю команду Database.Last.
Результат: переход к последней записи не всегда происходит, иногда (непонятно почему) зависает. Вопрос: почему?
Как можно по другому загрузить всю базу в память?
Запрос типа select * from Database
Открываю базу. Активной становится первая запись.
Выполняю команду Database.Last.
Результат: переход к последней записи не всегда происходит, иногда (непонятно почему) зависает. Вопрос: почему?
Как можно по другому загрузить всю базу в память?
устал я уже комментировать 5.5...interbase 5.5
http://www.sql.ru/forum/actualthread.as ... =1#2822824
а это вообще. 6 лет этому серверу. ШЕСТЬ ЛЕТ. Нельзя на таком старье работать.или Intebase 6.0.
судя по всему, никакого зависания нет. Просто в это время с сервера тащатся данные, а клиент пытается их "пережевать".Результат: переход к последней записи не всегда происходит, иногда (непонятно почему) зависает. Вопрос: почему?
Ты посмотри на объем памяти, занимаемый твоим приложением. У тебя с определенного момента небось все в своп уходит, отсюда и зависание.
а это надо?Как можно по другому загрузить всю базу в память?
Размер памяти диспетчер задач показывает:
1. Когда выполняется команда last, то размер (по ходу выполнения команды) возрастает и в конечном итоге при переходе к последней записи размер становится около 150 Мб.
2. А когда значит зависает, то происходит следующее:
размер памяти доходит (например) до 70 Мб, потом становится 60 Мб, потом 70 и т.д.
Всю базу я хочу загрузить в память для того, чтобы можно было быстро найти необходимую запись (поиск идет по трем полям командой Locate).
Если я буду использовать server Interbase 7, поможет?
1. Когда выполняется команда last, то размер (по ходу выполнения команды) возрастает и в конечном итоге при переходе к последней записи размер становится около 150 Мб.
2. А когда значит зависает, то происходит следующее:
размер памяти доходит (например) до 70 Мб, потом становится 60 Мб, потом 70 и т.д.
Всю базу я хочу загрузить в память для того, чтобы можно было быстро найти необходимую запись (поиск идет по трем полям командой Locate).
Если я буду использовать server Interbase 7, поможет?
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
тебе с таким подходом, взятым из фокса или чего-ниьбудь вроде, и на Оракле не поможет. В клиент-сервере обычно принято ограничивать выборку, считываемую на клиента. На то он и сервер, чтобы не копировать все данные для клиента. Конечно, случаи, когда всю таблицу надо закачать локально бывают, но в этом случае разработчик четко должен понимать, зачем он это делает и к чему это приведет.Если я буду использовать server Interbase 7, поможет?
Например. Если у тебя полный набор после скачивания на клиенте в памяти занимает 150 мегабайт, значит ты должен ориентироваться на компы с 512мб RAM, минимум. И сервер тут ни при чем, абсолютно.
Зависание же на уровне 60-70 мегабайт может зависеть от двух факторов:
1. операционная система
2. клиентские компоненты (IBX, FIBPlus, BDE...), используемые в приложении.
Судя по вопросу, у тебя IBX, значит тебе надо поставить его самую последнюю версию.
Почитай статьи
http://www.interbase-world.com/ru/artic ... _id=207737
http://www.ibase.ru/devinfo/clientrefresh.htm
и еще скачай
www.ibase.ru/download/gbdatasets.zip
прочитай readme.rus. Однако, gbdatasets тебе можно будет использовать только когда ты прочитаешь первые две упомянутые статьи.