|
Как правильно удалить записи регистра сведений через MS SQL? | ☑ | ||
---|---|---|---|---|
0
kumena
10.08.17
✎
10:44
|
слишком много записей в регистре, нужно удалить частично, через 1с очень долго получается.
Посмотрел через команду МассивИменМетаданных = Новый Массив(); МассивИменМетаданных.Добавить(Метаданные.РегистрыСведений.ГрафикиРаботыПоВидамВремени); СтруктБД = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных); получается 2 таблицы - регистрация изменений и основная. Непонятно почему их две, и зачем нужна таблица регистрации изменений, соответственно, не понятно какие изменения можно удалить. и как правильно написать запрос на T-SQL ? |
|||
1
Cyberhawk
10.08.17
✎
10:45
|
"Непонятно почему их две, и зачем нужна таблица регистрации изменений" // ИТС уже почитал?
|
|||
2
Cyberhawk
10.08.17
✎
10:46
|
Если удалять долго, то можно сохранить то, что удалять не надо, очистить весь РС и потом в него загрузить то, что сохранил до этого
|
|||
3
kumena
10.08.17
✎
10:53
|
> ИТС уже почитал?
нет, можешь ссылку дашь куда там смотреть? > Если удалять долго, то можно сохранить то, что удалять не надо, очистить весь РС и потом в него загрузить то, что сохранил до этого удаление и запись - это все процесс записи, они долго проходят потому что регистр раздулся. все сразу из 1с не удалить, никакой озу не хватит. а если частично, то можно просто не удалять то что нужно оставить. |
|||
4
Волшебник
модератор
10.08.17
✎
10:55
|
Пересоздать регистр в Конфигураторе, загрузить остатки.
|
|||
5
kumena
10.08.17
✎
10:57
|
> Пересоздать регистр в Конфигураторе, загрузить остатки.
какие остатки для регистра сведений? |
|||
6
Волшебник
модератор
10.08.17
✎
10:58
|
(5) Оставшиеся записи
|
|||
7
kumena
10.08.17
✎
11:02
|
(6) это тоже наверное не устроит, да и как потом обновляться с новым идентификатором регистра?
|
|||
8
Волшебник
модератор
10.08.17
✎
11:03
|
(7) Идентификатор оставить старый
|
|||
9
Йохохо
10.08.17
✎
11:03
|
(7) накатить из конфы поставщика
|
|||
11
kumena
10.08.17
✎
11:06
|
да, сейчас понял.
может это и быстрее будет, выгрузить 10 миллионов записей в xml, а потом загрузить, но я думаю что слишком много шансов что она вообще не осилит. |
|||
12
Волшебник
модератор
10.08.17
✎
11:07
|
(0) "и зачем нужна таблица регистрации изменений"
для планов обмена |
|||
13
mehfk
10.08.17
✎
11:07
|
(0)
Выгрузить что нужно оставить в xml или еще куда. Сделать TRUNCATE TABLE. Загрузить. PROFIT! |
|||
14
Numerus Mikhail
10.08.17
✎
11:08
|
Изменение данных напрямую через SQL является нарушением лицензионного соглашения!
|
|||
15
kumena
10.08.17
✎
11:10
|
> Выгрузить что нужно оставить в xml или еще куда.
ты себе представляешь xml файл на 10 миллионов записей? |
|||
16
kumena
10.08.17
✎
11:10
|
> Изменение данных напрямую через SQL является нарушением лицензионного соглашения!
спасибо, я в курсе |
|||
17
X Leshiy
10.08.17
✎
11:10
|
(15) 10 миллионов оставить надо, сколько тогда всех записей?!
|
|||
18
kumena
10.08.17
✎
11:11
|
+15 а главное какой клиент его прожевать сможет и за какое время?
|
|||
19
kumena
10.08.17
✎
11:11
|
30 с лишним
|
|||
20
X Leshiy
10.08.17
✎
11:11
|
(17) Нихуясеберегистр, извините.
|
|||
21
X Leshiy
10.08.17
✎
11:12
|
(19) Ну выгрузи 30 и снеси регистр.
|
|||
22
mehfk
10.08.17
✎
11:16
|
(15) У меня хорошее воображение.
|
|||
23
Волшебник
модератор
10.08.17
✎
11:17
|
(15) выгружай на SSD-диск
|
|||
24
Волшебник
модератор
10.08.17
✎
11:18
|
(23)+ или RAM-диск
|
|||
25
mehfk
10.08.17
✎
11:19
|
Не нравится выгружать - удаляй. DELETE FROM ... WHERE
|
|||
26
piter3
10.08.17
✎
11:19
|
А это разовая операция?
|
|||
27
kumena
10.08.17
✎
11:21
|
ну скажем так, двух разовая, сначала надо в тестовой базе убедиться что все хорошо!
|
|||
28
kumena
10.08.17
✎
11:23
|
я так и подозревал что вторая таблица для планов обмена. осталось только скрипт написать, сейчас пока более срочные есть задачи, а потом им займусь, но если кто напишет, то будет еще лучше.
|
|||
29
Йохохо
10.08.17
✎
11:26
|
(27) потом на тестовую накатываешь бэкап и тихой сапой переносишь в очищенную рабочую
|
|||
30
X Leshiy
10.08.17
✎
11:26
|
(28) А ты точно сварщик, или маску на стройке нашел?
|
|||
31
DmitrO
10.08.17
✎
11:26
|
Ничо не надо пересоздавать и перекладывать.
Надо просто удалить лишнее. Надо просто сделать обмены данными чтобы таблица регистрации изменений была пустая (если обмены данными используются и там вообще что-то есть). Далее удалять так. Перевести базу в Простую модель восстановления. Удалять записи обычным delete с нужными условиями, но делать это порциями, чтобы не сильно прирастал ЖТ. Потом вернуть полную модель восстановления и сбекапить базу. Все. Память клиента тут не причем. А сервер точно справится при любом размере памяти. |
|||
32
kumena
10.08.17
✎
11:32
|
(31)
> Надо просто удалить лишнее. да, я тоже за этот вариант, вижу его самым беспроблемным. Спасибо, план действий понятен! |
|||
33
DmitrO
10.08.17
✎
11:34
|
ГрафикиРаботыПоВидамВремени вероятно в ЗУП 2.5
Посмотрел его. Решение задачи с помощью прямого доступа к SQL может вообще не дать изюму ну или дать но небольшой, ибо и на 1С можно написать достаточно эффективно. |
|||
34
Ахмадинежад
10.08.17
✎
11:55
|
как-то обрезал большую базу средствами МС СКЛ...
как-то не срасталось всё, плюнул, взял обработку с ИТС - и просто подождал ) |
|||
35
DmitrO
10.08.17
✎
12:56
|
(14)а кто придумал эту чепуху? и почему все об этом рассказывают на этом форуме?
|
|||
36
Ёпрст
10.08.17
✎
13:01
|
(35) обычно пишут те, кто qa в глаза не видел
|
|||
37
Lama12
10.08.17
✎
13:29
|
(35) (36) Ну раньше этот запрет точно был. Может сейчас и поменяли.
|
|||
38
GANR
10.08.17
✎
13:48
|
(8) Проще TRUNCATE TABLE. Чем удалить, потом сравнением/объединением переносить.
|
|||
39
Timon1405
10.08.17
✎
14:12
|
(35)(36) http://v8.1c.ru/predpriyatie/questions_licence.htm#mvv
п. 65 |
|||
40
rudnitskij
10.08.17
✎
14:26
|
А почему нельзя программно средствами 1с удалить ненужные записи? По одной в цикле, а не весь регистр сразу
|
|||
41
kumena
10.08.17
✎
14:34
|
> А почему нельзя программно средствами 1с удалить ненужные записи? По одной в цикле, а не весь регистр сразу
в первом посте написал - долго получается, в лучшем случае через месяц. > Решение задачи с помощью прямого доступа к SQL может вообще не дать изюму ну или дать но небольшой, ибо и на 1С можно написать достаточно эффективно. почему? обычно везде пишут о сказочной скорости удаления. но я конечно попробую другими порциями еще. |
|||
42
Timon1405
10.08.17
✎
14:36
|
(40) есть платформенные накладные расходы на удаление записей: например, поиск ссылок на объект, если он стоит как ведущее измерение в регистре. в том числе поэтому 1С и не рекомендует прямого доступа к СУБД.
|
|||
43
H A D G E H O G s
10.08.17
✎
14:38
|
(42) Ты путаешь.
|
|||
44
Фрэнки
10.08.17
✎
14:38
|
(41) транзакциями не пользуешься?
|
|||
45
H A D G E H O G s
10.08.17
✎
14:39
|
Автор, ты не поверишь, но и в sql тоже будет долго :-)
|
|||
46
H A D G E H O G s
10.08.17
✎
14:39
|
Если накладывать хоть какие-нибудь условия на отбор при удалении.
|
|||
47
kumena
10.08.17
✎
14:40
|
(44) это вроде в 7.7 рулило, а на восьмерке прироста не дает.
|
|||
48
H A D G E H O G s
10.08.17
✎
14:40
|
А так - можно поотключать индексивароние-ведущесть у измерений и ресурсов - и вперед, типовыми средствами.
|
|||
49
kumena
10.08.17
✎
14:42
|
(46) понятно, т.е. все меняет то, что устанавливается отбор.
|
|||
50
H A D G E H O G s
10.08.17
✎
14:42
|
Ну и job в sql на дефраг индеска и апдейт статистики по этим двум таблицам раз в 5 минут.
|
|||
51
kumena
10.08.17
✎
14:44
|
в целом все понятно! всем спасибо!
|
|||
52
rudnitskij
10.08.17
✎
17:58
|
(51) тогда закрывайте тему.
А то мы вам напишем тут)) |
|||
53
Злопчинский
10.08.17
✎
18:35
|
(36) дикари , что с них взять ... ;+)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |