Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Уважаемые коллеги. Возникла проблема. Краткая предыистория: Написан проект для местного АО Медстрах - обработка счетов с лечебных учреждений, ведение договоров с предприятиями на оказывание медицинских услуг, ведение рестра застрахованных лиц и прочее - в принципе все бы ничего - это лучший проект из всех которые я делал, самому нравится, все на основе классов, своя библиотека контролов, контроль целостности и структуры базы данных, защита от сбоев, восстановление предыдущего сеанса работы и прочие навороты..... Проблема в следующем: Изначально выбрал вариант файл-серверной технологии, т.е. когда база данных хранится на сервере в виде свободных таблиц (так как требовался доступ из другого приложения на vfp) и отладка происходила на реестре из 5000 застрахованных лиц - соотвественно все в сети - никаких тормозов не возникало....Но вот когда загрузили полную базу - а это 170000 - возникли страшные тормоза, к примеру очень долгий refresh грида, невозможно долгая установка фильтра - сложность еще в том, что на данную таблицу (170000 записей) еще наложены пара реляций....Никогда бы не подумал, что VFP так будет тормозить....Я конечно понимаю, что ошибка тут полностью моя - надо было предусмотреть выборку таких объемов с выделенного SQL сервера и причем определенными порциями, т.е. не весь объем, а только часть по какому-то условию, задаваемому конечным пользователем - но как говорится, время уже не терпит переделки. Вот собственно и вся беда, хоть сворачивай проект. Если есть какие-то способы ускорить обработку таких массивов данных в сети, прошу помочь советом. С уважением DuШes ICQ 137709691 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 09:35 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Тут проблема в идеалогии. Выборку действительно нужно производить небольшими порциями. Для этого в фоксе используется механизм Local View. А все эти досовские приемы с реляциями лучше использовать только там , где они реально удобнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 10:10 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Ну, реально твоя ошибка состоит в том, что ты не проверил работоспособность системы на данных, хотя бы вдвое превышающих прогнозируемый рабочий объем :) Не обязательно наполнять тестовую базу реальной информацией - напиши простенький генератор мусора на основе функции Rand(). 170 тыс. записей для фокса - семечки Как ни странно это прозвучит, но старый досовский подход через Set Relation или даже Browse всей таблицы - раз в 10 быстрее новомодного Select. Другое дело, что если в дальнейшем планируется переход на KS, то логику работы приложения менять не придется. А вот Set filter действительно тормозит. Особенно это заметно, если Set order установлено по одному условию, а Set Filter - по другому. Если тебе удасться переделать логику приложения так, что вместо наложения фильтра будет осуществляться навигация на нужную запись ( посредством Seek() ), то все должно летать. Да, кстати, а индекс по условию фильтрации у тебя заведен? Проведи пару экспериментов - открой по сети большую таблицу через Browse. Наложи фильтр, установи порядок сортировки, присоедини пару таблиц через set relation... Полученный опыт поможет правильнее спроектировать работу с данными. Ну и напоследок. А сеть у клиента какая? Если 10Mbit, поменяй на 100. Кроме того, замечено изрядное торможение, если данные разместить на сервере Novell. Если это твой случай, то попробуй перенести данные на сервер MS, либо установи патчи к виндам для работы с сетью Novell. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 10:12 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Сервер Win2000, два винта по 40 Гб, памяти правда маловато - 256метров.... Тут на первре время посказали один вариант: использовать возможности терминального доступа, т.е типа удаленной консоли к серверу - в данном случае для каждого клиента будет загружена своя сессия на сервере, по сути работать будет только сервер MS 2000 и передавать картинки клиенту. Это криво, не спорю...... По поводу локальных представлений - можно поподробнее? И даст ли это реальный результат, или выигрыш по скорости обработки данных - мне кажется что хоть представление, которое вернет 170000 записей, что сама талица - оно же все равно будет загружено в адресное пространство клиента - будет ли резон создавать представление? По поводу установки фильтра и индексов: Учту. Спасибо за советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 10:21 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Уверен, что если хорошо поковыряться в ваших фильтрах, индексах и .... можно реально увеличить скорость ... Например, фильтры легко заменить на SET KEY TO RANGE ... А если все-таки фильтр, то выражение индекса должно быть соответсвующим... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 10:21 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Ну дык представление это же не вся таблица а только SQL запрос по ключу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 10:39 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
По локальным представлениям: скажем, есть таблица table1 в базе данных (как раз та что содержит 170000 записей и на которую анложены несколько реляций), вместо нее создаю представление localview1, которое будет использовать данную таблицу table1 и возращать какой-то резулттат согласно каким-то переданным параметрам, например, фильтр по организации .... Но скажите мне, ведь таблица table1 и локальное представление будет обрабатываться на стороне клиента, т.е. вся вычислительная работа будет осуществляться на клиенте - тогда в чем же смысл использовать localview1 вместо наложения того же самого условия фильтра, которое использовалось бы в selecte, конкретно на саму таблицу table1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 11:04 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
По поводу SET KEY to RANGE..... хотелось бы узнать поподробнее//// ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 11:06 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
тогда в чем же смысл использовать localview1 вместо наложения того же самого условия фильтра Это стандартный подход. В дальнейшем позволит упростить переход на клиент-сервер.Часть сложный вычислений можно вообще перебросить на среднее звено...Впрочем можно сразу задействовать MSDE, это избавит от кучи работы по поддержке целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 11:20 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Local View имеет смысл делать только если в результате получится выборка существенно меньше по объему, чем исходные таблицы. Если в результате в Local View закачивается все 200тыс записей исходной таблицы, то это не имеет смысла. Однако поскольку у тебя наложен фильтр на таблицу, то вероятно отображаемое количество записей существенно меньше. Выигрыш в этом случае происходит за счет использования Rushmore-оптимизации. Как это все "тикает" долго объяснять. Оптимизация основана на использовании индексов: Есть индексы - оптимизация возможна. Но это не всегда дает выигрыш в скорости. Тут фокус в том, что при полной оптимизации на стороне клиента будут обрабатываться не сама исходная таблица и даже не индексный файл, а только фрагменты индексного файла (теги) и по результату обработки клиенту затянутся только нужные записи. Собственно выигрыш в быстродействии о определяется разницей объема (в байтах) индексных тегов и исходной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 12:04 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
всем спасибо за помощь..... С уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 13:18 |
|
||
|
Проблема...если есть варианты, прошу помочь.
|
|||
|---|---|---|---|
|
#18+
Еще пять копеек - Винда в качестве Файл-сервера не самое оптимальное решение - она значительно медление специалиизированых серверных операционок. А 170 тысячь запесей действительно немного. Имея старый Новеловский сервер и достаточно медленую сеть никаких проблем с полумилионом записей не испытываю... Правда действительно - фильтры стараюсь не применять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 20:47 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32258036&tid=1597903]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 359ms |

| 0 / 0 |
