|
v7: Выгрузка данных из SQL-базы | ☑ | ||
---|---|---|---|---|
0
vadim777
15.11.16
✎
18:34
|
Конфигурация - ПиБ для Укры, на SQL 2008 под Win SRV 2008. Размер базы 73Гб. Делаю выгрузку, в строке состояния сообщение "Установка соединения с сервером базы данных", и так уже более 2 часов. Загрузка ЦП - в среднем 32%. Сам конфигуратор в диспетчере задач - не отвечает.
Кто работал с такими огромными базами - это нормальное состояние, имеет смысл ждать? Или завис? PS: попутный вопрос - база расположена на динамическом томе. Загрузка файла выгрузки из рабочей базы длилась больше обычного раза в 3. Динамический том намного медленнее базового? |
|||
1
Amra
15.11.16
✎
19:36
|
Не понял, что за выгрузка? В конфигураторе - "выгрузить ИБ" или что?
|
|||
2
vadim777
15.11.16
✎
19:43
|
(1) Ага..
|
|||
3
Джинн
15.11.16
✎
19:45
|
(0) Упрется в размер файла и отвалится.
|
|||
4
pavlika
15.11.16
✎
19:50
|
Если не секрет, то выгрузку для чего делаете?
|
|||
5
Amra
15.11.16
✎
19:52
|
(3) На NTFS? С чего бы?
(4) Тоже интересно |
|||
6
vadim777
15.11.16
✎
19:54
|
(4,5) Не могу сделать удаление помеченных - не хватает памяти. Решил попробовать в dbf, кусками.
|
|||
7
Klesk666
15.11.16
✎
19:56
|
(0) у меня размер 30 гиг, выгрузка в dt не более 30 минут, может сервер(ы) слабоват(ы)?
(6) ищи нестандартные обработки удаления |
|||
8
Amra
15.11.16
✎
19:58
|
(6) Сильно сомневаюсь что развернется в ДБФ
|
|||
9
vadim777
15.11.16
✎
20:08
|
(7) Может и слабоват компик - проц Q6600, 4Гб ram. Диски правда большие 500гб и 3тб. Вот диск на 3тб - динамический. Может он и тормозит?
|
|||
10
FN
15.11.16
✎
20:28
|
Это 7.7? Такой размер в dbf никто не выгружает - не взлетит.
Удаляй прямыми запросами. Ну или штатно через удалитьобъекты() порциями. |
|||
11
vadim777
15.11.16
✎
20:32
|
(10) Штатно порциями не получается - на этапе анализа отваливается с сообщением о нехватке памяти.
А прямыми запросами - ой боюсь-боюсь... |
|||
12
Slypower
16.11.16
✎
10:31
|
16 Гб штатно выгружается часа 3, так же в зависшем состоянии. Потом загрузке в дбф, база весит гига 4, пашет. Там же фалов много, но ни один не превышает 2 Гб
|
|||
13
Ёпрст
16.11.16
✎
10:37
|
(6) ну, секунд за 20 удалится всё.
|
|||
14
Ёпрст
16.11.16
✎
10:39
|
если хочешь штатненько, то для начала, отключи ЖР в пофигураторе - будет раз в 10 быстрее происходить удаление.
|
|||
15
Фрэнки
16.11.16
✎
10:40
|
(12) :) сказочник. Это же все зависит от того, что в самой базе, сколько и каких регистров налупили с оборотами и остатками, итогами и для бухии тоже.
У тебя тоже ПиБ была? |
|||
16
Slypower
16.11.16
✎
12:43
|
(15) не, я про ТиС) Просто пример)
|
|||
17
пипец
16.11.16
✎
12:47
|
Если много периодических данных их можно порезать (это раз)
- в скуль ванрианте прямыми все нормально удаляется |
|||
18
Это_mike
16.11.16
✎
13:00
|
(15) выгружается-то без итогов...
(0) правильно - сделать пряямыми запросами... |
|||
19
varelchik
16.11.16
✎
13:15
|
Дарю.
лДата=глДатаЗапрета; Пока лДата<=ПолучитьДатуТА() Цикл Текст=" |select |j.iddoc [Док $Документ], |j.iddocdef Док_вид |from _1sjourn j (nolock) |WHERE |j.ismark=1 |and |j.date_time_iddoc<=:ВыбДата~ |"; ИТЗ=СоздатьОбъект("ИндексированнаяТаблица"); Список=СоздатьОбъект("СписокЗначений"); Запрос.УстановитьТекстовыйПараметр("ВыбДата",лДата); Состояние("Удаление документов"); Запрос.ВыполнитьИНструкцию(Текст,ИТЗ); ИТЗ.Выгрузить(Список,,"Док"); УдалитьОбъекты(Список,1); лДата=ДобавитьМесяц(лДата,12); КонецЦикла; |
|||
20
varelchik
16.11.16
✎
13:16
|
И ни каких перегрузок памяти.
Все красиво удаляется. правда долго. но это ничего. |
|||
21
Ёпрст
16.11.16
✎
13:23
|
(19) дык ему не только доки, ему все объекты..
Да и УдалитьОбъекты не быстрый метод. |
|||
22
varelchik
16.11.16
✎
13:26
|
так я понял что ему документы надо грухнуть
|
|||
23
Ёпрст
16.11.16
✎
13:27
|
(22) см. (6)
|
|||
24
Это_mike
16.11.16
✎
13:28
|
(22) не только. всех помеченых объектов
|
|||
25
Slypower
16.11.16
✎
13:43
|
На просторах есть обработка: удаление доков в средствами SQL.
Процедура Удалить() SQL_db = СоздатьОбъект("ODBCDatabase"); SQL_db.Attach1C(); рс = СоздатьОбъект("ODBCRecordset"); Сообщить("Обработка таблиц документов"); Для Счетчик = 1 По Докум.РазмерСписка() Цикл //по таблицам документов Если Докум.Пометка(Счетчик) = 0 Тогда Продолжить; КонецЕсли; ВидДок = Докум.ПолучитьЗначение(Счетчик); Сообщить(" ..." + ВидДок + "..."); Состояние("...удаляются строки документов..."); ТекстЗапроса = " |Delete | Док |FROM | $ДокументСтроки." + ВидДок.Идентификатор + " as Док |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = Док.IDDoc |WHERE | _1SJourn.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...строки удалены"); Исключение Сообщить("Запрос по строкам документов вида " + ВидДок.Идентификатор + " не выполнился!", "!"); КонецПопытки; Состояние("...удаляются шапки документов..."); ТекстЗапроса = " |Delete | Док |FROM | $Документ." + ВидДок.Идентификатор + " as Док |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = Док.IDDoc |WHERE | _1SJourn.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...шапки удалены"); Исключение Сообщить("Запрос по шапкам документов вида " + ВидДок.Идентификатор + " не выполнился!", "!"); КонецПопытки; КонецЦикла; //по табоицам документов Состояние(""); Сообщить("Обработка таблиц регистров"); Для СчетчикРег = 1 По спРегистров.РазмерСписка() Цикл //по таблицам регистров ВидРег = спРегистров.ПолучитьЗначение(СчетчикРег); Сообщить("..." + ВидРег + "..."); ТекстЗапроса = " |Delete | Рег |FROM | $Регистр." + ВидРег.Идентификатор + " as Рег |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = Рег.IDDoc |WHERE " + УсловиеПоВидамДок() + " | AND | _1SJourn.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...движения удалены"); Исключение Сообщить("Запрос по регистру вида " + ВидРег + " документов вида " + ВидДок.Идентификатор + " не выполнился!", "!"); КонецПопытки; КонецЦикла; //по таблицам регистров //смотрим общие таблицы по всем видам Сообщить("Обработка общих таблиц"); Сообщить(" ...удаляются проводки..."); ТекстЗапроса = " |Delete | Пров |FROM | _1SENTRY as Пров |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = Пров.DocID |WHERE " + УсловиеПоВидамДок() + " | AND | _1SJourn.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...проводки удалены"); Исключение Сообщить("Запрос по проводкам документов не выполнился!", "!"); КонецПопытки; Сообщить(" ...удаляются периодические реквизиты, заполняемые документами..."); ТекстЗапроса = " |Delete | Конст |FROM | _1SCONST as Конст |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = Конст.DocID |WHERE " + УсловиеПоВидамДок() + " | AND | _1SJourn.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка тз = рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...периодика удалена"); Исключение Сообщить("Запрос по периодике не выполнился!", "!"); КонецПопытки; Сообщить(" ...удаляются перекрестные ссылки..."); ТекстЗапроса = " |DELETE | Док |FROM | _1scrdoc as Док |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = SUBSTRING(Док.ParentVal, 7, 9) |WHERE " + УсловиеПоВидамДок() + " | AND | Док.child_date_time_iddoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...перекрестные ссылки удалены"); Исключение Сообщить("Запрос по перекрестным ссылкам и графам отбора не выполнился!", "!"); КонецПопытки; Сообщить(" ...удаляются операции..."); ТекстЗапроса = " |DELETE | Док |FROM | _1soper as Док |INNER JOIN | _1SJourn ON _1SJourn.IDDoc = Док.DocID |WHERE " + УсловиеПоВидамДок() + " | AND | Док.date_time_docid BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...операции удалены"); Исключение Сообщить("Запрос по таблице операций не выполнился!", "!"); КонецПопытки; Сообщить(" ...удаляются ссылки из журнала документов..."); ТекстЗапроса = " |Delete | _1SJourn |FROM | _1SJourn |WHERE " + УсловиеПоВидамДок() + " | AND | _1SJourn.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ |"; рс.УстановитьТекстовыйПараметр("НачДата", НачДата); рс.УстановитьТекстовыйПараметр("КонДата", КонДата); Попытка рс.ВыполнитьИнструкцию(ТекстЗапроса); Сообщить("...ссылки удалены"); Исключение Сообщить("Запрос по ссылкам документов не выполнился!", "!"); КонецПопытки; Состояние("...Обрезка лога базы данных..."); // обрезка ЛОГа базы sql="BACKUP LOG "+SQL_db+" | WITH TRUNCATE_ONLY"; RecSet=рс.Execute(sql); sql="DBCC SHRINKDATABASE | ("+SQL_db+", TRUNCATEONLY)"; RecSet=рс.Execute(sql); Сообщить("Не забудьте запустить Тестирование и Исправление!"); Предупреждение("Обработка закончена!"); КонецПроцедуры Только это пробовалось на ТиС, удаляет все доки. Быстро. Переносил ТА на 2000г. |
|||
26
Ёпрст
16.11.16
✎
13:50
|
(25) еще один не читатель
|
|||
27
Эльниньо
16.11.16
✎
14:36
|
(0) 1cpp.dll есть?
|
|||
28
Slypower
16.11.16
✎
14:36
|
Чем мог, тем помог))) может что и пригодилось)))
|
|||
29
Эльниньо
16.11.16
✎
14:47
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |