powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Read_commited. Не видна закомиченная транзакция. Так должно быть?
25 сообщений из 52, страница 2 из 3
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137118
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvздрасьте. данные вставляются в свободные "дыры". если 4 вставилось на одну страницу, а 5 - на другую, вполне может получиться что 4 будет "увидено", а 5 - нет, и наоборот.Пофигу. Он по индексу читает. И каждая запись комиттится отдельно.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137125
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийу него записи вставляются пачками, а не поштучно.Вот тут 18603507 чётко написано - на каждую запись отдельный коннект.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137126
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovБесполезно. при коммите на каждую запись в бд1 поведение фактически не зависит от уровня изоляции.

1. на самом деле коммитится не каждая запись. от одной до нескольких тысяч. я упростил пример.
В реальности пропускалась и одна, и сотня записей.
2. почему бесполезно? если стартует снапшот, он видит только закоммиченные на момент старта. и новые коммиты так и останутся невидимы. и я не получу 4-ку, пропустив 3-ку - я вообще не получу ничего после 2-ки. Что не так? Снапшот работает тоже не так очевидно?
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137134
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamialна самом деле коммитится не каждая запись. от одной до нескольких тысяч. я упростил пример.

этим упрощением ты собственно полностью убрал проблему. Ты хоть пробовал этот свой упрощённый пример проверять. Там наверняка ошибка уже не воспроизводилась.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137135
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamial1. на самом деле коммитится не каждая запись. от одной до нескольких тысяч. я упростил пример.
В реальности пропускалась и одна, и сотня записей.Что и требовалось доказать :)
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137137
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamial, read_committed + rec_version = non-repeatable read (со всеми вытекающими + фантомы строк). Как минимум, нужен repeatable read (read_committed + no _rec_version), либо уже snapshot.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137141
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladСм запрос - там where id > ? order by id
И ты из названия поля выводишь наличие индекса по нему?.. Ню-ню...Будем спорить ?
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137142
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Hvlad!
You wrote on 24 декабря 2015 г. 14:19:32:

Hvlad> Что и требовалось доказать :)ну дык!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137149
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor, сори за опечатку! snapshot = repeatable read, а read_committed+no_rec_version = двухфазная блокировка.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137150
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dbconstructor!
You wrote on 24 декабря 2015 г. 14:21:34:

Dbconstructor> read_committed+no_rec_version = двухфазная блокировка.
не нужно выдумывать новую алгебру
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137151
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladОн по индексу читает. И каждая запись комиттится отдельно.
Ну смотри сюда: при таком запросе и наличии индекса план будет ORDER. Использование
локального коннекта (фактически embedded вариант) отключает буферизацию на уровне сети.

Т.е. читающий запрос прочитал в индексе "3", полез в таблицу - закоммичено - выдал.
Прочитал "4", полез в таблицу - не закоммичено - пропустил.
Прочитал в индексе "5", полез в таблицу - уже закоммичено (вставляющий процесс шустрый,
зараза) - выдал.
Опаньки, пропуск.

Но таки да, я был неправ, на уровне snapshot такого эффекта не будет. Там могут быть другие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137153
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЯ, конечно, не могу вам навязывать решения, но скажу, что проще будет воспользоваться
проверенными технологиями репликации, чем изобретать такие вот велосипеды.

Когда стало ясно, что это не глюк, а правильно поведение, которое надо учитывать, решается это просто
Код: sql
1.
2.
3.
4.
5.
for .. do begin
  if(id <> prev_id+1) then break;
  insert into z(id) values(:id);
  prev_id = id;
end


Только что воспроизвёл "пропуски" внутри одной базы без всяких репликация. Так что не в репликации дело...
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137162
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovНо таки да, я был неправ, на уровне snapshot такого эффекта не будет. Там могут быть другие.

индекс есть.
базы на разных серверах. датацентр один, но подсети разные.
но это всё не важно - воспроизвёл внутри одной бд.

какие другие эффекты могут быть - скажите пожалуйста.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137171
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
В логах видел вставку одной записи (много раз. это 30% случаев).
В логах видел пропуск одной записи. двух записей. трёх записей. и несколько сотен сразу.
Поэтому считаю, что упрощенный пример ничем не хуже боевого, и я ничего никому не соврал.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137173
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийне нужно выдумывать новую алгебру
По сути это не я придумал, а Хелен. ;)
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137184
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТ.е. читающий запрос прочитал в индексе "3", полез в таблицу - закоммичено - выдал.
Прочитал "4", полез в таблицу - не закоммичено - пропустил.
Прочитал в индексе "5"Откуда там 5 взялась, если 4 ещё не закоммиченно ? Не забывай, у нас каждая запись коммитится отдельно - согласно изначальной информации.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137185
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийHvlad> Что и требовалось доказать :)ну дык! Ну так надо же было из него это вытянуть ;)
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137193
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladОткуда там 5 взялась, если 4 ещё не закоммиченно ? Не забывай, у нас каждая запись коммитится отдельно - согласно изначальной информации.
Например, отсюда:
Сессия 1Сессия 2добавляет 4читает 4пропускает 4коммитстарт транзакциидобавляет 5коммитчитает 5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137194
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 24 декабря 2015 г. 14:42:45:

Dimitry Sibiryakov> читает 4читает 3
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137204
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийчитает 3
Не, 3 оно прочитало ещё задолго до этого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137212
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 24 декабря 2015 г. 14:54:28:

Dimitry Sibiryakov> Не, 3 оно прочитало ещё задолго до этого.тогда не читает, а ИЩЕТ 4.
ибо нельзя прочесть то чего нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137222
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийтогда не читает, а ИЩЕТ 4.
ибо нельзя прочесть то чего нет.
Оно уже есть. И в индексе и в данных. Только ещё не закоммиченное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137307
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovМимопроходящийтогда не читает, а ИЩЕТ 4.
ибо нельзя прочесть то чего нет.
Оно уже есть. И в индексе и в данных. Только ещё не закоммиченное.Тогда 5 нет ни в индексе, ни в данных.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137319
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТогда 5 нет ни в индексе, ни в данных.

Но может появиться когда читающий select, у которого на некоторое время отобрали CPU,
пойдёт на следующий цикл, нет?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137334
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamial,

в общем, неверно выбран уровень изолированности для вызова procedure load_test_data. Должен быть snapshot, а не Read committed.
В самом крайнем случае, если бы оно было в одной базе, а не в разных, можно было бы все это дело даже сериализовать, при помощи явного блокирования таблиц при старте транзакций wait.
Хотя, наверное и для разных баз тоже можно. Если, конечно, была бы нужна сериализация вставки и чтения.
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Read_commited. Не видна закомиченная транзакция. Так должно быть?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]