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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
brodjaga
Сообщения: 6
Зарегистрирован: 04 дек 2006, 16:20

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

Сообщение brodjaga » 04 дек 2006, 17:01

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

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

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 04 дек 2006, 17:25

В неоптимизированных запросах к SS-серверу.

brodjaga
Сообщения: 6
Зарегистрирован: 04 дек 2006, 16:20

Сообщение brodjaga » 05 дек 2006, 13:30

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

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 дек 2006, 13:53

Ну так поставь классик если память позволяет.

brodjaga
Сообщения: 6
Зарегистрирован: 04 дек 2006, 16:20

Сообщение brodjaga » 05 дек 2006, 14:12

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

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 дек 2006, 14:24

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

brodjaga
Сообщения: 6
Зарегистрирован: 04 дек 2006, 16:20

Сообщение brodjaga » 05 дек 2006, 15:16

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

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 дек 2006, 15:25

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

brodjaga
Сообщения: 6
Зарегистрирован: 04 дек 2006, 16:20

Сообщение brodjaga » 05 дек 2006, 15:47

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

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

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

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 дек 2006, 16:00

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

brodjaga
Сообщения: 6
Зарегистрирован: 04 дек 2006, 16:20

Сообщение brodjaga » 05 дек 2006, 17:20

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 дек 2006, 17:42

Что это и с чем это едят?
firebird.conf или книжка Х. Борри.
www.ibase.ru/develop.htm#books

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 05 дек 2006, 18:37

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

Ответить