![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Нужно ли на4инать транзакцию и делать коммит если только лоад данных ?
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Лоад - имеется в виду чтение?
Если да, то все зависит от того нужно ли тебе обеспечить непротиворичивость данных. Начав транзакцию можно сделать так, что приложение не увидит изменения сделанные другими транзакциями. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Но если выставить тразакцию, то это будет тормозить, все будут встовать в о4ередь даже 4тобы про4итать.
Добавлено через 1 минуту и 29 секунд
Хотелось бы поподробней. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет в очередь становиться не будут, но дополнительная память у сервера расходоваться будет. Так что длительных транзакций лучше не устраивать и вообще, по возможности обойтись без этого.
Выставляешь у сесси (setTransactionIsolation()) уровень изоляции Connection.TRANSACTION_REPEATABLE_READ или Connection.TRANSACTION_SERIALIZABLE. А дальше читаешь свои данные. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Как я понял так. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Да, только вопрос в том как начать транзакцию. Попробуй через setSavePoint().
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Статейку про4итал. Думаю всем будет полезно.
Складувается мнение 4то вседгда (4тение/запись) нужно на4инать транзакцию и выставлять TRANSACTION_READ_COMMITTED 4тобы небыло траблов с данными(один изменил другой про4итла, а потом roolback). Вот такие пироги. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Только если идет чтение данных из нескольких связанных таблиц. Да и тогда это не всегда нужно. Зачем нужно читать устаревшие данные? Одно дело когда мы делаем экспорт данных, тут непротиворичивость всех данных обязательна. Другое когда просто работаем с системой, тут актуальность данных важней. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Как я понил TRANSACTION_READ_COMMITTED и есть полная блокировка(на оработку/4тение). Выставив её я буду уверен 4то не будет неразберихи с данными. Тоесть поработал дал другому. А не так один меняет другой 4итает. Или похоже я совсем запутался.
Это сообщение отредактировал(а) Tony - 22.9.2007, 15:04 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Что при этом происходит зависит от СУБД.
Oracle реализует "согласованное чтение" без использования блокировок. Транзацкия будет видеть только то, что было до ее начала, все изменения произошедшие после этого момента она не увидит. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Ну так какой вывод темы. Я сделал такой всегда транзакция + изоляция: TRANSACTION_READ_COMMITTED.
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Только если есть необходимость получения согласованных данных. Иначе не стоит. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Разобрался с уровнями изоляции. Может вопрос может не сюда. Но про этоже, а как с хибере поменять изоляцию програмным путём? Нашол 4то можно в маппинге указать левел hibernate.connection.isolation.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |