Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как быстро открыть БД из 130000 зап с небольшой потерей памяти [D7, Access]


Страницы:   1 2

Yerbol ©   (2005-02-04 14:01:00) 

Я открываю базу данных Access через ADO и отображаю их в DBGrid.
База моя большая быстро не открывается да и памяти жрет моного на простых компах не работает :). Задача моя такая открыть базу все целиком а по кусочкам их не устраивает :(
Подскажите как можно открыть эту базу без больших потерь памяти и чтоб как можно быстрее (а то у меня она открывается более 1 минут :(
Или есть какой нить компанент типа True DBGrid Pro 6.0 в Visual Basic 6


Виталий Панасенко   (2005-02-04 17:39:00) [1]

Johnmen ©   (04.02.05 17:18) [28]
вряд ли ... я в коде делаю
Tbl.Close;
Tbl.Open;
в обработчике кнопки Открыть... т.е. НД закрывается...
Блин.. надо с 1000000 записей загнать...:-) чем сейчас и займусь... :-)..


sniknik   (2005-02-04 17:26:00) [2]

> Там еще и TableDirect значение имеет... Вообще-то странно, что sniknik не откликнулся - это ж его стихия.. :-)
имеет, посмотри хелп по seek от adodataset в дельфях (там оптимальные параметры для аксесс серверного курсора приводятся(в примечаниях, как и пояснение что кроме jet-а нет аналогов), как раз такие что jet будет напрямую с базой работать локально, не перегоняя данные через ядро фактически эмулируя сервер)
но для клиент серверных технологий это увы не пройдет... исключительно на локали так можно.

работать тоже надо иногда... ;о))


Johnmen   (2005-02-04 17:18:00) [3]

>при первом открытии пауза,

Вот тут всё и закачалось на клиента. А дальше просто работа с этими локальными данными...


Виталий Панасенко   (2005-02-04 17:15:00) [4]

Положил, проверил.. 100 мБ сетка - при первом открытии пауза, заметная на глаз.. потом - нет различия, что на локали, что на сети.. одинаково.. на глаз, по крайней мере не видно..:-)


Johnmen   (2005-02-04 16:42:00) [5]

>Виталий Панасенко   (04.02.05 16:36) [25]

Аксеса нет у меня. А вручную гоношиться лень...:)
И потом, ты же делал всё в рамках одного комп., локально. А по сети гонять такие НД, как правильно сказали, чистый изврат...


Виталий Панасенко   (2005-02-04 16:36:00) [6]

Johnmen ©   (04.02.05 16:25) [23]
Конечно Access...
памяти - 256 (видео-интегрированное), Celeron 1.7, OS - XP SP2
Неужели все такие ленивые ?:-).. сами попробуйте - увидите ...


Stanislav   (2005-02-04 16:26:00) [7]

А что ты в этой таблице храниш ? Какие данные.
Зачем сразу 130000 ?


Johnmen   (2005-02-04 16:25:00) [8]

>Виталий Панасенко   (04.02.05 16:15) [19]
>Создал БД

Аксесную ?


Danilka   (2005-02-04 16:24:00) [9]

[21] Виталий Панасенко   (04.02.05 16:20)
Ну, тогда, либо у тебя комп/памяти побольше чем у автора, либо у него полей не один десяток. :))
По-идее, отжираемая память после ухода в конец грида должна быть такая-же как и при клиентском курсоре..
Или есть варианты?


Виталий Панасенко   (2005-02-04 16:20:00) [10]

Ебстебственно !:-) Самое первое, что пробовал..


Danilka   (2005-02-04 16:19:00) [11]

[19] Виталий Панасенко   (04.02.05 16:15)
В конец грида уходил? :))


Виталий Панасенко   (2005-02-04 16:15:00) [12]

Знаете, не поленился.. Создал БД с одной таблицей 128000 записей.. Открываю ADODataSetом (select * from T1)  -  доли секунды..
таблица T1
F1 -  счетчик
F2 - строка 50
F3 - строка 50
F4 - длинное целое..
У dataSetа курсор на сервере... все работает "мухой".. перемещение и тд ..:-)


Danilka   (2005-02-04 15:53:00) [13]

[17] Johnmen ©   (04.02.05 15:36)
Не, автору грид как-раз нужен, поэтому однонаправленый не катит. :)
Просто, незнаю как в аццессе, но возможно если поставить серверный курсор, то он не все сразу в кэш затолкает, а только то, что в гриде, и пихать в кэш будет по-мере листания, то-есть на первоначальное открытие удет меньше чем в случае с клиентским курсором - 1 минута.
Хотя, все равно, на мой взгляд, вываливать запрос на сотни тысяч записей в грид - извращение. :)

Наверняка, можно сделать какую-нибудь первоначальную группировку, например слева в лист-бокс вывливать клиентов, улицы, еще что, а в самом запросе вываливающем все в грид, фильтровать по выбранному значению.
если это документы, то еще проще, две даты задающие период и по-умолчанию период день или месяц хотя-бы.


Johnmen   (2005-02-04 15:36:00) [14]

>Danilka ©   (04.02.05 15:29) [14]
>Виталий Панасенко   (04.02.05 15:29) [15]

Конечно, память будет забита. Но можно однонаправленный датасет. Тогда кеш всего на 1 запись, но никакой двусторонней навигации, никаких дбгридов...:)
А второй вопрос - скорость. Скачать 130000 - это время.Не зависимо от направленности...


Sergey13   (2005-02-04 15:34:00) [15]

2[13] msguns ©   (04.02.05 15:27)
>А психика ? Ты ж, Сергунь, у нас впечатлительный
Это где написано? 8-)

>Представляешь, выходишь из-за угла, помахивая двухверстовым узи, а на тебя монстер прыгает с небоскреб, а ?
Так я ж на вертолете. 8-)


Виталий Панасенко   (2005-02-04 15:29:00) [16]

Johnmen ©   (04.02.05 15:22) [11]
Там еще и TableDirect значение имеет... Вообще-то странно, что sniknik не откликнулся - это ж его стихия.. :-)


Danilka   (2005-02-04 15:29:00) [17]

[11] Johnmen ©   (04.02.05 15:22)
Ну, вобщем-то да, но все-таки одно дело вытащить в кэш 20 записей из таблицы, а другое 130к.
Хотя, конечно, когда долистают до конца то память будет забита точно также.


msguns   (2005-02-04 15:27:00) [18]

>Sergey13 ©   (04.02.05 15:19) [10]
>Тебе узера жалко, а мне монитор. Наверное я не прав. Но монитор уж очень пондравился - километр диагональ. Вот бы на таком в HL2. 8-)

А психика ? Ты ж, Сергунь, у нас впечатлительный. Представляешь, выходишь из-за угла, помахивая двухверстовым узи, а на тебя монстер прыгает с небоскреб, а ? Лучше бегай на свом 17-ти дубовом..


Danilka   (2005-02-04 15:26:00) [19]

[9] Виталий Панасенко   (04.02.05 15:17)
Это Аццесс, какой там сервер, думаю, не поможет. :)
Хотя, кто его знает, Yerbol, если хочешь продолжать пляски с извращениями попробуй измени у ADOConnection свойство CursorLocation.


Johnmen   (2005-02-04 15:22:00) [20]

Виталий Панасенко   (04.02.05 15:17) [9]

На каком сервере ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо