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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вы обычно откатываете или подтверждаете транзакцию, Если обычный не обновляющий запрос? 
V
    Опции темы
ksili
Дата 12.7.2007, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если выполняется обычный запрос выборки, который ничего не обновляет и возвращает одну запись, то после того, как он выполнен и данные прочитаны, транзакцию можно и подтвердить, и откатить - в базе всё равно же ничего не изменится. 
А что делать лучше? По-моему Rollback, так нагрузка на сервер будет меньше.
Или без разницы? 


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


Творец
****


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

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



лучше подтвердить

Добавлено через 35 секунд
почитай у Хели Борри про транзакции и сборку мусора
PM MAIL   Вверх
ksili
Дата 12.7.2007, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Но почему???


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


Эксперт
****


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

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



Ок


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


Творец
****


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

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



Цитата(ksili @  12.7.2007,  08:12 Найти цитируемый пост)
Но почему??? 


Цитата(Akella @  12.7.2007,  08:11 Найти цитируемый пост)
почитай у Хели Борри про транзакции и сборку мусора 


Добавлено через 15 секунд
долго объяснять.

Добавлено через 36 секунд
хотя принципиально не так важно, можно и руками собирать мусор
PM MAIL   Вверх
ksili
Дата 12.7.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Да посмотрю-посмотрю, я же написал ОК
Книга у меня есть


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


Шустрый
*


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

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



В данном случае совершенно не важно - подтвердить или откатить.
Сервер все равно сделает эту транзакцию commited.

Здесь более подробно.
PM MAIL   Вверх
Akella
Дата 23.7.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



как он подтвердит её, если я явно сделаю откат?
PM MAIL   Вверх
chand0s
Дата 23.7.2007, 13:57 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Отвечу прямой цитатой с ibase.ru  (конкретно здесь)

Цитата

В ряде случаев сервер самостоятельно может изменить состояние транзакции, несмотря на то, как транзакция была завершена (даже если коннект с БД оборвался).

   1. Commit никогда ни во что другое не превращается, это понятно.
   2. Rollback может превратиться в Commit, если
         1. изменений в транзакции не было
         2. изменения в транзакции были самостоятельно отменены по exception
         3. изменений в транзакции было мало (понятие "мало" расширено в InterBase 7.1 SP 1. например, теперь "мало" - это update 100 тысяч записей), например менее 10 тысяч. В этом случае сервер сначала отменяет все произведенные в такой транзакции изменения при помощи механизма savepoints, а затем изменяет состояние транзакции с активного на Commit вместо Rollback.
   3. Active превращается в Rollback (или Commit, см. пункт 2), если сервер при попытке проверить состояние транзакции обнаружил, что коннект, ее стартовавший, оборвался.

Дополнительно нужно отметить, что в Firebird появилось (и сейчас во всех версиях IB/FB/YA) специальное поведение для транзакций read only read committed - такая транзакция сразу после старта получает состояние committed, а не active. То есть, она может быть активной чуть ли не вечно, без какого-либо влияния на производительность сервера, сборку мусора и т.п. 

PM MAIL   Вверх
Aprol
Дата 13.8.2007, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Получается я сделал неправильно,
Если у меня есть запрос и он практически постоянно активный?
допустим:
Код

select txt
from qwerty
where id=1;

txt-текст отображается в приложении, когда делаю commit он пропадает, поэтому транзакцию не закрываю.
Не стоит так делать и большая нагрузка на сервер?
PM MAIL   Вверх
ksili
Дата 13.8.2007, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



конечно не стоит. скопируй текст в переменную и потом уже отображай. но приэтом надо будет отслеживать его изменения в базе.


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


Шустрый
*


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

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



Цитата(Aprol @ 13.8.2007,  02:13)
txt-текст отображается в приложении, когда делаю commit он пропадает, поэтому транзакцию не закрываю.
Не стоит так делать и большая нагрузка на сервер?

Странный вывод. Перечитайте статью. Если кратко - транзакция типа

Код

read_commited
rec_version
read


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

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

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

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

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

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

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


 




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


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

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