![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбор сервера БД? BDE -> ??? Помогите разобраться [D5, Paradox]
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- сетевой диск.