|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Всем привет, в существующем java приложении периодически получаем Subj. Согласно документации postgre это может быть из-за Serializable уровня изоляции транзакции. что-есть: postgresql 9.3 триггер на таблице, который вызывает хранимую процедуру. Собственно error: Код: java 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.
что смущает: след код внутри хранимки: Код: plsql 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.
собственно вопрос: может ли причиной ошибки быть не уровень из-изоляции транзакции (потому что судя по коду везде READ COMMITTED), а именно лок таблицы + эмуляция upsert ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 12:13 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Michael Ponomarev, а _fdw табличек у вас тут нигде нет ? а то там повышение уровня изоляции как--то наблюдалось. на внешней стороне. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 20:21 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Michael Ponomarev, и да, вы по коду прилады судите ? или тупо в хранимки зырите ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2017, 20:22 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
qwwq, что такое _fdw не знаю 1. про транзакции сужу по java коду 2. смущает вот что: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2017, 12:05 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Michael Ponomarev, какая ять вложенная транзакция в plpgsql ? вы давно с дуба падали ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2017, 14:47 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
qwwq, люблю sql.ru https://www.postgresql.org/docs/9.3/static/sql-begin.html это получается к plpgsql не применимо ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2017, 15:11 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Michael Ponomarev, Получается да. В plpgsql есть только неявные savepoint'ы https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING "When an error is caught by an EXCEPTION clause, the local variables of the PL/pgSQL function remain as they were when the error occurred, but all changes to persistent database state within the block are rolled back." qwwq, тоже обратите на это внимание. По основному вопросу: обрабатывайте также, как и дедлок; если сильно досаждает, то можно переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2017, 16:00 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Michael Ponomarevqwwq, люблю sql.ru https://www.postgresql.org/docs/9.3/static/sql-begin.html это получается к plpgsql не применимо ? больше того -- со словцом "вложенные" оно не применимо даже в постгрессовском SQL ибо никаких вложенных транзакций в пж не существует. существует идеология savepoint в плпгскл она [идеология savepoint] неявно присутствует в виде блоков plpgsql {BEGIN ..... EXCEPTION WHEN .... END;} где бегин и являет собой сейвпойнт на случай обрабатываемых исключений. Код: sql 1.
или дерните из приложения перед вашей хранимочкой ещё и Код: sql 1.
-- почитаете можно в нотификацию RAISE {NOTICE|WARNING} вывести прямо из хранимки -- в логах найдёте. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2017, 17:44 |
|
could not serialize access due to concurrent update
|
|||
---|---|---|---|
#18+
Michael Ponomarevqwwq, люблю sql.ru https://www.postgresql.org/docs/9.3/static/sql-begin.html это получается к plpgsql не применимо ? Вы не в том месте читаете документацию: It is important not to confuse the use of BEGIN/END for grouping statements in PL/pgSQL with the similarly-named SQL commands for transaction control. PL/pgSQL's BEGIN/END are only for grouping; they do not start or end a transaction. https://www.postgresql.org/docs/9.6/static/plpgsql-structure.html ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2017, 19:06 |
|
|
start [/forum/topic.php?fid=53&fpage=69&tid=1996334]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 26ms |
total: | 166ms |
0 / 0 |