Страница 1 из 1

Блокировка приложений

Добавлено: 04 дек 2006, 17:01
brodjaga
Всем привет!
При выполнении запроса происходит блокировка других приложений, связанных с этой базой.
Запрос представляет собой Left Join из 5-ти - 8-ми таблиц. Версия сервера : WI-V1.5.1.4481 Firebird 1.5 SuperServer. Приложение написано на Delphi и использует dbexpress. Приложение находится на расшареном диске и все юзвери запускают его оттуда.
Вот статистика:

Модератор: статистику удалил как не относящуюся к вопросу.

Блокировка просходит только при выполнении многоджойновых запросов. Выражается это в том, что пока запроа не пройдет, остальные приложения никак не реагируют ни на клаву, ни на мышь. Если приложение было свёрнуто, то активировать его можно лишь после выполнения запроса.
В чем может быть дело?
Помогите, пожалуйста.

Добавлено: 04 дек 2006, 17:25
Merlin
В неоптимизированных запросах к SS-серверу.

Добавлено: 05 дек 2006, 13:30
brodjaga
Merlin писал(а):В неоптимизированных запросах к SS-серверу.
"Этого я и боялся" (с) Пендальф.
Буду SQL ортимизировать, но шансов мало, т.к. запросы генерятся автоматически, а код не мой :( :( :(

Добавлено: 05 дек 2006, 13:53
Dimitry Sibiryakov
Ну так поставь классик если память позволяет.

Добавлено: 05 дек 2006, 14:12
brodjaga
Dimitry Sibiryakov писал(а):Ну так поставь классик если память позволяет.
Как раз этим сегодня вечером и займусь :)
Как я понимаю, порядок действий при переходе с супер на классик следующий :
- остановить базу
- остановить сервак
- деинсталлировать сервак
- инсталлировать сервак
- запустить сервак
- запустить базу
Есть какие-нибудь подводные камни?

Добавлено: 05 дек 2006, 14:24
Dimitry Sibiryakov
Останавливать базу ни к чему, достаточно обеспечить выход пользователей. Но и это необязательно - база обычно не страдает при силовой остановке сервера, только текущие транзакции откатятся.
Да! Обязательно проверь (gstat -h), если в базу принудительно записан размер кэша - его надо уменьшить до разумного.

Добавлено: 05 дек 2006, 15:16
brodjaga
Dimitry Sibiryakov писал(а): Да! Обязательно проверь (gstat -h), если в базу принудительно записан размер кэша - его надо уменьшить до разумного.
В базе прописан только Page size = 2048.
А какой разумный? 75?

Добавлено: 05 дек 2006, 15:25
Dimitry Sibiryakov
brodjaga писал(а):А какой разумный? 75?
75 это умолчание. Тут надо балансировать между производительностью (больше кэша - лучше) и имеющимися ресурсами. Впрочем, если перестараешься и ОЗУ не хватит, ты это сразу поймешь по бешеному стрекотанию винта со свопом и возмущенным крикам пользователей. :)

Добавлено: 05 дек 2006, 15:47
brodjaga
Dimitry Sibiryakov писал(а):
brodjaga писал(а):А какой разумный? 75?
75 это умолчание. Тут надо балансировать между производительностью (больше кэша - лучше) и имеющимися ресурсами.
ОЗУ 1Гиг, из них порядка половины ничем не заняты. Должно хватить.
Если я правильно понял, то расход памяти следующий : PageSize * Cache * DBs * Users . Т.е. в моем случае : 2048 байт/страница * 75 страниц * 2 базы * 15 юзеров = 4500Кб. Что-то мало. Или я не правильно считаю?

Код: Выделить всё

 Впрочем, если перестараешься и ОЗУ не хватит, ты это сразу поймешь по бешеному стрекотанию винта со свопом и возмущенным крикам пользователей. :)
Завтра узнаем :wink: :wink:

Добавлено: 05 дек 2006, 16:00
Dimitry Sibiryakov
Сичтай не юзеров/базы а коннекты. Хотя если у тебя каждый юзер приткнут к обеим базам одновременно, тогда да, правильно.
Но память тратится не только на кэш страниц. Ее еще можно загнать в сортировку, что чаще гораздо полезнее.

Добавлено: 05 дек 2006, 17:20
brodjaga
Dimitry Sibiryakov писал(а):Но память тратится не только на кэш страниц. Ее еще можно загнать в сортировку, что чаще гораздо полезнее.
Что это и с чем это едят?

Добавлено: 05 дек 2006, 17:42
kdv
Что это и с чем это едят?
firebird.conf или книжка Х. Борри.
www.ibase.ru/develop.htm#books

Добавлено: 05 дек 2006, 18:37
Merlin
Dimitry Sibiryakov писал(а): Но память тратится не только на кэш страниц. Ее еще можно загнать в сортировку, что чаще гораздо полезнее.
Для классики не актуально практицки. Она действительно память не только под кеш кушает, стек процессам нужен и ваще. У меня в среднем 24 метра на коннект ест при кеше 2К*8К, в пике до 40 метров.