powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Read_commited. Не видна закомиченная транзакция. Так должно быть?
52 сообщений из 52, показаны все 3 страниц
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136878
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сначала коротко
Все транзакции: read_write + read_commited + rec_version + wait.

транзакция "А" закоммичена
транзакция "B" закоммичена и видит изменения от "А" (зависит от них)
транзакция "С" уже видит изменения транзакции "B", но не видит изменения транзакции "А".

"B" стартовала строго после коммита "A". Когда стартовала "С" неизвестно.

Т.е. например утрируя, приходная накладная есть, зависящая от неё расходная есть, читаем всё, видим только расходную, появившуюся из ничего. Нарушается логическая целостность данных.
Это так должно быть? Я чего-то не понимаю?

Если ответ - "в FB так возможно" - вопросов нет.
Если ответ - "это невозможно, ты гонишь и сам дурак" - напишу подробности (будет длинно, не хотел делать огромный первый пост)
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136884
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Antamial!
You wrote on 24 декабря 2015 г. 11:33:33:

Antamial> Нарушается логическая целостность данных.
для "логической целкостности данных" используют snapshot, а не read_commited.

зы: read_commited "видит" всё, независимо от того когда она стартовала.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136901
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий, заголовок темы.
read_commited НЕ видит закомиченные данные. НЕ видит. В этом и вопрос.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136905
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Antamial!
You wrote on 24 декабря 2015 г. 11:43:10:

Antamial> read_commited НЕ видит закомиченные данные. НЕ видит. В этом и вопрос.
ты ошибаешься.
это ответ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136935
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Тогда объясни, почему так получается:

База данных 1, поток в единственном экземпляре
Код: java
1.
2.
3.
4.
5.
6.
7.
        while(true) {
            connect();
            start_transaction();
            execute_procedure("gen_test_data");
            commit();
            disconnect();
        }



Код: sql
1.
2.
3.
4.
5.
6.
7.
procedure gen_test_data
as begin
  c = (select val from global_vars where name = 'counter1');
  c = c + 1;
  insert into t(id) values(:c);
  update global_vars set val = :c where  name = 'counter1';
end


результат - в таблице "t" появляются записи 1,2,3,4.... и т.д.

База данных 2, поток в единственном экземпляре, код точно такой же (connect,exec,commit,disconnect), только вызывается другая процедурка

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure load_test_data
as begin
  last_id = (select val from global_vars where name = 'last_loaded_id');
  id = last_id;

  for execute statement('select first 5  id from t where id > ? order by id')(:last_id)
      on external 'база данных 1'
      into :id
      do
      insert into z(id) values(:id);

  update global_vars set val = :id where  name = 'last_loaded_id';
end



во второй базе несколько раз в сутки получаются пропуски 1,2, 4,5
т.е. когда уже увидели 4, то 3 ещё не было.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136947
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamial
Код: sql
1.
select first 5  id from t where id > ? order by id


first зачем?
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136955
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Antamial!
You wrote on 24 декабря 2015 г. 12:08:13:

Antamial> on external 'база данных 1'
побробуй в автономной транзакции.
дабы быть уверенным на все 100.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136964
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,
там на самом деле first 50000, чтоб не нагружать оба сервера длинными транзакциями, и не иметь миллионы insert-ов в одной транзакции
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136966
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanantamial
Код: sql
1.
select first 5  id from t where id > ? order by id



first зачем?
В смысле комбинация first и order by мне кажется не стабильной.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136977
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

Попробую, но ответ будет не сразу. Если не повезет - то завтра (иногда пару раз в сутки случается, иногда 10 раз)

А может всё проще? Может ФБ изначально не гарантирует сериализуемость readcommited транзакций?
Ибо:
SNAPSHOT TABLE STABILITY isolation level - It is an isolated, serializable snapshot
Чётко указано, что сериализуемость есть.

А про READ COMMITED ничего такого не сказано. Но и обратного тоже не сказано.
Да, по описанию readcommited должна видеть всё.... и я последние 12 лет так и думал, что всё должно быть видно... но может это просто фича?
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39136986
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не вижу, как в данной схеме можно получить пропуски - независимо от уровней изоляции тр-ций.
Отсюда вывод - или схема не такая, или пропуски не такие, или я чего-то не вижу.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137041
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamialво второй базе несколько раз в сутки получаются пропуски 1,2, 4,5
т.е. когда уже увидели 4, то 3 ещё не было.
я могу предположить только такую ситуацию.

2 транзакции, стартуют параллельно.
1 транзакция начинает вставлять данные
2 транзакция начинает читать данные.
1 транзакция делает коммит
2 транзакция успела прочитать часть данных, которые не были committed, она их не видит. Дальше она читает данные, которые уже committed. Если сейчас перечитать данные еще раз - все данные, вставленные транзакцией 1, будут видны.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137043
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamial Может ФБ изначально не гарантирует сериализуемость readcommited транзакций?
read committed не сереализуемый по своему названию. поэтому никакой сервер не может гарантировать вымышленную "сериализуемость" read committed.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137060
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv2 транзакция успела прочитать часть данных, которые не были committed, она их не видит. Дальше она читает данные, которые уже committed.Тот, кто вставляет, делает это последовательно.
Тот, кто читает - тоже последователен.
Поэтому читатель не может прочитать значение 5 и не увидеть значение 4 - 5 коммитилось не раньше, чем 4.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137076
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТот, кто вставляет, делает это последовательно.
Нет, он делает это на первую свободную страницу. Так что спокойно может добавить запись
туда, где читатель (идущий натуралом) уже побывал раньше. Для пачки в 50000 записей эта
вероятность выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137077
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladПоэтому читатель не может прочитать значение 5 и не увидеть значение 4 - 5 коммитилось не раньше, чем 4.
здрасьте. данные вставляются в свободные "дыры". если 4 вставилось на одну страницу, а 5 - на другую, вполне может получиться что 4 будет "увидено", а 5 - нет, и наоборот.

Здесь, на форуме, был специальный топик на эту тему, прямо тест, именно с такими результатами. И возможно, это был даже Таблоид.
Собственно, пример может быть элементарным, типа select count(*) и параллельной вставки записей хотя бы по 1000. В RC чтение не гарантирует, что select count(*) будет возвращать кратный 1000 результат.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137093
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv2 транзакция успела прочитать часть данных, которые не были committed, она их не видит. Дальше она читает данные, которые уже committed.
Ничего не понял. Типа сканируется индекс, в таблице проверяются данные, но они в ещё не закомиченной транзакции - игнорируются. Транзакция комитится, сканирование продолжается, но данные в таблице теперь уже "видимы всем", и они выдаются в итоговый набор.
Вы это имели ввиду?
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137100
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamialВы это имели ввиду?
примерно это. чтение данных не происходит волшебным образом, всех и сразу. Без индекса, по индексу, или еще каким-то образом, данные читаются или выбираются последовательно, и если коммит конкурирующей транзакции произошел в какой-то момент, когда ЧАСТЬ вставленных этой транзакцией данных уже прочитана, никто их перечитывать не будет. Грубо говоря, читается так

запись (версия) N, транзакция X. X committed? да, можно видеть, нет - нельзя видеть.
запись (версия) N+1, транзакция M. M committed? да, можно видеть, нет - нельзя видеть.
и т.д.
Обращаю внимание еще раз, что вставка записей производится в "свободные дыры" на страницах. То есть, даже "последовательно" вставляемые записи могут попадать на разные страницы, расположенные в самых разных местах таблицы.
Например, вставляем в пустую БД и пустую таблицу 1000 записей. Затем удаляем 10 записей. И вставляем еще 1000 записей.
Так вот, при второй вставке первые 10 записей могут попасть в ту "дыру", которая появилась из-за удаления 10 записей. Если удаление (и сборка мусора) производится еще и параллельно с другими операциями, то куда что попало, предсказать невозможно.
SQL оперирует множествами, а не "последовательностями".
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137103
antamial
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, kdv,
Понял. Всем большое спасибо.
ReadCommited работает не так, как я думал.
Как обычно проблема в понимании документации и чтении между строк. А ведь если подумать, то всё логично и так и должно быть.
Просто обычно на такой эффект не натыкаешься и привыкаешь к "естественному" поведению.
Теперь ясно, что ReadCommited для этого алгоритма не годится, нужен shapshot.

Спасибо за помощь.
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137108
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamialТеперь ясно, что ReadCommited для этого алгоритма не годится, нужен
shapshot.
Бесполезно. Как и сказал Влад, при коммите на каждую запись в бд1 поведение фактически не
зависит от уровня изоляции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137111
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antamial,

и еще. "Вот так", как я написал - это в Firebird и InterBase, и может быть еще в каких-то других СУБД. В Оракле есть так называемая "стабильность курсора", грубо говоря, это как будто даже если в транзакции RC, отдельный select выполняется как бы во внутренней "микротранзакции" SNAPSHOT. Т.е. в RC два таких селекта могут дать разный результат, но вот этих "конкурентно-committed" данных отдельный select показывать не будет.

Вот тут как-то были баталии на тему "неатомарности SQL" 1447129 (и далее)
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137112
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov(идущий натуралом)Я тебя теперь буду так называть :)

См запрос - там where id > ? order by id
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137113
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 24 декабря 2015 г. 14:08:14:

Dimitry Sibiryakov> Бесполезно. Как и сказал Влад, при коммите на каждую запись в бд1 поведение фактически не
> зависит от уровня изоляции.у него записи вставляются пачками, а не поштучно.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137115
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, конечно, не могу вам навязывать решения, но скажу, что проще будет воспользоваться
проверенными технологиями репликации, чем изобретать такие вот велосипеды.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137117
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladСм запрос - там where id > ? order by id
И ты из названия поля выводишь наличие индекса по нему?.. Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
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
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137732
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladТогда 5 нет ни в индексе, ни в данных.

Но может появиться когда читающий select, у которого на некоторое время отобрали CPU,
пойдёт на следующий цикл, нет?Теоритически - да, на практике - не поверю, пока не увижу.
Ибо тут нужно чтобы коммит (со сбросом кеша) и старт новой тр-ции успели выполниться быстрее, чем чтение пары страниц (уже кешированных)...
Но и это не важно. Ибо ты так и не научился читать то, что тебе пишут.
А ведь я упоминал не только order by id , но и where id > ?
А это означает, что перед началом навигации строится битмап с номерами записей.
И если в нём не было 4 и 5, то попытки их посетить - не будет.

Firebird 2.5.5:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT FIRST 5 RDB$RELATION_ID
  FROM RDB$RELATIONS
 WHERE RDB$RELATION_ID > 123
ORDER BY RDB$RELATION_ID

PLAN (RDB$RELATIONS ORDER RDB$INDEX_1 INDEX (RDB$INDEX_1))

...
Рейтинг: 0 / 0
Read_commited. Не видна закомиченная транзакция. Так должно быть?
    #39137736
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

бисер просто излишен
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Read_commited. Не видна закомиченная транзакция. Так должно быть?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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