![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 31.08.2010
Сообщений: 11
|
![]()
Я работал с MySQL с помощью компонентов Zeos.
Все было нормально на 20000 записей(работал быстро). В поле Body (Type Long Text) я записывал не большую информация 5-6 строчек. Через MySQL WorkBench все индексы я проставил. Я закачал еще 10000 записей. Причем в поле Body не 5-6 строчек, а информацию из Word документов размером около 30 листов. После этого таблица по началу стала открываться очень медлено (до 20 сек.), а потом и вовсе стала подвисать. Появилось сообщение, что не хватает виртуальной памяти. Выходит Zeos плохо переваривает записи, в которых записаны большие текстовые документы. Подскажите какой компонент лучше всего использовать в этой ситуации. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
![]()
Тут дело, похоже, не в Zeos-е. Не нужно сразу в таблицу грузить все поля memo, blob и т.п. Делай, как сайты в интернете делают. Т.е. загружаем только заголовки, id-номер и прочее. А уже потом вытаскиваем blob-данные только для текущей записи.
А так, 30 листов текста умножить на 30000 записей - никакая система не выдержит. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 31.08.2010
Сообщений: 11
|
![]()
Так я так и делаю. Делаю запрос с перечислением полей
в котором нет поля куда записывается большой текст (Select Field1, Field2 ...). В компоненте ClientDataSet в свойство FieldDefs прописываю эти же поля. Свойство IndexDefs у меня пустое. Т.е. и в запросе и в компонентах поле с большим текстом никак не фигурирует. Однако когда в базе появляется много таких документов программа начинает сильно тормозить. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Вы не поняли. _SERGEYX_ предлагает Вам не хранить эти большие данные в самой БД. Храните их в виде файлов. А в базе храните имя и путь. При необходимости - вытаскиваете содержимое файла, а не блоб-поля...
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
![]()
Serge_Bliznykov, неа, я думал хранить данные как раз в БД. Странно, сейчас посмотрел... у меня в самой большой таблице 23 тысячи записей (полей штук 30, строковых и числовых, blob-полей нет). Таблица полностью открывается максимум пол секунды даже по локальной сети (100 Mbit). Использую MyDAC.
А зачем ClientDataSet? Там, вроде, есть компонент ZeosQuery (не помню точное название). И если в нем написать select <name> from <table> долго работает на 30000 записей? |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 31.08.2010
Сообщений: 11
|
![]()
Компонент ClientDataSet нужен для сортировки.
Хотя на 30000 записях открывается долго, но сортируется очень быстро. Программно создается индекс. Через компонент Provider ClientDataSet связывается с ZeosQuery. Если использовать только ZeosQuery, то он открывается примерно столько же сколько и ClientDataSet. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
![]()
Все правильно, ClientDataSet сортирует данные в памяти на клиенте и очень быстро, спору нет. Но готова ли принять память клиента такую прорву данных? Вот в чем вопрос. Старая как мир дилема. Либо сортировать быстро, но ограниченное количество данных на клиенте, либо отдать сортировку серверу и получать уже отсортированные данные.
В некоторых случаях, если, конечно, позволяет бизнез-логика проекта и при необходимости предоставить пользователю быструю сортировку, классифицирую данные по разделам и с сервера запрашиваются только данные того раздела, который требуется в данный момент. И волки сыты и овцы целы. Но это уже как карта ляжет. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужен компонент для чата | Wicing | Компоненты Delphi | 3 | 24.03.2008 23:33 |
Нужен компонент для чата | K@$K@ | Компоненты Delphi | 2 | 09.01.2008 15:23 |
Нужен компонент для работы с шрифтом и с БД | Gauss | Компоненты Delphi | 1 | 07.01.2008 13:41 |
Компонент для работы с GIF | Slash | Компоненты Delphi | 5 | 03.05.2007 11:14 |