Запрос тормозит на одном из компов
T_Alex_G
Дата: 09.11.2009 12:27:15
Есть простой запрос
SELECT Sum(RLR.NL1) AS Sum_NL1, FD.STATUS
FROM FD INNER JOIN RLR ON (FD.F = RLR.F) AND (FD.V = RLR.V)
WHERE RLR.B=909
GROUP BY FD. STATUS;
в таблице FD - 11 000 записей
ключ составной - F V
в RLR 200 000 записей
ключ F V B
поля F V B - длинное целое
На всех компах (кроме того где надо) запрос выполняется нормально - за несколько секунд
запрос виснет на win server 2003 + сервер терминалов
VMWare opteron 2.6 Ghz 4 Gb
офис 2003 sp2
сервис пак jet установлен
тестировал, когда пользователей на сервере почти не было
запрос выполнялся больше 3-х минут
когда пользователей под завязку - выдает ошибку system resource exceeded
Ясно что проблема с памятью. Пытался настраивать в реестре MaxBufferSize - положительного эффекта добиться не удалось.
Куда копать?
qwrqwr
Дата: 09.11.2009 12:35:23
T_Alex_G |
в RLR 200 000 записей ключ F V B
|
Попробуйте поменять порядок полей в ключе - на
B , F , V
T_Alex_G
Дата: 09.11.2009 13:03:18
автор |
Попробуйте поменять порядок полей в ключе - на B , F , V |
не помогло :(
Вообще то хотелось бы решить проблему настройками (без изменения запроса),
так как программа установлена более чем на сотне компьютеров и везде работает без проблем
(большинство с меньшим количеством записей в таблицах, но несколько с примерно похожими объемами)
к тому же если и удастся решить эту проблему правкой базы или запроса, то нет гарантии что она не появится в другом месте.
T_Alex_G
Дата: 10.11.2009 14:44:45
Если для таблиц составной ключ F V заменить на суррогатный, запрос отрабатывает моментально.
К сожалению поменять ключ в базе в настоящее время не представляется возможным.
Может кто нибудь кинет ссылку где почитать про то как Акцесс выделяет память при выполнении запросов и как это можно оптимизировать.
P.K
Дата: 10.11.2009 16:51:49
А скорость и загруженность сети на этом компе в норме?Может проблема в физическом плане?
T_Alex_G
Дата: 10.11.2009 17:13:12
На сервер захожу через удаленное подключение, так что загруженность сети должна быть не при чем.
mds_world
Дата: 10.11.2009 17:54:58
T_Alex_G,
не может быть, сам комп тормозит? Греется, памяти не хватает, частый свопинг вместо работы с оперативкой и т.д. и т.п.?
develed
Дата: 10.11.2009 18:02:04
Если это mdb, бывает помогает элементарное сжатие. Сегодня, например, парился с запросом, до этого полтора года исправно работавшим, сделал сжатие и все заработало как и было.
T_Alex_G
Дата: 10.11.2009 20:44:18
в рабочее время сервер загружен по самое ...
я тестировал вечером, когда пользователей почти не было, загрузка проца около нуля, памяти больше половины свободной.
создал пустую mdb, привязал таблицы (и даже импортировал на всякий случай) - запрос висит ..
та же самая mdb, скачанная на локальный компьютер (celeron, память ~ 300 MB) нормально отрабатывает (~ 7-8 сек).