|
Как завершить отсоединение партиции (Asynchronous Partition Detach) ?
|
|||
---|---|---|---|
#18+
Здравствуйте, столкнулся с неприятной проблемой, которая тормозит работу. В базе в разрезе таблицы организовано партицированное хранение данных (ежедневное) появилась необходимость очистки старых данных. Бала написана процедура для автоматического отсоединение партиции от таблицы и удалении ненужных данных. но довольно часто в последнее время возникает одна ошибка: Код: plaintext 1.
тайминг между следующим запуском процедуры может быть от нескольких секунд до нескольких минут. в процедуре уже был предусмотрен таймер, который следующую партицию отсоединяет через несколько секунд. Есть ли другие варианты, чтобы избавиться в принципе от этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 16:15 |
|
Как завершить отсоединение партиции (Asynchronous Partition Detach) ?
|
|||
---|---|---|---|
#18+
AVRomanenko, Попробуйте так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
DETACH - операция асинхронная. Надо ждать, пока не пропадут записи из системного каталога, указывающие на то, что операции обслуживания не закончились. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 17:04 |
|
Как завершить отсоединение партиции (Asynchronous Partition Detach) ?
|
|||
---|---|---|---|
#18+
Mark Barinstein, а можете, пожалуйста, пояснить, что именно делает этот код, и в каком месте его можно использовать. то есть, в BEGIN у меня сразу начинает работать цикл по курсору. вот полный код процедуры Код: sql 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. 94.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 17:25 |
|
Как завершить отсоединение партиции (Asynchronous Partition Detach) ?
|
|||
---|---|---|---|
#18+
AVRomanenko, Код можно использовать после DETACH и COMMIT. Код тормозит выполнение до тех пор, пока таблицу с отключённой секцией не станет возможным удалить. Предполагается, что на секционированную таблицу не выдаётся несколько параллельных отключений разных секций. Иначе код надо модифицировать так, чтоб предварительно запоминать ID отключаемой секции (не имя), и использовать этот запомненный ID дополнительным предикатом при проверке статусов. Иными словами: нельзя удалять таблицу с отключённой секцией, пока в системном каталоге есть запись про эту секцию с одним из указанных статусов в составе секционированной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 22:24 |
|
Как завершить отсоединение партиции (Asynchronous Partition Detach) ?
|
|||
---|---|---|---|
#18+
AVRomanenko Здравствуйте, столкнулся с неприятной проблемой, которая тормозит работу. В базе в разрезе таблицы организовано партицированное хранение данных (ежедневное) появилась необходимость очистки старых данных. Бала написана процедура для автоматического отсоединение партиции от таблицы и удалении ненужных данных. но довольно часто в последнее время возникает одна ошибка: Код: plaintext 1.
тайминг между следующим запуском процедуры может быть от нескольких секунд до нескольких минут. в процедуре уже был предусмотрен таймер, который следующую партицию отсоединяет через несколько секунд. Есть ли другие варианты, чтобы избавиться в принципе от этого? А на уровне аппликации данные чистятся? Если да, то присмотритесь к Insert Time Clustering таблицам. Я так понимаю, данные у вас "исторические" (логи в том или ином виде). Они и пишутся как в режиме "APPEND", и удаляются, наверное, в порядке добавления. ITC дадут: - co-location последовательно приходящих записей. Они и добавляться, и последовательно читаться, и, что тоже важно, удаляться будут существенно быстрее. - возможность откусывать освободившиеся экстенты он-лайн реоргом с опцией "RECLAIM EXTENTS ONLY ALLOW WRITE ACCESS" - но в принципе и reclaim не нужен, т.к. оказавшись пустыми экстенты ре-используются. По внутренним механизмам ITC таблицы работают на движке MDC таблиц, вот только отсутствует риск получить непредсказуемо большое количество почти пустых/полу-пустых экстентов/групп экстентов (по измерениям с большим количеством значений) - записи не разбрасываются, а "пакуются" в страницы/экстенты одна за одной. Смотреть - поссылкам про ITC из доки - https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.admin.partition.doc/doc/c0007201.html ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2020, 15:45 |
|
|
start [/forum/topic.php?fid=43&msg=40008123&tid=1600164]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 137ms |
0 / 0 |