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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокировка выборки данных незакрытой транзакцией 
:(
    Опции темы
Wardena
  Дата 27.4.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыфтик =)



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 13.9.2006
Где: Уфа

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



При работе с базой данных firebird 2.1.3 из VisualStudio посредством FirebirdSql.Data.FirebirdClient.dll была обнаружена странная закономерность. Иногда при выполнении запроса на выборку большого объема данных программа впадает в ступор. Спустя месяц я кажется поняла что к нему приводит... Незакрытая транзация. Для примера, я совершаю какую-то выборку данных в IB Expert и оставляю его открытым, не выполняя Commit. Пытаюсь выполнить Select из программы - ступор, причем как только закрываю транзакцию в IB Expert, то запрос тут же выполняется, выходя из ступора.

Это такая особенность firebird-а или как? К рассматриваемой базе подключатся из программ написанных давным давно какими-то школьниками на Delphi и видимо там не совсем продумано закрытие транзаций. Как быть? почему собственного Delphi пофиг на эти нюансы, а из VisualStudio не работает?
PM MAIL ICQ   Вверх
former
Дата 27.4.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



Wardena, очевидно, что транзакции в программе выполняют блокировку записи. Разберитесь с настройкой транзакций.

Это сообщение отредактировал(а) former - 27.4.2010, 10:57


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Wardena
Дата 27.4.2010, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыфтик =)



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 13.9.2006
Где: Уфа

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



Транзакции в какой программе? IB Expert? я не понимаю на какой стороне мне разбираться, мне нужно поднастроить сервер firebird? или мне нужно поднастроить настройки подключения? или еще что? У меня в программе вообще транзакции не используются, у меня примется обычный метод FbDataAdapter.Fill для выгрузки данных и все...
PM MAIL ICQ   Вверх
Deniz
Дата 27.4.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Wardena, запусти две версии IBExpert'а.
В первом
Цитата(Wardena @  27.4.2010,  11:36 Найти цитируемый пост)
Для примера, я совершаю какую-то выборку данных в IB Expert и оставляю его открытым, не выполняя Commit.

Во втором тот select из прошраммы
Цитата(Wardena @  27.4.2010,  11:36 Найти цитируемый пост)
Пытаюсь выполнить Select из программы - ступор

Результат опиши здесь.


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 18.1.2003
Где: Украина

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



Цитата(Wardena @ 27.4.2010,  06:36)
Незакрытая транзация. Для примера, я совершаю какую-то выборку данных в IB Expert и оставляю его открытым, не выполняя Commit. Пытаюсь выполнить Select из программы - ступор, причем как только закрываю транзакцию в IB Expert, то запрос тут же выполняется, выходя из ступора.

Это такая особенность firebird-а или как?

Это особенность транзакций. Если первая программа не закрыла транзакцию, значит она планирует и дальше работать с БД и другие программы ей будут мешать. В вашем случае этот конфликт разрешается с помощью блокировки.

Если проблема возникает только при использовании IBExpert, то надо просто откатывать транзакцию в IBExpert.
PM WWW   Вверх
Akella
Дата 27.4.2010, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Ты сначала расскажи нам, какие параметры транзакций у тебя указаны в эксперте и у тебя в программе, если, конечно, ты там хоть-что-то указывал.
PM MAIL   Вверх
Deniz
Дата 28.4.2010, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(beroal @  27.4.2010,  20:47 Найти цитируемый пост)
Это особенность транзакций. Если первая программа не закрыла транзакцию, значит она планирует и дальше работать с БД и другие программы ей будут мешать.
Это откуда такое заключение?
Цитата(beroal @  27.4.2010,  20:47 Найти цитируемый пост)
В вашем случае этот конфликт разрешается с помощью блокировки.
FireBird версионник, а не блокировочник, и чтобы сделать блокировку записи, нужно еще постараться, например как-то так


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


Эксперт
***


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

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



Wardena, почитай статьи на ibase.ru особенно про транзакции


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


Пуфыфтик =)



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 13.9.2006
Где: Уфа

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



Цитата(Deniz @ 27.4.2010,  13:13)
Wardena, запусти две версии IBExpert'а.
В первом
Цитата(Wardena @  27.4.2010,  11:36 Найти цитируемый пост)
Для примера, я совершаю какую-то выборку данных в IB Expert и оставляю его открытым, не выполняя Commit.

Во втором тот select из прошраммы
Цитата(Wardena @  27.4.2010,  11:36 Найти цитируемый пост)
Пытаюсь выполнить Select из программы - ступор

Результат опиши здесь.

Проверила. Все работает! 2 IB Experta выполняют один и те же запросы не блокируя друг друга!

Добавлено через 3 минуты и 1 секунду
Цитата(Akella @ 27.4.2010,  23:34)
Ты сначала расскажи нам, какие параметры транзакций у тебя указаны в эксперте и у тебя в программе, если, конечно, ты там хоть-что-то указывал.

Никаких настроек транзакций в IB Experte не производила, самое интересное то, что программа написанная на дельфи много лет назад работает как часы и клала она на IB Expert и его транзакции... Может быть мне в моей программе надо в настройках подключения указывать игнор транзакций или еще что в этом роде?
PM MAIL ICQ   Вверх
former
Дата 28.4.2010, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



Цитата(Wardena @  28.4.2010,  06:52 Найти цитируемый пост)
Может быть мне в моей программе надо в настройках подключения указывать игнор транзакций или еще что в этом роде? 

А ведь я про это говорил с самого начала. Необходимо в программе (твоей) настроить транзакции. Ссылки по работе с транзакциями уже даны выше.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Wardena
Дата 28.4.2010, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыфтик =)



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 13.9.2006
Где: Уфа

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



Цитата(former @ 28.4.2010,  07:43)
Цитата(Wardena @  28.4.2010,  06:52 Найти цитируемый пост)
Может быть мне в моей программе надо в настройках подключения указывать игнор транзакций или еще что в этом роде? 

А ведь я про это говорил с самого начала. Необходимо в программе (твоей) настроить транзакции. Ссылки по работе с транзакциями уже даны выше.

В моей программе вообще транзакции не используются, то есть мне нужно их ввести, так что ли?
PM MAIL ICQ   Вверх
former
Дата 28.4.2010, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


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

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



Цитата(Wardena @  28.4.2010,  08:57 Найти цитируемый пост)
В моей программе вообще транзакции не используются, то есть мне нужно их ввести, так что ли? 

В программе может и не используются, а вот библиотека, через которую осуществляется доступ наверняка. Может в доках к ней есть что-нибудь про работу с транзакциями?


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 28.4.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Wardena @  28.4.2010,  06:52 Найти цитируемый пост)
Никаких настроек транзакций в IB Experte не производила, самое интересное то, что программа написанная на дельфи много лет назад работает как часы и клала она на IB Expert и его транзакции... Может быть мне в моей программе надо в настройках подключения указывать игнор транзакций или еще что в этом роде? 

Так вот нужно настроить. 

Цитата(former @  28.4.2010,  09:25 Найти цитируемый пост)
В программе может и не используются,

Используются по любому. Неявно.

Wardena, какой способ (компоненты) доступа используешь?
PM MAIL   Вверх
Deniz
Дата 28.4.2010, 11:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Akella @  28.4.2010,  12:57 Найти цитируемый пост)
Wardena, какой способ (компоненты) доступа используешь?
см. первый пост.
Цитата(Wardena @  27.4.2010,  11:36 Найти цитируемый пост)
При работе с базой данных firebird 2.1.3 из VisualStudio посредством FirebirdSql.Data.FirebirdClient.dll была обнаружена странная закономерность.

Вот примерный вариант работы.
Код
Dim csb As New FirebirdClient.FbConnectionStringBuilder
csb.Charset = "win1251"
csb.ClientLibrary = ClientDLL

csb.Database = "c:\base.fdb"
csb.DataSource = "localhost"
csb.Dialect = 3
csb.IsolationLevel = Data.IsolationLevel.ReadCommitted
csb.UserID = "SYSDBA"
csb.Password = "masterkey"
csb.ServerType = FirebirdClient.FbServerType.Default

Dim cn As FirebirdClient.FbConnection
cn = New FirebirdClient.FbConnection(csb.ToString)

cn.Open()
...
cn.Close()
обрати внимание на csb.IsolationLevel = Data.IsolationLevel.ReadCommitted

Добавлено через 2 минуты
Wardena, приведи код твоей программы, где запрос виснет.


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


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deniz @  28.4.2010,  11:12 Найти цитируемый пост)
csb.IsolationLevel = Data.IsolationLevel.ReadCommitted

О!
А то по-умолчанию, на сколько я знаю, там др. параметры.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

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

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

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

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

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

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


 




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


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

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