powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема...если есть варианты, прошу помочь.
12 сообщений из 12, страница 1 из 1
Проблема...если есть варианты, прошу помочь.
    #32257988
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые коллеги.
Возникла проблема.
Краткая предыистория:
Написан проект для местного АО Медстрах - обработка счетов с лечебных учреждений, ведение договоров с предприятиями на оказывание медицинских услуг, ведение рестра застрахованных лиц и прочее - в принципе все бы ничего - это лучший проект из всех которые я делал, самому нравится, все на основе классов, своя библиотека контролов, контроль целостности и структуры базы данных, защита от сбоев, восстановление предыдущего сеанса работы и прочие навороты.....
Проблема в следующем: Изначально выбрал вариант файл-серверной технологии, т.е. когда база данных хранится на сервере в виде свободных таблиц (так как требовался доступ из другого приложения на vfp) и отладка происходила на реестре из 5000 застрахованных лиц - соотвественно все в сети - никаких тормозов не возникало....Но вот когда загрузили полную базу - а это 170000 - возникли страшные тормоза, к примеру очень долгий refresh грида, невозможно долгая установка фильтра - сложность еще в том, что на данную таблицу (170000 записей) еще наложены пара реляций....Никогда бы не подумал, что VFP так будет тормозить....Я конечно понимаю, что ошибка тут полностью моя - надо было предусмотреть выборку таких объемов с выделенного SQL сервера и причем определенными порциями, т.е. не весь объем, а только часть по какому-то условию, задаваемому конечным пользователем - но как говорится, время уже не терпит переделки.

Вот собственно и вся беда, хоть сворачивай проект. Если есть какие-то способы ускорить обработку таких массивов данных в сети, прошу помочь советом.

С уважением
DuШes
ICQ 137709691
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258017
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут проблема в идеалогии.
Выборку действительно нужно производить небольшими порциями. Для этого в фоксе используется механизм Local View. А все эти досовские приемы с реляциями лучше использовать только там , где они реально удобнее...
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258025
karly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, реально твоя ошибка состоит в том, что ты не проверил
работоспособность системы на данных, хотя бы вдвое
превышающих прогнозируемый рабочий объем :)
Не обязательно наполнять тестовую базу реальной информацией -
напиши простенький генератор мусора на основе функции Rand().

170 тыс. записей для фокса - семечки Как ни странно это прозвучит,
но старый досовский подход через Set Relation или даже Browse всей таблицы -
раз в 10 быстрее новомодного Select. Другое дело, что если в дальнейшем
планируется переход на KS, то логику работы приложения менять не придется.

А вот Set filter действительно тормозит. Особенно это заметно, если Set order
установлено по одному условию, а Set Filter - по другому. Если тебе удасться
переделать логику приложения так, что вместо наложения фильтра будет
осуществляться навигация на нужную запись ( посредством Seek() ), то все
должно летать. Да, кстати, а индекс по условию фильтрации у тебя заведен?

Проведи пару экспериментов - открой по сети большую таблицу через Browse.
Наложи фильтр, установи порядок сортировки, присоедини пару таблиц
через set relation... Полученный опыт поможет правильнее спроектировать
работу с данными.

Ну и напоследок. А сеть у клиента какая? Если 10Mbit, поменяй на 100.
Кроме того, замечено изрядное торможение, если данные разместить
на сервере Novell. Если это твой случай, то попробуй перенести данные
на сервер MS, либо установи патчи к виндам для работы с сетью Novell.
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258035
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер Win2000, два винта по 40 Гб, памяти правда маловато - 256метров....
Тут на первре время посказали один вариант: использовать возможности терминального доступа, т.е типа удаленной консоли к серверу - в данном случае для каждого клиента будет загружена своя сессия на сервере, по сути работать будет только сервер MS 2000 и передавать картинки клиенту. Это криво, не спорю......

По поводу локальных представлений - можно поподробнее? И даст ли это реальный результат, или выигрыш по скорости обработки данных - мне кажется что хоть представление, которое вернет 170000 записей, что сама талица - оно же все равно будет загружено в адресное пространство клиента - будет ли резон создавать представление?

По поводу установки фильтра и индексов: Учту.

Спасибо за советы.
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258036
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уверен, что если хорошо поковыряться в ваших фильтрах, индексах и .... можно реально увеличить скорость ...
Например, фильтры легко заменить на SET KEY TO RANGE ...
А если все-таки фильтр, то выражение индекса должно быть соответсвующим...
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258067
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык представление это же не вся таблица а только SQL запрос по ключу...
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258114
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По локальным представлениям: скажем, есть таблица table1 в базе данных (как раз та что содержит 170000 записей и на которую анложены несколько реляций), вместо нее создаю представление localview1, которое будет использовать данную таблицу table1 и возращать какой-то резулттат согласно каким-то переданным параметрам, например, фильтр по организации .... Но скажите мне, ведь таблица table1 и локальное представление будет обрабатываться на стороне клиента, т.е. вся вычислительная работа будет осуществляться на клиенте - тогда в чем же смысл использовать localview1 вместо наложения того же самого условия фильтра, которое использовалось бы в selecte, конкретно на саму таблицу table1?
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258119
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу SET KEY to RANGE..... хотелось бы узнать поподробнее////
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258137
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда в чем же смысл использовать localview1 вместо наложения того же самого условия фильтра
Это стандартный подход. В дальнейшем позволит упростить переход на клиент-сервер.Часть сложный вычислений можно вообще перебросить на среднее звено...Впрочем можно сразу задействовать MSDE, это избавит от кучи работы по поддержке целостности.
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258241
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Local View имеет смысл делать только если в результате получится выборка существенно меньше по объему, чем исходные таблицы. Если в результате в Local View закачивается все 200тыс записей исходной таблицы, то это не имеет смысла.

Однако поскольку у тебя наложен фильтр на таблицу, то вероятно отображаемое количество записей существенно меньше.

Выигрыш в этом случае происходит за счет использования Rushmore-оптимизации. Как это все "тикает" долго объяснять. Оптимизация основана на использовании индексов: Есть индексы - оптимизация возможна. Но это не всегда дает выигрыш в скорости.

Тут фокус в том, что при полной оптимизации на стороне клиента будут обрабатываться не сама исходная таблица и даже не индексный файл, а только фрагменты индексного файла (теги) и по результату обработки клиенту затянутся только нужные записи.

Собственно выигрыш в быстродействии о определяется разницей объема (в байтах) индексных тегов и исходной таблицы.
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32258397
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо за помощь.....
С уважением
...
Рейтинг: 0 / 0
Проблема...если есть варианты, прошу помочь.
    #32259164
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще пять копеек - Винда в качестве Файл-сервера не самое оптимальное решение - она значительно медление специалиизированых серверных операционок. А 170 тысячь запесей действительно немного. Имея старый Новеловский сервер и достаточно медленую сеть никаких проблем с полумилионом записей не испытываю... Правда действительно - фильтры стараюсь не применять
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема...если есть варианты, прошу помочь.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]