Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
07.10.2019, 12:55
|
|||
---|---|---|---|
|
|||
Упражнения с транзакциями Oraсle. 1, 2 - различное поведение без и при наличии индекса. |
|||
#18+
Ганс Христиан Андерсен."А король-то голый!" Ниже, при упоминании документации используются Database Concepts(DC) https://docs.oracle.com/database/121/CNCPT/transact.htm#CNCPT016 Database Programmer's Guide to the Oracle Precompilers(DPG) https://docs.oracle.com/database/121/ZZPRE/ch_seven.htm#ZZPRE734 В упражнениях 1 и 2 показано различное поведение при выполнении одинаковой последовательности действий с транзакциями при проверке утверждения из DC Changes made by the transaction are permanent and visible to other users only after a transaction commits. Проверка проводилась на двух БД Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Состояние сессий\транзакций определялось запросом Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Создаем тестовую таблицу Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Упражнение 1. Вставка в таблицу без индекса Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91.
Результат упражнения 1 Первая транзакция удалила данные, которых не было на момент ее начала. Удаленные данные были вставлены второй транзакцией, которая началсь после первой и закончилась раньше. Проверяемое Changes made by the transaction are permanent and visible to other users only after a transaction commits. выполнилось корректно, но вот Определение transaction-level read consistency взято из https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT89131 The guarantee of read consistency to all queries in a transaction. Each statement in a transaction sees data from the same point in time, which is the time at which the transaction began. нарушено явно. Упражнение 2. То же, что 1 с уникальным индексом на таблице Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93.
Результат упражнения 2 Хотя 1-я транзакция была не завершена, вторая сессия не могла вставить данные до завершения 1-й трансакции. Т.е. проверяемое условие видимости данных Changes made by the transaction are permanent and visible to other users only after a transaction commits. было нарушено. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2019, 13:05
|
|||
---|---|---|---|
Упражнения с транзакциями Oraсle. 1, 2 - различное поведение без и при наличии индекса. |
|||
#18+
Sergey_Korolevбыло нарушено.Чудак, RTFM integrity constraints тщательней. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2019, 13:06
|
|||
---|---|---|---|
Упражнения с транзакциями Oraсle. 1, 2 - различное поведение без и при наличии индекса. |
|||
#18+
Sergey_KorolevТ.е. проверяемое условие видимости данных Changes made by the transaction are permanent and visible to other users only after a transaction commits. было нарушено.Какое именно изменение увидела другая транзакция и что она может предпринять на основании увиденного? Если дверь туалета заперта, это еще не значит, что там кто-то какает. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2019, 13:11
|
|||
---|---|---|---|
|
|||
Упражнения с транзакциями Oraсle. 1, 2 - различное поведение без и при наличии индекса. |
|||
#18+
Sergey_Korolev Проверяемое Changes made by the transaction are permanent and visible to other users only after a transaction commits. выполнилось корректно, но вот Определение transaction-level read consistency взято из https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT89131 The guarantee of read consistency to all queries in a transaction. Each statement in a transaction sees data from the same point in time, which is the time at which the transaction began. нарушено явно. Вам не кажется, что ссылка на глоссарий тут не к месту? Не выполняется transaction-level read consistency, которого никто не обещал. Такой режим можно включить через set transaction, по умолчанию поведение иное. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2019, 13:37
|
|||
---|---|---|---|
|
|||
Упражнения с транзакциями Oraсle. 1, 2 - различное поведение без и при наличии индекса. |
|||
#18+
Sergey_Korolev Код: plsql 1. 2. 3.
Код: plsql 1.
Наслаждайтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2019, 14:01
|
|||
---|---|---|---|
|
|||
Упражнения с транзакциями Oraсle. 1, 2 - различное поведение без и при наличии индекса. |
|||
#18+
Sergey_KorolevОпределение transaction-level read consistency взято из https://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT89131 The guarantee of read consistency to all queries in a transaction. Each statement in a transaction sees data from the same point in time, which is the time at which the transaction began. нарушено явно. Помимо словаря, следует почитать концепты, чтобы понять, как именно активируются те или иные механизмы и как они работают. https://docs.oracle.com/database/121/CNCPT/consist.htm#GUID-D081389D-C338-4E74-BF64-6524795EF764 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/moderation_log.php?user_name=Hanydor]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 894ms |
total: | 1049ms |
0 / 0 |