gifts2017

Очистка таблиц SQL

Опубликовал lion-killer Bilous (lion-killer) в раздел Обработки - Свертка базы

Очередная обработка для быстрой очистки таблиц SQL.

Главное отличие данной разработки - это возможность самому выбирать необходимые таблицы, а также, что более важно, посмотреть результирующий запрос к базе данных. Лично меня немного пугают обработки для работы с SQL напрямую, которые не показывают чего они делают. Также в качестве бонуса небольшая опция, которая позволяет сделать Shrink базы после выполнения очистки. Обработка физически меняет таблицы SQL! Помните об этом и пользуйтесь с осторожностью.

 

20.08.2012 - Добавил возможность изменения таймаута при выполнении длительных операций (по умолчанию 30 сек.)

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ОчисткаТаблицSQL.epf
.epf 13,80Kb
20.08.12
102
.epf 13,80Kb 102 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Fomix (fomix) 13.08.12 17:46
А как насчет ссылочной целостности?!
2. lion-killer Bilous (lion-killer) 13.08.12 19:30
Ссылочная целостность не контролируется. Обработка создана для очистки ненужных (и очень больших) таблиц.
3. Денис (Den_D) 15.08.12 11:34
Да иногда надо в тестовой базе почистить например "Все документы" и оставить заполненными справочники и др.
Тупо иттерациями по всем документам с непосредственным удалением все равно получается очень долго. А вот так зашел, почистил таблички и вуаля.
4. Алекс Ю (AlexO) 15.08.12 11:42
(3) Den_D,
очередной студент со своим институтским уставом пришел в монастырь 1С?
А вот так зашел, почистил таблички и...

.. и оставил кучу мусора в базе в связанных-перекрестных таблицах, который ничем уже не вычистишь. А оно еще и аукнутся может потом, т.к. 1С использует одни и те же названия таблиц.
Тупо иттерациями по всем документам с непосредственным удалением

Тупо, по-студенчески, открываете "Универсальный обмен данными в формате XML", тупо входящую в типовые; тупо жмете на вкладку "Удаление данных", тупо выбираете на удаление нужные справочники-регистры-документы-ПВХ, и система за считанные секунды "умно" удаляет все и везде.
А студенты тупо смотрят, и не понимают, в чем подвох :)
5. Денис (Den_D) 15.08.12 11:48
Тупо век живи - век учись)))
Спасибо за урок))) (с) Ваш студент
6. Алекс Ю (AlexO) 15.08.12 12:00
(5) Den_D,
:)
вы хоть проверили? или "тупо, по-студенчески", записали и забыли? :)
7. Денис (Den_D) 15.08.12 12:06
(6) AlexO, я посмотрел код универсального обмена, и понял вот что, да удаление документов таким образом будет действительно более корректным, НО это не будет быстро, потому что "Объект.Удалить()".

Бывает что нужна база без документов, в которой ссылочная целостность не так важна. Основная задача такой базы что бы некоторые пользователи могли бы там потренироваться на реальных справочниках. Все же конечно для этой цели можно было бы выгрузить все эти справочники этим же обменом XML, что бы все было красиво, но это в любом случае очень долго для такой тривиальной задачи.
8. Алекс Ю (AlexO) 15.08.12 12:13
(7) Den_D,
НО это не будет быстро, потому что "Объект.Удалить()"

а вы попробуйте, и сравните ощущения.
Бывает что нужна база без документов, в которой ссылочная целостность не так важна.

а еще - прочитайте примечание вверху вкладки "Удаление данных" в этой обоработке :)
9. lion-killer Bilous (lion-killer) 15.08.12 12:13
Еще раз повторюсь: обработка создана для очистки очень больших таблиц. Насчет студентов вы неправы. Вы работали с базами данных объемом свыше 120 Гб? Когда одна таблица содержит свыше миллиона записей? Удаление записей такой таблицы займет не считанные секунды, а часы, а, учитывая проверку ссылочной целостности, удаление может занять все выходные.

Приведу пример: Есть рабочая база в которой работают пользователи. Задача: создать 10 тестовых баз для разработки и отладки. Нехитрые математические вычисления дадут нам 120Гб * 10 = ~1,2Тб на сервере баз данных. А сервер, как известно, не резиновый. Потому при создании копии рабочей базы неплохо бы определить, а нет ли в базе таблиц существенно увеличивающих ее размер и не критичных для выполнения разработки и отладки? Такими таблицами, например могут быть справочник "Хранилище дополнительной информации" или регистр сведений "Версии объектов".
10. Алекс Ю (AlexO) 15.08.12 12:24
(9) lion-killer,
а, учитывая проверку ссылочной целостности

еще раз - прочитайте примечание вверху вкладки "Удаление данных" в этой обоработке
Вы работали с базами данных объемом свыше 120 Гб?

т.е. для вас тестовая база "для развлечений" - только от 120 ГБ?
А сделать чистую базу и перенести туда минимально нужное количество документов обработкой "перенос между идентичными" - это не по-хулигански? По-пацански - это все сломать, а потом развести руками? :)
Задача: создать 10 тестовых баз для разработки и отладки.

"Одно яйцо варится 5 минут. Сколько нужно времени, чтобы сварить 3 яйца?" - Ваш ответ: 15 минут.
неплохо бы определить, а нет ли в базе таблиц существенно увеличивающих ее размер и не критичных

т.е. судьба ссылочной целостности при этом вас не волнует? Так на кой тогда вам такая "тестовая" база нужна, если в ней - 120 ГБ мусора?
Здесь есть обработки, создающие такой документный мусор со скоростью звука в базе. И только по выбранным видам.
11. lion-killer Bilous (lion-killer) 15.08.12 12:36
(10) AlexO, Сказывается отсутствие опыта работы в крупных компаниях, а также опыта групповой разработки. Вы не разбираетесь в предмете спора.
12. Денис (Den_D) 15.08.12 12:48
(8) AlexO, удаление только лишь документов "Счет на оплату покупателя" заняло 30 минут
база маленькая, документов было 6820 шт. всего
13. Алекс Ю (AlexO) 15.08.12 12:54
(11) lion-killer,
думаете, вы первый "разбирающийся", который курочит базы 1С? :)
делайте хотя бы свои эксперименты не на рабочей, чтобы о вашем позоре никто не узнал :)
14. Алекс Ю (AlexO) 15.08.12 12:55
(12) Den_D,
у меня 3тыс удаляет за минуту.
15. Денис (Den_D) 15.08.12 13:01
(14) AlexO, То ли лыжи не едут, то ли я...
16. Кирилл Логинов (kirlog) 22.08.12 13:50
Мне вот кажется, что чистить таким образом можно только табличные части документов и справочников и то сильно с оглядкой на взаимосвязи табличных частей, которые широко используются в современных конфигурациях 1С.
Ну может быть еще независимые непериодичные регистры сведений, такие, как "Штрихкоды" например.

В других случаях опасность возникновения серьезных, неустранимых проблем в базе для меня лично более значима чем время выполнения очистки данных штатными средствами.
17. Andrey Tey (Bitnikov) 09.01.13 14:43
Спасибо!
Лично мне пригодилась.
Я чищу достаточно большой (больше млн. записей) независимый регистр сведений, без явных ссылок на какие либо объекты. В котором ведется аудит действий пользователей, более детальный чем журнал регистрации. Этот регистр не нужен в копиях баз. Чистка кодом 1С вываливается с ошибкой - не хватает памяти на сервере.
А эта чистка чистит без ошибок, т.к. сразу на сервере СУБД.
18. sbv2005 (sbv2005) 09.01.13 14:48
Очень полезная вещь! Эффективность подтверждена! Для независимых регистров сведений самое то.
19. Андрей (AKV77) 14.02.14 14:48
Спасибо за обработку !
Почистил базу УПП, оставив только справочники и необходимые регистры сведений. Нужна была именно такая "чистая" база.
Мой алгоритм:
1.Почистил регистры накопления
2.Регистры расчета
3.Регистры бухгалтерии
4.Регистры сведений (выборочно)
5.Документы
6.Журналы документов
7.Необходимые справочники

средствами SQL также провел необходимое обслуживание БД.

Далее в тех справочникам где должны быть ссылки на документы почистил соответствующие реквизиты.

В данный момент тестирую, то что получилось.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа