![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимальное использование базы данных [IB6.x]
Ru © (2003-08-26 12:42:00)
Как будет лучше (оптимальнее): подключаться к базе при необходимости или при запуске программы подключится к базе, а отсоединиться при выходе из приложения?
Zacho (2003-08-26 14:08:00) [1]
> Ru © (26.08.03 14:03) [21]
> InterBase вроде позволяет множеству пользователей работать
> с базой так как им хочется (не позволяя выполнять одновременно
> более одной транзакции).
Не правильно. Одновременно может быть запущено сколько угодно транзакций, в том числе в контексте одного подключения. Другое дело, что все запросы в контексте одного подключения будут выполняться последовательно (и не важно, в одной транзакции или нет).
Ru (2003-08-26 14:03:00) [2]
>Anatoly Podgoretsky © (26.08.03 13:55) [19]
Для однопользовательской базы моего размера это не так важно. InterBase вроде позволяет множеству пользователей работать с базой так как им хочется (не позволяя выполнять одновременно более одной транзакции).
У меня по примеру:
можно записать Button56.Caption:=...
а можно и btnExecProcMyProc.Caption:=...
Принципиальной разницы нет, но считается, что второй вариант "лучше".
VAleksey (2003-08-26 14:00:00) [3]
> MsGuns © (26.08.03 13:35)
При всем уважении небольшая критика с комментариями.
1) ???? После редактирования сбросьте буфер dbiSaveChanges.
2) Если при запросе мы получим исключение по индексу, то вполне вероятно налетим на то, что индексы вообще рухнут.
3) См. пункт 1.
4) Абсолютно согласен.
5) Если редактировать ч/з TTable, то необязательно, а вот в случае с Query, то ОБЯЗАТЕЛЬНО.
6) Немного не понял, но интуитивно согласен :-) ;-).
7) см. Пункт 4.
Anatoly Podgoretsky (2003-08-26 13:55:00) [4]
Оптимизация возможна только по одному парметру/критерию, ты его не привел
Если оптимизируешь скорость, то тратишь реусры и наоборот.
В многопользовательской среде - золотое правило не держать ресурсы дольше, чем это необходимо, но это в ущерб скорости.
MsGuns (2003-08-26 13:49:00) [5]
>ZrenBy © (26.08.03 13:39) [17]
Ну это уже вааааащееее ;))))
ZrenBy (2003-08-26 13:39:00) [6]
>>MsGuns © (26.08.03 13:35) [15]
8. Реализовать протоколирование действий с БД и
дозапись протокола во вчерашний бэкап
Ru (2003-08-26 13:37:00) [7]
Всем спасибо. Отбой.
MsGuns (2003-08-26 13:35:00) [8]
Если Парадокс и через BDE, то "средство от лома" такое.
1. Не давать редактить в DB-Aware компонентах.
2. Все коррекции в таблицах выполнять запросами (TQuery)
3. Не редактить через TTable
4. Не вшивать бизнес-логику (в частности ограничения целостности) через DeskTop, а реализовывать ее программно алгоритмикой проверок
5. Перед вставкой записей проверять наличие ключей
6. Не менять первичные ключи - только вставки или удаление
7. Перед открытием первой таблицы делать проверку корректности всей БД и в случае поломки "поднимать" ее из архива. (Для сети несколько посложнее тактика, но стратегия та же)
Sandman25 (2003-08-26 13:23:00) [9]
Zacho © (26.08.03 13:16)
Согласен. Только все равно IBQuery обычно больше подходит, чем IBTable, именно это я и имел ввиду :)
Ru (2003-08-26 13:22:00) [10]
IBX которая в D6.
Приконектился с помощью IBDataBase, подключаюсь IBDataSet.
Так что это не имеет значения, то есть до верхней части ноги все?
Zacho (2003-08-26 13:16:00) [11]
> Ru © (26.08.03 13:03) [9]
При запуске программы - подключиться к БД. Отключится - само, при завершении :)
А термина "открыть" таблицу (не базу, а именно таблицу) здесь просто нет. Можно открыть какой-либо датасет в приложении. Возможно, именно это тебя интересует ?
> Sandman25 (26.08.03 13:06) [10]
А еще лучше - не пользоваться BDE вообще.
VAleksey (2003-08-26 13:08:00) [12]
> Ru © (26.08.03 12:55)
Какая потеря ??
Делай соммит почаще.
Sandman25 (2003-08-26 13:06:00) [13]
Ru
C Interbase обычно лучше использовать TQuery, а не TTable.
Заканчивайте с Парадоксовским мышлением :)
Ru (2003-08-26 13:03:00) [14]
>Zacho © (26.08.03 12:59) [8]
У меня еще Парадоксовое мышление, так что могу путать.
Как правильнее, лучше, удобнее (мне как программисту удобнее открыть раз и не трогать больше и плевать на мнение юзеров) работать с базами Interbase?
Zacho (2003-08-26 12:59:00) [15]
> Ru © (26.08.03 12:55) [7]
Какая потеря ? В случае отвала клиентского приложения просто откатятся все неподтвержденные транзакции. И не путаешь ли ты базы с таблицами ?
Ru (2003-08-26 12:55:00) [16]
>Zacho © (26.08.03 12:52) [5]
мне та побарабану, когда открывать. А вот глюканет программа, произойдет потеря и скажут мне: "Базы надо было открывать только когда их используешь" - чем это опровергнуть?
VAleksey (2003-08-26 12:55:00) [17]
> Ru © (26.08.03 12:51)
В контексте вопроса данное замечание значения не имеет.
Zacho (2003-08-26 12:52:00) [18]
> Ru © (26.08.03 12:51) [3]
В каком смысле "лучше" ? А "для увеличения сохранности базы" - разницы никакой.
VAleksey (2003-08-26 12:51:00) [19]
Открыть только те таблицы, которые будут нужны от 60 до 100%. Остальные по необходимости.
PS
> Anatoly Podgoretsky ©
:-)))
Ru (2003-08-26 12:51:00) [20]
>Anatoly Podgoretsky © (26.08.03 12:46) [1]
Меня интересует, что будет лучше для программы и для базы. С одной стороны, для увеличения сохранности базы (в Парадокс), мне советовали: подключайся по необходимости, с другой стороны если юзер м.д.к, то это неизлечимо.