|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
kdvздрасьте. данные вставляются в свободные "дыры". если 4 вставилось на одну страницу, а 5 - на другую, вполне может получиться что 4 будет "увидено", а 5 - нет, и наоборот.Пофигу. Он по индексу читает. И каждая запись комиттится отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:10 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Мимопроходящийу него записи вставляются пачками, а не поштучно.Вот тут 18603507 чётко написано - на каждую запись отдельный коннект. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:13 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovБесполезно. при коммите на каждую запись в бд1 поведение фактически не зависит от уровня изоляции. 1. на самом деле коммитится не каждая запись. от одной до нескольких тысяч. я упростил пример. В реальности пропускалась и одна, и сотня записей. 2. почему бесполезно? если стартует снапшот, он видит только закоммиченные на момент старта. и новые коммиты так и останутся невидимы. и я не получу 4-ку, пропустив 3-ку - я вообще не получу ничего после 2-ки. Что не так? Снапшот работает тоже не так очевидно? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:13 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
antamialна самом деле коммитится не каждая запись. от одной до нескольких тысяч. я упростил пример. этим упрощением ты собственно полностью убрал проблему. Ты хоть пробовал этот свой упрощённый пример проверять. Там наверняка ошибка уже не воспроизводилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:15 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
antamial1. на самом деле коммитится не каждая запись. от одной до нескольких тысяч. я упростил пример. В реальности пропускалась и одна, и сотня записей.Что и требовалось доказать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:16 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
antamial, read_committed + rec_version = non-repeatable read (со всеми вытекающими + фантомы строк). Как минимум, нужен repeatable read (read_committed + no _rec_version), либо уже snapshot. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:17 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovhvladСм запрос - там where id > ? order by id И ты из названия поля выводишь наличие индекса по нему?.. Ню-ню...Будем спорить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:18 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Hello, Hvlad! You wrote on 24 декабря 2015 г. 14:19:32: Hvlad> Что и требовалось доказать :)ну дык! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:19 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
DBConstructor, сори за опечатку! snapshot = repeatable read, а read_committed+no_rec_version = двухфазная блокировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:20 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Hello, Dbconstructor! You wrote on 24 декабря 2015 г. 14:21:34: Dbconstructor> read_committed+no_rec_version = двухфазная блокировка. не нужно выдумывать новую алгебру Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:21 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
hvladОн по индексу читает. И каждая запись комиттится отдельно. Ну смотри сюда: при таком запросе и наличии индекса план будет ORDER. Использование локального коннекта (фактически embedded вариант) отключает буферизацию на уровне сети. Т.е. читающий запрос прочитал в индексе "3", полез в таблицу - закоммичено - выдал. Прочитал "4", полез в таблицу - не закоммичено - пропустил. Прочитал в индексе "5", полез в таблицу - уже закоммичено (вставляющий процесс шустрый, зараза) - выдал. Опаньки, пропуск. Но таки да, я был неправ, на уровне snapshot такого эффекта не будет. Там могут быть другие. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:22 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ, конечно, не могу вам навязывать решения, но скажу, что проще будет воспользоваться проверенными технологиями репликации, чем изобретать такие вот велосипеды. Когда стало ясно, что это не глюк, а правильно поведение, которое надо учитывать, решается это просто Код: sql 1. 2. 3. 4. 5.
Только что воспроизвёл "пропуски" внутри одной базы без всяких репликация. Так что не в репликации дело... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:22 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНо таки да, я был неправ, на уровне snapshot такого эффекта не будет. Там могут быть другие. индекс есть. базы на разных серверах. датацентр один, но подсети разные. но это всё не важно - воспроизвёл внутри одной бд. какие другие эффекты могут быть - скажите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:25 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Симонов Денис, В логах видел вставку одной записи (много раз. это 30% случаев). В логах видел пропуск одной записи. двух записей. трёх записей. и несколько сотен сразу. Поэтому считаю, что упрощенный пример ничем не хуже боевого, и я ничего никому не соврал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:28 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Мимопроходящийне нужно выдумывать новую алгебру По сути это не я придумал, а Хелен. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:29 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТ.е. читающий запрос прочитал в индексе "3", полез в таблицу - закоммичено - выдал. Прочитал "4", полез в таблицу - не закоммичено - пропустил. Прочитал в индексе "5"Откуда там 5 взялась, если 4 ещё не закоммиченно ? Не забывай, у нас каждая запись коммитится отдельно - согласно изначальной информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:33 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
МимопроходящийHvlad> Что и требовалось доказать :)ну дык! Ну так надо же было из него это вытянуть ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:34 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
hvladОткуда там 5 взялась, если 4 ещё не закоммиченно ? Не забывай, у нас каждая запись коммитится отдельно - согласно изначальной информации. Например, отсюда: Сессия 1Сессия 2добавляет 4читает 4пропускает 4коммитстарт транзакциидобавляет 5коммитчитает 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:40 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Hello, Dimitry Sibiryakov! You wrote on 24 декабря 2015 г. 14:42:45: Dimitry Sibiryakov> читает 4читает 3 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:42 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Мимопроходящийчитает 3 Не, 3 оно прочитало ещё задолго до этого. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:48 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Hello, Dimitry Sibiryakov! You wrote on 24 декабря 2015 г. 14:54:28: Dimitry Sibiryakov> Не, 3 оно прочитало ещё задолго до этого.тогда не читает, а ИЩЕТ 4. ибо нельзя прочесть то чего нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 14:54 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Мимопроходящийтогда не читает, а ИЩЕТ 4. ибо нельзя прочесть то чего нет. Оно уже есть. И в индексе и в данных. Только ещё не закоммиченное. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 15:05 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovМимопроходящийтогда не читает, а ИЩЕТ 4. ибо нельзя прочесть то чего нет. Оно уже есть. И в индексе и в данных. Только ещё не закоммиченное.Тогда 5 нет ни в индексе, ни в данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 16:09 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
hvladТогда 5 нет ни в индексе, ни в данных. Но может появиться когда читающий select, у которого на некоторое время отобрали CPU, пойдёт на следующий цикл, нет? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 16:21 |
|
Read_commited. Не видна закомиченная транзакция. Так должно быть?
|
|||
---|---|---|---|
#18+
antamial, в общем, неверно выбран уровень изолированности для вызова procedure load_test_data. Должен быть snapshot, а не Read committed. В самом крайнем случае, если бы оно было в одной базе, а не в разных, можно было бы все это дело даже сериализовать, при помощи явного блокирования таблиц при старте транзакций wait. Хотя, наверное и для разных баз тоже можно. Если, конечно, была бы нужна сериализация вставки и чтения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2015, 16:35 |
|
|
start [/forum/topic.php?fid=40&msg=39137149&tid=1562430]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 138ms |
0 / 0 |