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

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

Выбор сервера БД? BDE -> ??? Помогите разобраться [D5, Paradox]


Страницы:   1 2

Armada ©   (2004-10-25 21:54:00) 

Тема похожа на уже обсуждавшуюся, но ...
Есть база данных. Paradox (BDE). Лежит на сети.
Все сетевые машины тормозят очень сильно!
Помогите разобраться. Приложение это набор справочников (9шт)
База (master) + 14 detail баз.
Сама master база копеечная, всего 1600 записей!!!
В detail базах по 3-10 записей привязаны к Master. Тоже мелочь.

Тормоза проявляются уже при простом переходе с записи на запись в главной базе. Что можно сделать, чтоб убрать такие тормоза?
Модернизацию железа не предлагать :)

Сервер Celeron 633 64Mb все остальные это зоопарк от 166 mmx до 1000Celeron.


Anatoly Podgoretsky   (2004-10-27 11:42:00) [21]

А у него не в этом проблема, а в том, что у него при каждом перемешении по сетке, выполняются 14 таких запросов.
Вот с чем надо бороться, при установке SQL сервера будет еще медленнее.


ЮЮ   (2004-10-27 11:38:00) [22]

>Anatoly Podgoretsky ©   (27.10.04 11:20) [14]

Серьезно? Т.е. select * from baseN where n=:n перекачает всю baseN, а затем быстрее найдет одну запись?


Anatoly Podgoretsky   (2004-10-27 11:20:00) [23]

Перекачиваются, поэтому запросы работают заметно быстрее, чем навигационные методы.


Плохиш   (2004-10-27 11:15:00) [24]

А что в Paradox-е разве не перекачиваются все необходимые данный на локальную машину, а уже потом обрабатываются запросы?


Erik1   (2004-10-27 11:10:00) [25]

Да ладно вам 1600 записей это ерунда, вобщем поставь IB(FireBind) и немучайся. Только компоненты доступа лучше поменять, хотя для твоего случая можно и BDE оставить. Попробуй, делов то на 1 час.


ЮЮ   (2004-10-27 02:40:00) [26]

>Все остальные базы (14) открываются как
select * from baseN where n=:n

Открыты все сразу, независимо от того отображаются на экране или нет? Во всех поле n проиндексировано?
Ведь при "простой навигации", как минимум, выполняютя 14 этих самых запросов select * from baseN where n=:n.


sniknik   (2004-10-27 00:34:00) [27]

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

> Здесь логика есть? Откуда в такой связке тормоза при простой навигации?
зависит не только от запросов а еще и то откуда и как они выполняются. в общем то я могу предположить в каком случае при таких запросах будет тормозить но не буду.
наводяший вопрос
> select n, fio, ..... from base
выбираются все записи, они все нужны? поиши ответ в книжках.


armada   (2004-10-26 23:14:00) [28]

>select * from table
>чтение в переменную
>count:= query.recordcount;
>так вот если у тебя есть чтото хоть отдаленно похожее, все, >крест на логике.

Хорошо, база открывается
select n, fio, ..... from base
Все остальные базы (14) открываются как
select * from baseN where n=:n
Здесь логика есть? Откуда в такой связке тормоза при простой навигации? (Клики по DbNavigator). Увеличится ли скорость работы при переходе на FireBird?


sniknik   (2004-10-26 22:17:00) [29]

> Кстати в нем поддерживаются подзапросы типа ...
и подзапросы и многое другое.

> Что ты имеешь в виду под логикой?
логика это логика, то как у тебя все организовано.
если ты к примеру в клиент серверной используеш таблицы, то считай ее у тебя нет, однозначно. но даже если используеш только запросы это не значит что она у тебя появилась ;о).
встречал к примеру такое
после запроса
select * from table
чтение в переменную
count:= query.recordcount;
это как понимаш, узнают количество записей в таблице. и больше результат запроса нигде (!!!) не используется, количество единственная цель, и автор уверено так говорил "все правильно я же запросы использую!". (а чего же она тормозит?) ;о)
так вот если у тебя есть чтото хоть отдаленно похожее, все, крест на логике.
и даже если явных ляпов не сделаеш, а некоторые запросы если логичноподумать, можно в несколько раз быстрее переписать... если можно то все тоже не вполне логично.
а вот когда это уже становится невозможным (оптимизация в несколько раз, а можно только на пять/десять в особых случаях двадцать процентов, да и то если поднапрячся), вот тогда можно говорить, у тебя в программе появилась логика. ;о)

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

строго говоря какаялибо из двух в программе наверняка присутствует, важно чтобы она была к месту.


armada   (2004-10-26 21:21:00) [30]

To sniknik
Присмотрел FireBird. Кстати в нем поддерживаются подзапросы типа
select n from base where n in (select n ...)?
> (при оставлении логики наоборот добавляются ;о))
Что ты имеешь в виду под логикой? Тут при простой навигация тормозит. А запуск отчета по всей базе это ... :(


armada   (2004-10-26 21:07:00) [31]

To Submarine
>Проблема может быть самая разнообразная:
>1. Неправильно построины запросы
>2. Настрой общий Net dir, например T:\PDXNETDR
>где t- сетевой диск
Факи, и маны по BDE изучены хорошо. NetDir общий.

To Sergey13
> Может что то выполняется в этот момент?
Нет, не выполняется. Лукапы где можно там используются, а как через lookup задать несколько подчиненных записей ?

To sniknik


Sergey13   (2004-10-26 09:23:00) [32]

2Armada   (25.10.04 21:54)
>Тормоза проявляются уже при простом переходе с записи на запись в главной базе.
Может что то выполняется в этот момент?
Для такой структуры SQL запросы, ИМХО, будут только тормозов добавлять. Тут, по моему, целесообразнее делать лукап поля.


Anatoly Podgoretsky   (2004-10-26 09:18:00) [33]

sniknik ©   (26.10.04 08:30) [2]
Наоборот стандартная


ЮЮ   (2004-10-26 08:50:00) [34]

> База(master) + 14 detail баз.

И как размещаются эти пятнадцать гридов на экране? Всё сразу видно? А если нет, то избавься от лишних накладных расходов по установлению master-detail связей для невидимых пользоваиелю таблиц


sniknik   (2004-10-26 08:30:00) [35]

14 связанных таблиц в запросе, далеко не мелочь. при обьеденении строится декартово произведение таблиц (всех со всеми) после по условию отсекаются лишнии. (так оно работает)
т.ю. получатся 1600 зап. * 10 зап = 16000 зап (одно обьеденение), 160000 (следующее со 10 записями), и т.д.
но это только тормоза на открытии запроса должны быть.
а на переходе по записям, больше похоже на слет/отсутствие индексов, либо действительно логика работы "нестандартная" (через задницу ;о)).

> Что можно сделать, чтоб убрать такие тормоза?
можно поменять парадокс на sql сервер (любой) и логику работы с файл серверной на клиент серверную, тормоза убираются с гарантией. (при оставлении логики наоборот добавляются ;о))


Submarine   (2004-10-26 07:10:00) [36]

Проблема может быть самая разнообразная:
1. Неправильно построины запросы
2. Настрой общий Net dir, например T:\PDXNETDR
где t- сетевой диск.


Страницы:   1 2

Наверх

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