|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
Ребята всем привет! Нужен ваш совет. Есть таблица размером в 800 Гб. Она партицирована по полю dDate (тип дата). Нужно удалить все записи у которых dDate < 01.01.17. Учитывая размер таблицы, оператор delete будет работать очень долго. Думал над таким вариантом: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Но при таком варианте пропадает партицирование. Как бы сделать так, чтобы партицирование не слетели по оставшимся записям? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 20:07 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
LandgrafОна партицирована по полю dDate (тип дата).С какой целью партиционировали таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 20:10 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
-2-LandgrafОна партицирована по полю dDate (тип дата).С какой целью партиционировали таблицу? На сколько мне известно, на основании этого поля строятся отчёты. Поле хранит дату загрузки данных. Т.е. за каждый день присутствует N записей. Таблица была сделана до меня, поэтому почему ее партиционировали.... Для скорости наверное :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 20:17 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
Landgraf, Транкейтить партиции? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 21:23 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
Помолясь и запасясь бэкапом... Код: 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. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2019, 00:32 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
Ребята всем спасибо за ответы. В итоге сделал так: Отобрал все необходимые партиций, сделал altet table truncate partition, а потом alter table drop partition. После того, как удалил данные, теперь нужно уменьшить таблицу, скорректировать уровень HWM. Я так понимаю можно сделать либо: Код: plsql 1.
Либо Код: plsql 1.
Во втором варианте нужно будет ещё индексы перестроить и пересобрать статистику. Какой вариант предпочтительней? Таблица весит около 400Гб, партицирована. В оракловой доке написано, что shrink ужимает неиспользуемое пространство с низу и с верху HWM. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:33 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
Landgrafнужно уменьшить таблицу, скорректировать уровень HWMHWM - это свойство сегмента, а не объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:48 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
ElicLandgrafнужно уменьшить таблицу, скорректировать уровень HWMHWM - это свойство сегмента, а не объекта. Да, есть такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:53 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
andrey_anonymous, drop partition update indexes не уменьшит число листьев индекса да и увеличит время выборки по глобальным индексам. UPDATE != REBUILD. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 17:15 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
LandgrafРебята всем спасибо за ответы. В итоге сделал так: Отобрал все необходимые партиций, сделал altet table truncate partition, а потом alter table drop partition. После того, как удалил данные, теперь нужно уменьшить таблицу, скорректировать уровень HWM. Я так понимаю можно сделать либо: Код: plsql 1.
Либо Код: plsql 1.
Во втором варианте нужно будет ещё индексы перестроить и пересобрать статистику. Какой вариант предпочтительней? Таблица весит около 400Гб, партицирована. В оракловой доке написано, что shrink ужимает неиспользуемое пространство с низу и с верху HWM. пересоберите global statistics и перестройте global indexes, если есть. больше ничего делать не нужно. truncate partition был лишним. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 17:38 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
SYdrop partition update indexes не уменьшит число листьев индекса Не уменьшит - в сравнении с ЧЕМ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 18:14 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
andrey_anonymousНе уменьшит - в сравнении с ЧЕМ? C rebuild. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 18:16 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
SYC rebuild. В сравнении с rebuild глобального индекса по крупной таблице некоторое падение производительности и последующая подчистка orphanned ночным джобиком - сущая ерунда с точки зрения доступности системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 19:05 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
andrey_anonymousпоследующая подчистка orphanned ночным джобиком В смысле ночным index rebuild? Хорошо когда не 24x7 - у меня удаление soft deleted index keys получаетя только когда release. Проверить насколько дополнительный предикат проверки на orphaned влияет на производительность все руки не доходят. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 20:08 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
SYandrey_anonymousпоследующая подчистка orphanned ночным джобиком В смысле ночным index rebuild? DBMS_PART.CLEANUP_GIDX ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 14:35 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
Коллеги, вы сильно усложняете всё. Landgraf Ребята всем привет! Нужен ваш совет. Есть таблица размером в 800 Гб. Она партицирована по полю dDate (тип дата). Нужно удалить все записи у которых dDate < 01.01.17. Учитывая размер таблицы, оператор delete будет работать очень долго. Думал над таким вариантом: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Но при таком варианте пропадает партицирование. Как бы сделать так, чтобы партицирование не слетели по оставшимся записям? Будьте проще. 1. смОтрите скрипт создания вашей оригинальной таблицы (со всеми индексами, констрэйнтами и т.д.). Копируете его целиком. (заменяете названия индексов и констрэйнтов, дописывая 1 в конце) 2. Вместо Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
-- пишете Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
3. собираете статистику Код: plsql 1. 2. 3. 4. 5. 6.
4. Переименовываете таблички Код: plsql 1. 2.
4.1 можете сверить данные в табличках всякими интерсектами и минусами для спокойствия души. 5.Дропаете старую таблицу с высвобождением места Код: plsql 1.
6. переименовываете все те индексы и констрэйнты, которым добавили 1 в пункте 1, обратно в оригинальные названия. Код: plsql 1.
как-то так. без лишней головной боли, с сохранением партиций и прочей структуры таблицы, корректным высвобождением места (без "хвостов" от шринкования ) и т. д., и т. п. ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 01:01 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
FogelБудьте проще. как говорила моя не по годам мудрая соседка по парте классе в шестом, "просто даже мухи не еб-ся". 2e12 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 06:56 |
|
Удалить записи с сохранением партиций
|
|||
---|---|---|---|
#18+
FogelКоллеги, вы сильно усложняете всё... Ты не упомянул о следующих шагах: 1. Не забыть дать все необходимые права на созданные заново таблицы поскольку при переименовании объекта теряются и права на него. 2. Проверить не стали ли объекты, каким-либо образом использующие пересоздаваемые таблицы, инвалидными и, соответственно, перекомпилировать эти объекты. 3. Не забыть про foreign key constraints в других таблицах, завязанные на пересоздаваемые таблицы. 4. И главное - без downtime, пусть даже минимального, все равно не обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 21:50 |
|
|
start [/forum/topic.php?fid=52&fpage=84&tid=1882801]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 148ms |
0 / 0 |