|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Добрый день , Есть таблица : Код: plsql 1. 2. 3. 4.
Есть задача удалить старые записи ( поле BLOB содержит .pdf и занимает много места ) . Удаляю по дате : Код: plsql 1.
Один день удаляется по ~15 минут ( 20-22 тысяч записей ) . Решил запускать удаление из под разных сессий за разные дни но первая сессия сразу заблокировала вторую ... Почему так происходит ? Разве оператор DELETE не ставит блокировку только на строках которые подтверждены изменению этим оператором ? Вот вторя сессия висит : Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 11:04 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104Разве оператор DELETE не ставит блокировку только на строках которые подтверждены изменению этим оператором ? Почему deadlock? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 12:46 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Viewer, Попробуйте вариант execute immediate 'alter session enable parallel dml'; delete /*+parallel(t,10) full(t)*/ table t where trunc(date_created) = to_date('01.02.2019','dd.mm.yyyy'); commit; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:00 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
redirect to TS... feagor maverick2104 , Попробуйте вариант Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:10 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
feagor, Viewer, Спасибо за отзыв , к сожалению parallel dml не спас ситуацию . Еще инфа про таблицу : ID = PRIMARY KEY Есть 4 индекса в таблице Еще 2 Дочерние таблицы ( от ID ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:33 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
По ссылке-то сходил? Уверен, что во всех блоках есть достаточно ITL-слотов или места для их создания? Если нет, уменьшай степень параллелизма ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:40 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104Есть задача удалить старые записи ( поле BLOB содержит .pdf и занимает много места ) . Просто удаление не освободит место. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:41 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104, Сколько записей в таблице всего? Сколько записей по trunc(date_created)? Какая в итоге стоит задча? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:42 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104, Вторичные ключи все проиндексированы? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:42 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
123ййmaverick2104Есть задача удалить старые записи ( поле BLOB содержит .pdf и занимает много места ) . Просто удаление не освободит место. Знаю, Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 14:46 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
feagormaverick2104, Сколько записей в таблице всего? Сколько записей по trunc(date_created)? Какая в итоге стоит задча? 1) ~ 700 000 записей 2) ~ 21 000 записей 3) Удалить записи где trunc(date_created) < trunc(sysdate) - 60 Вячеслав ЛюбомудровПо ссылке-то сходил? Уверен, что во всех блоках есть достаточно ITL-слотов или места для их создания? Если нет, уменьшай степень параллелизма Конечно сходил , что такое ITL-слоты и v$lock узнал сегодня . Как я понял есть 255 ITL-слотов ( визуализация в представление V$LOCK ) . Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:10 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104( визуализация в представление V$LOCK ) . Извините , деза , иду дальше читать . ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:13 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104maverick2104( визуализация в представление V$LOCK ) . Извините , деза , иду дальше читать .не парься, я просто не тот код посмотрел Если у тебя не проходит уже parallel 2 (а не 10, как я подумал), то вряд ли дело в этом. Но вот выборка из V$LOCK для этих 2 сессий (параллельных) могла бы хоть что-то прояснить ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:27 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, SID=260 Первый delete который работает нормально . SID=295 Второй delete который виснет ( в v$session blocking_session_status='VALID ) v$lock Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:42 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
j2kmaverick2104, Вторичные ключи все проиндексированы? ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:46 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
j2kj2kmaverick2104, Вторичные ключи все проиндексированы? ? Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:53 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Но блокировки показывают, что это не так ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 15:54 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, j2k, Может я Вас не правильно понял . У этой таблице есть 2 foreign key references ( оба по столбцу ID у которого есть индекс в рамках данной таблице ). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 16:02 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104Решил запускать удаление из под разных сессий за разные дни но первая сессия сразу заблокировала вторую ... Почему так происходит ? Ты что запустил: Код: plsql 1.
из нескольких сессий и спрашиваешь почему все кроме первой висят??? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 16:40 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Не, там бы блокировка TX конкурировала ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 16:44 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
maverick2104Вячеслав Любомудров, j2k, У этой таблице есть 2 foreign key references ( оба по столбцу ID у которого есть индекс в рамках данной таблице ). Теперь я вас не пойму, у вас 2 столбца 1 индекс? можете структуру таблицы привести? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 16:48 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
SYmaverick2104Решил запускать удаление из под разных сессий за разные дни но первая сессия сразу заблокировала вторую ... Почему так происходит ? Ты что запустил: Код: plsql 1.
из нескольких сессий и спрашиваешь почему все кроме первой висят??? SY. Да нет конечно , в одной сессии я запустил: Код: plsql 1.
А во второй : Код: plsql 1.
j2kможете структуру таблицы привести? Структура Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 17:02 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Еще раз -- проверь, кто ссылается на эту таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 17:13 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
Вот эти колонки все проиндексированы (судя по вашим словам их должно быть 2)? Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 17:20 |
|
Паралельный DELETE
|
|||
---|---|---|---|
#18+
SYmaverick2104Решил запускать удаление из под разных сессий за разные дни но первая сессия сразу заблокировала вторую ... Почему так происходит ? Ты что запустил: Код: plsql 1.
из нескольких сессий и спрашиваешь почему все кроме первой висят??? SY. и тут пришол лесник и всех разогнал странно, что другие продолжают упорствовать в своих версиях ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 17:25 |
|
|
start [/forum/topic.php?fid=52&msg=39797315&tid=1882615]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 439ms |
0 / 0 |