Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возрастает нагрузка на fbserver 
V
    Опции темы
ksili
Дата 19.2.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



С базой данных работает более 10 одинаковых приложений. Интенсивность работы с БД - периодическая (днем-вечером больше, ночью-утром меньше)
FB 2.0.3, OC Win XP. 

Если сразу после перезагрузки компьютера запустить их все, загрузка процессора 0-5-10%. Но затем она постепенно возрастает - дня через 4 она уже около 40% (днём или ночью - одинаково). Диспетчер задач показывает, что загрузка на совести fbserver.exe. Если закрыть все эти приложения, то загрузка снижается до минимальной, но если опять запустить, то она быстро возрастает до прежней. Полноценно помогает только перезагрузка Винды. после нее загрузка опять около 5 %.
Из-за чего это может быть и как этого избежать? Может ли такое быть из-за подвисших транзакций? Как с ними бороться в общем случае?
У меня есть одна таблица, к которой чаще всего обращаются все эти приложения (преимущественно на чтение). Поэтому, я так понимаю, может быть много конкурирующих транзакций.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Deniz
Дата 19.2.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(ksili @  19.2.2008,  15:58 Найти цитируемый пост)
У меня есть одна таблица, к которой чаще всего обращаются все эти приложения (преимущественно на чтение).

Много зависит от уровня изоляции, если у читателей (read; rec version) то транзакции не плодятся, и не нагружают сервер.

Возможно в версии 2.0.3 есть недоработки/баги и т.д.
Можно спросить на SQL.RU туда сами разработчики заходят.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
ksili
Дата 19.2.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



В связи с транзакциями есть несколько вопросов:

Я пишу в Билдере 6-ом, использую компоненты FIBPlus. У компонента FIBDatabase есть транзакции для чтения и обновления (свойства DefaultTransaction и DefaultUpdateTransaction). Для работы с БД использую в основном компонент FIBQuery, у которого также есть своё свойство Transaction. Поэтому возникают такие вопросы:

1) Когда я что-то делаю через FIBQuery, какие транзакции задействуются? И квери, и датабейза? Или только квери, тогда в чём смысл DefaultTransaction и DefaultUpdateTransaction?
2) Я использую одну кверю для всего (удаление, чтение, обновление, добавление). Имеет ли смысл сделать отдельную кверю для чтения и отдельную для всего остального?
3) Параметры транзакции можно указать, например так:
Код

 MainTransaction->DefaultDatabase = MainBase;
 MainTransaction->TPBMode = tpbDefault;
 MainTransaction->TRParams->Add("isc_tpb_write");
 MainTransaction->TRParams->Add("isc_tpb_read_committed");
 MainTransaction->TRParams->Add("isc_tpb_wait");
 MainTransaction->TRParams->Add("isc_tpb_no_rec_version");
 MainQuery->Transaction = MainTransaction;

Но даже если их не указывать, то всё и так работает, хотя MainTransaction->TRParams=NULL. Какие установки используются по-умолчанию?

Прошу прощения, что не создал для всех этих вопросов отдельную тему. Думаю что если со всем этим разберусь, то решится и главная проблема из первого топика

Это сообщение отредактировал(а) ksili - 19.2.2008, 14:40


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Deniz
Дата 20.2.2008, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



ksili, давай по порядку.
Все рассказывать нет смысла, отправлю тебя к документации по FIBPlus и www.ibase.ru.
Теперь по вопросам:
Цитата(ksili @  19.2.2008,  17:38 Найти цитируемый пост)
1) Когда я что-то делаю через FIBQuery, какие транзакции задействуются? И квери, и датабейза? Или только квери, тогда в чём смысл DefaultTransaction и DefaultUpdateTransaction?
Какая транзакция указана у FIBQuery та и используется. Default и DefaultUpdate сделаны у FIBDataSet.
Цитата(ksili @  19.2.2008,  17:38 Найти цитируемый пост)
2) Я использую одну кверю для всего (удаление, чтение, обновление, добавление). Имеет ли смысл сделать отдельную кверю для чтения и отдельную для всего остального?
Конечно имеет, причем для читающей Query лучше указать (read; read commited; rec version; no wait)

3. Все таки настаиваю на 2 транзакциях, параметры:
1. читающая (read; read commited; rec version)
2. пишущая (write; nowait; concurrency)
подробнее о транзакциях здесь и вот здесь
Если параметры не указывать, то IBX использует по умолчанию (snapshot+wait+write), а FIBPlus самостоятельно прописывает параметры (read write read_committed no wait) (возможно в новых версиях что-то поменялось, надо смотреть исходники)

PS: в дополнение к моему прошлому ответу цитата из статьи:
Код

Во всех последних версиях InterBase (6.0 и выше), Firebird и Yaffil, очень удобно для работы со справочниками стартовать транзакцию

read
read_committed
rec_version

такая транзакция стартует в состоянии committed, поэтому не оказывает никакого влияния на sweep, версии и т.п.,
и поэтому может "жить" очень долго (сутками, месяцами...). Отсутствие параметра nowait в данном случае обусловлено тем,
что читающая транзакция с rec_version не может в принципе попасть ни на какой конфликт обновления записей.
Поэтому wait/nowait в данном случае значения не имеет.



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
ksili
Дата 20.2.2008, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Deniz, спасибо!
Остальное, надеюсь додумаю сам.
Помечу вопрос решённым, а пока пойду перелопачивать код.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.3336 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.