Необходимо удалить одну треть данных из таблицы, содержащей данные 1,5 ТБ - PullRequest
0 голосов
/ 06 июля 2018

Имеют таблицу оракула с данными почти 1,5 ТБ. Необходимо удалить как минимум 0,5 ТБ данных из него. Это производственная таблица, в которой выполняется значительное количество команд записи. Каков наилучший и самый быстрый способ очистки этих данных.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

У нас та же проблема на работе.Наш план атаки - сделать онлайн-переопределение, чтобы разделить таблицу.Как только это будет сделано, соответствующие разделы могут быть отброшены.

В настоящее время мы настраиваем копию базы данных на тестовой машине для проверки подхода.

0 голосов
/ 06 июля 2018

"Очистить" = "удалить" = "удалить", я полагаю.

У вас есть несколько вариантов; Вот некоторые из них:

  • Разделена ли таблица? Я думаю, нет; в противном случае вам понадобятся truncate (или drop) разделы, которые вам больше не нужны, и это будет fast

    • Вы можете разделить его сейчас?
  • Другой вариант - буквально delete этих строк. Это создаст большую отмену .

    • эта опция, вероятно, довольно медленная
  • Или используйте CTAS (Создать таблицу как выбор) и создайте новую таблицу со строками, которые вы хотите сохранить; затем обрежьте (или, если вы можете себе это позволить, удалите) исходную таблицу и переместите строки назад (или, если вы удалили ее, переименуйте вновь созданную таблицу в старое, оригинальное имя). В зависимости от ограничений внешнего ключа это может быть не так просто.

    • этот занимает дополнительное место на диске. У тебя это есть? А как насчет ограничений?
  • Или удалите строки в chunks , используя цикл в процедуре PL / SQL. Чтобы сэкономить место для отмены, сделайте коммит внутри цикла (хотя и не слишком часто). ORA-01555 ( снимок слишком старый ) может появиться

    • удаление по частям - это нормально, если вас не беспокоит «все или ничего». Что делать, если удалить не удалось? Повлияет ли это на что-нибудь еще? Как?

Какой из них лучший ? Это вопрос миллиона долларов , и у меня нет ответа на него. Если возможно, импортируйте эту таблицу в свою среду тестирования и ... ну, test эти параметры. Тестирование в производстве не рекомендуется, верно?

...