|
|
|
Загрузка таблиц с SQL сервера
|
|||
|---|---|---|---|
|
#18+
Добрый день! Хотел бы немного уточнить метод работы с таблицами, загружаемых с SQL-сервера. При загрузке основной формы где пользователь проводит все манипуляции с таблицами я в Load событии в курсоры загружаю справочники. У меня порядка 10 справочников и соответственно получится 10 возвращаемых курсоров. Затем я загружаю данные из основной таблицы. В случае выгрузки большого объема записей из основных таблиц я включаю асинхронный режим загрузки. Таким образом идет работа. Правильно ли я понял принцип работы? Каким образом асинхронный режим будет влиять на выгрузку данных, если таблицами работают нескольео пользователей? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 12:31 |
|
||
|
Загрузка таблиц с SQL сервера
|
|||
|---|---|---|---|
|
#18+
У меня объекты сами "тянут" необходимые данные с сервера. Хотя есть и исключения, когда я в Loade формы их загружаю. Асинхронный режим практически не использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 14:41 |
|
||
|
Загрузка таблиц с SQL сервера
|
|||
|---|---|---|---|
|
#18+
Режим работы SQLEXEC (асинх. или синхронный, пакетный или нет) никаким образом не влияет на блокировки сервера. Запрос уже выполнен сервером и теперь ODBC драйвер их качает вам из буфера сервера. Как качает и определяет режим (асинх. или синхронный, пакетный или нет) работы команды SQLEXEC. С уважением, Алексей P.S. Я предпочитаю создавать курсоры в LOAD, а вот заполнять их в INIT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 14:53 |
|
||
|
Загрузка таблиц с SQL сервера
|
|||
|---|---|---|---|
|
#18+
Hi nova! Какого рода это манипуляции? Для "массовых" действий лучше использовать серверные процедуры и на клиента вообще ничего не вытягивать, для простой же интерактивной работы необходимо вынимать как можно меньший объём данных - и скажем если в справочнике 100-200 записей то ещё можно терпеть его ПОЛНОЕ выкачивание на клиента, но если там тысячи записей - то это категорически недопустимо. Для "основной" таблицы тем более - она не должна загружаться ЦЕЛИКОМ - должен быть выбран лишь тот минимум записей, с которыми и будет вестись работа (а значит ещё ДО выборки необходимо уточнить у пользователя что жеза записи он хочет видеть). Асинхронный режим вообще очень коварная вещь - начать с того что он заметно тормозит весь процесс загрузки (конечно можно "заняться чем-то другим" - но если форма будет грузится не 1 секунду а 10 то это не есть хорошо), и при этом сам коннект будет блокирован - т.е. по нему больше ничего нельзя выбрать - а чем же тогда заниматься, кроме как в тупом цикле ждать пока же завершится асинхронная операция... Плодить же по коннекту на каждый запрос - это неправильно и админ сервера за это вполне законно даст по шапке :) Из возможной "оптимизации" - это локальное кэширование "неизменяющихся" справочников (ну если вероятность того что за время работы программы кто-то чего-то в справочнике изменит очень мала) - т.е. они забираются только один раз, а потом все формы где это надо берут эти "старые данные" - конечно надо предусмотреть и механизм принудительного обновления такого кэша - вручную, или при помощи системы "временных меток" - т.е. на сервере в триггерах отслеживать дату-время внесения изменений в каждый справочник, и забирать с клиента новые данные лишь в том случае когда локальная "метка" не совпадает с серверной - т.е. когда зафиксированы изменения по сравнению с нашими кэшированными данными. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 01:13 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1592569]: |
0ms |
get settings: |
5ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 457ms |

| 0 / 0 |
