#0
by KingDzen
Коллеги, добрый день! Крутую штуку обнаружил, на выяснение которой ушло несколько рабочих дней: Условие: 1С:Предприятие 8.2 (8.2.15.319) размер ее составляет 230 Гб после шринка. есть документ РеализацияТоваров, в нем три строки и он сделал три движения по регистру ПродажиКомпании. Выполняю код, чтобы очистить движекния по данному регистру: 1С показывает, что у этого документа нет движений по данному регистру. НО ЭТО ВРАНЬЕ!!! Движения есть! Правда 1С про них ничего нам не говорит. Видимо скрывает, чтобы сберечь наши нервы. Лезу на скуле в оборотную таблицу этого регистра _AccumRgTn6629 и вижу эти строки, но с нулевыми ресурсами. Эти движения абсолютно не влияют на обороты так как все ресурсы у них - нулевые. И все бы ничего, но они занимают место не хуже обычных движений. Индексы на эту таблицу тоже значительно больше, чем без них. К счастью сама 1С удаляет эти строки с случае рестуктуризации таблиц регистра. В моем случае это случилось после смены типа измерения с ДокументСсылка на ДокументСсылка.ЗаказПокупателя почти случайно. Не все изменения структуры регистра приведут к реструктуризации, но именно эти приводят точно. Можно еще использовать такую нереграментированную штуку : delete from _AccumRgTn6629 where _Fld6620 = 0 and _Fld6621 = 0 and _Fld6622 = 0 and _Fld7477 = 0 но как ты понимаешь это является нарушением лицензионного соглашения 1С :) Ну и что с этого, спросишь ты меня. Да, ничего особенного, но эти действия позволили уменьшить размер нашей базы на 45 гигобайт! А также повысить скорость работы отчетов по продажам не десятки процентов. Все это сравнительно бесплатно и является безусловно "низко висящим фруктом". Одно действие приводит к огромной экономии дискового пространства, ускорению регламентного обслуживания базы и уменьшению времени выполнения отчетов. А у тебя есть оборотные регистры в конфигурации? :) Скажите, может я Америку открыл? Нигде не смог найти информацию о подобном поведении системы. Спасибо!
#0
by KingDzen
Коллеги, добрый день! Крутую штуку обнаружил, на выяснение которой ушло несколько рабочих дней: Условие: 1С:Предприятие 8.2 (8.2.15.319) размер ее составляет 230 Гб после шринка. есть документ РеализацияТоваров, в нем три строки и он сделал три движения по регистру ПродажиКомпании. Выполняю код, чтобы очистить движекния по данному регистру: 1С показывает, что у этого документа нет движений по данному регистру. НО ЭТО ВРАНЬЕ!!! Движения есть! Правда 1С про них ничего нам не говорит. Видимо скрывает, чтобы сберечь наши нервы. Лезу на скуле в оборотную таблицу этого регистра _AccumRgTn6629 и вижу эти строки, но с нулевыми ресурсами. Эти движения абсолютно не влияют на обороты так как все ресурсы у них - нулевые. И все бы ничего, но они занимают место не хуже обычных движений. Индексы на эту таблицу тоже значительно больше, чем без них. К счастью сама 1С удаляет эти строки с случае рестуктуризации таблиц регистра. В моем случае это случилось после смены типа измерения с ДокументСсылка на ДокументСсылка.ЗаказПокупателя почти случайно. Не все изменения структуры регистра приведут к реструктуризации, но именно эти приводят точно. Можно еще использовать такую нереграментированную штуку : delete from _AccumRgTn6629 where _Fld6620 = 0 and _Fld6621 = 0 and _Fld6622 = 0 and _Fld7477 = 0 но как ты понимаешь это является нарушением лицензионного соглашения 1С :) Ну и что с этого, спросишь ты меня. Да, ничего особенного, но эти действия позволили уменьшить размер нашей базы на 45 гигобайт! А также повысить скорость работы отчетов по продажам не десятки процентов. Все это сравнительно бесплатно и является безусловно "низко висящим фруктом". Одно действие приводит к огромной экономии дискового пространства, ускорению регламентного обслуживания базы и уменьшению времени выполнения отчетов. А у тебя есть оборотные регистры в конфигурации? :) Скажите, может я Америку открыл? Нигде не смог найти информацию о подобном поведении системы. Спасибо!
#0
by KingDzen
Коллеги, добрый день! Крутую штуку обнаружил, на выяснение которой ушло несколько рабочих дней: Условие: 1С:Предприятие 8.2 (8.2.15.319) размер ее составляет 230 Гб после шринка. есть документ РеализацияТоваров, в нем три строки и он сделал три движения по регистру ПродажиКомпании. Выполняю код, чтобы очистить движекния по данному регистру: 1С показывает, что у этого документа нет движений по данному регистру. НО ЭТО ВРАНЬЕ!!! Движения есть! Правда 1С про них ничего нам не говорит. Видимо скрывает, чтобы сберечь наши нервы. Лезу на скуле в оборотную таблицу этого регистра _AccumRgTn6629 и вижу эти строки, но с нулевыми ресурсами. Эти движения абсолютно не влияют на обороты так как все ресурсы у них - нулевые. И все бы ничего, но они занимают место не хуже обычных движений. Индексы на эту таблицу тоже значительно больше, чем без них. К счастью сама 1С удаляет эти строки с случае рестуктуризации таблиц регистра. В моем случае это случилось после смены типа измерения с ДокументСсылка на ДокументСсылка.ЗаказПокупателя почти случайно. Не все изменения структуры регистра приведут к реструктуризации, но именно эти приводят точно. Можно еще использовать такую нереграментированную штуку : delete from _AccumRgTn6629 where _Fld6620 = 0 and _Fld6621 = 0 and _Fld6622 = 0 and _Fld7477 = 0 но как ты понимаешь это является нарушением лицензионного соглашения 1С :) Ну и что с этого, спросишь ты меня. Да, ничего особенного, но эти действия позволили уменьшить размер нашей базы на 45 гигобайт! А также повысить скорость работы отчетов по продажам не десятки процентов. Все это сравнительно бесплатно и является безусловно "низко висящим фруктом". Одно действие приводит к огромной экономии дискового пространства, ускорению регламентного обслуживания базы и уменьшению времени выполнения отчетов. А у тебя есть оборотные регистры в конфигурации? :) Скажите, может я Америку открыл? Нигде не смог найти информацию о подобном поведении системы. Спасибо!
#1
by shuhard
[НО ЭТО ВРАНЬЕ!!! Движения есть! Правда 1С про них ничего нам не говорит. Видимо скрывает, чтобы сберечь наши нервы]
#3
by Lexusss
Баянист. Как тебя подпускают к боевым конфам? Гораздо прикольнее, что такие фантомные записи могут повлиять на RLS :) И да, они не только в регистре оборотов, но и в накопления прут.
#5
by KingDzen
Почему баянист? Проблема давно озвучена? Сам не нашел, подскажи, пожалуйста, где читать матчасть про это?
#7
by Широкий
На инфостарте тема была.. и прилагалась обработка. Стоимость удаления записи дороже апдейта.. вот записи и остаются (хотя и нудевые)
#9
by KingDzen
В регистре накопления тоже видел, но там такого массового безобразия в плане поглощения места на диске нет, так как ежемесячно рассчитываются итоги. В случае же оборотного регистра помогает только реструктуризация (т.е. пересоздание средствами 1С) оборотной таблицы регистра. Или есть еще какой-то способ?
#10
by KingDzen
Да, я так и понял, что дешевле не удалять. Но в моем случае это привело к тому, что база содержит информацию, которая не используется системой (около 17% от размера базы это не шутки) и вредит быстродействию
#11
by KingDzen
_AccumRgTn6629 это таблица, где хранятся обороты по месяцам, можно конечно и как вы сказать, что она содержит итоги.
#12
by Нога
Это рваный баян же, В таблицах ИТОГОВ не удаляются физически записи, ставится 0, только после пересчета итогов они уходят. Неприятные последствия РЛС может вызвать на эти регистры, данных вроде нет, а нарушение прав доступа
#14
by KingDzen
Пересчет итогов никак не исправляет фантомные записи ОБОРОТНОГО регистра. Т.е. он растет безконтрольно в процессе работы конфигурации.
#15
by Carpintera
это происходит именно при программной очистке регистра? И что это за очистка аж на 45 гигов?
#18
by KingDzen
Это происходит и при программном удалении через обработку и в случае удаления проведенного документа у которого стоит Удалять движения автоматически при проведении. Я проверил и был немало удивлен.
#19
by Kreont
Ну хз. вроде ж нормальное поведение любой БД при удалениях всередине таблиц. А шринк мссюл это тоже что вакуум для постгреса? Если да, то неверится что шринк часть таких записей не уберет :(
#20
by KingDzen
Нет не по конфигуратору, а через предприятие. А есть разница? Шринк делал конечно же, но средствами скуля. Опять же есть разница?
#22
by Нога
Для скуля строки в таблицах с 0 не есть лишние записи, он их не сожмёт. А вот для 1с разница есть
#23
by GROOVY
Открытие века.... Ты еще глянь как удаление файлов происходит... Ты себе представь как удалять строки из середины таблицы! Сколько это займет времени?
#24
by KingDzen
Не уберет, конечно! С точки зрения скуля это АБСОЛЮТНО нормальные записи. Скуль же не знает, что записи с пустым набором всех ресурсов абсолютно бесполезны с прикладной точки зрения.
#25
by KingDzen
Да я не против, я только за! :) Меня волнует другой вопрос: каким регламентным заданием на обслуживание 1С я могу периодически избавляться от таких записей? Два способа я отразил в посте. Может кто-то знает более красивый вариант, о котором я не знаю?
#27
by KingDzen
Спасибо, за совет, действительно есть разница между SHRINK и Сжатие таблиц в конфигураторе 1С?
#29
by KingDzen
Кстати, задача стоит уменьшение размера базы данных не типовой КИС на основании УТ. Начал ее решать запуском скрипта, чтобы узнать какие объекты отъедают больше всего места: CREATE TABLE #t([имя таблицы] varchar, [строк] varchar, [зарезервировано] varchar, [всего данных] varchar, [размер индексов] varchar, [свободно] varchar); exec sp_msforeachtable N'exec sp_spaceused ''?'''; SELECT * FROM #t where [имя таблицы] like N'%RgTn%' ORDER BY CONVERT(bigint, REPLACE([всего данных], ' KB', '')) DESC; DROP TABLE #t; в топе оказалась как раз оборотная таблица _AccumRgTn6629
#30
by Вуглускр1991
лицензионное соглашение это как девочка на фронте в автосервисе, красивая, ухоженная, чай наливает. в гараже все немного иначе.
#31
by KingDzen
До удаления фантомных записей она занимала 54 гигабайта (оборотная таблица и индекс) или 83 миллиона записей. После удаления эта таблица стала весить 20 гигабайт или 34 миллиона записей.
#36
by Fragster
вообще об этом написано в умных книжках и куче статей по инету. достаточно сделать пересчет итогов и все пройдет
#42
by KingDzen
Может все-таки есть разница между пересчитать итоги в конфигураторе и в предприятии? Тогда да - мы никогда не рассчитывали итоги в конфигураторе.
#46
by KingDzen
Верно, но в статье говорится только про остатки. Но оборотный регистр хоть и имеет ту же самую проблему фантомных записей - имеет и свою специфику. А именно пересчет итогов для него не устраняет фантомный записи!
#48
by KingDzen
Проблема точно решается реструктуризацией таблицы. Вызывать из конфигуратора - слишком роскошно для меня. База большая и потребуется большое время для выполнение этой операции для всех таблиц - несколько суток точно. Есть более дешевый по времени вариант - вызвать реструктуризацию только таблицы проблемного регистра. Один из способов я описал в посте.
#51
by KingDzen
только что проверил - пересчет итогов через 1С Предприятие управление итогами - проблему НЕ РЕШАЕТ для оборотных регистров. Оно и так было понятно, так как мы это делаем каждый месяц - все бы давно обрезалось. Для регистров ОСТАТКОВ шлак исчезает. Сейчас запустил пересчитать итоги через конфигуратор. Жду.
#52
by Нога
сдаётся мне, что в режиме предприятия нельзя указать оборотные регистры для пересчета итогов. Из конфигуратора надо
#55
by KingDzen
Задумался конфигуратор, что-то он другое делает по сравнению с пересчетом итогов в предприятии. Видимо разница в этих режимах все же есть. Ждем окончания, что же будет с фантомными записями? :)
#56
by ptiz
Да тьфу на вас, навели панику. У меня нулевых записей оказалось 0.0001 % от общего числа.
#58
by viktor_vv
Что ж они тебя так зацепили :)? Эта фигня еще с 7.7 тянется, там же на ДБФ еще удаленные записи справочников физически не удалялись.
#59
by Нога
да понятно что другое, минимум - за весь период считает итоги, а не за указанный, ну и фантомчики удаляет может в обротных. Тут я не уверен, возможно это сделает сжатие таблиц БД
#66
by Нога
Да я сейчас тоже занимаюсь в плотную чисткой 150-ти гиговой базы, от помеченых на удаление, чистки регистров кривых, и этой темой тоже надо будет занятся
#67
by KingDzen
во-во у меня тоже нет желания. Единственно что делаем пересчет итогов в предприятии раз в месяц и шринк средствами скуля.
#71
by ILM
"Я вот не трогаю Гондурас, он и не беспокоит" (с). Если прочитать про механизмы работы SQL серверов, то становится понятно почему так поступает 1С. Удалять и перестраивать индексы и статистику, освобождать память и страницы в он-лайне выходит ох, как затратно. У вас что уже место кончилось? или тормоза повылазили? Кароче, я бы световал не чесать "Гондурас".
#74
by KingDzen
Коллеги, запустил на копии рабочей базы пересчет итогов в режиме конфигуратор. Так вот, висит уже полчаса на регистре, который на порядок меньше, чем сабжевый регистр. Интересно, сколько времени должно пройти для переиндексации всех объектов конфигурации и завершится ли она удачно. Возможно мой вариант с реструктуризаций регистра самый разумный вариант в данном случае. Отпишусь в любом случае.
#81
by ssh2006
незнаю насчет сохранения нулевых записей, а про пересчет итогов при загрузке из dt задавал вопрос на V8@1c.ru, ответили - не пересчитываются
#83
by Axel2009
да обработка проверил. регистр продажи записей 2 400 000. хотя смотрю записей через count(*) там 5 лямов... хыхы
#84
by Axel2009
+ обработка показывает наличие нулевых записей в основной таблице, а не в итогах. так что переделайте ее быстрее :)
#88
by Фрэнки
я проверял сравнивая размеры файловой версии базы. При загрузке из дт размер практически такой же. При ТИИ (все галки) в моем случае размер снизился на 25% процентов.
#89
by Нога
хм, а то что в клиент-серверной в конфигураторе ТИИ нет "Сжатие таблиц БД" кто замечал? всегда думал что есть...)
#92
by Нога
я к тому что значит только Пересчет итогов уберёт , была мысль что это сжатие сделает. Шринк скуля их не убирает
#93
by Никола_Питерский
Уважаемые мегагуру специалисты, подскажите нормально что этот запрос столько выполняется ?? Объект = Хозрасчетный ИтогиПоСчетамССубконто4 Команда = SELECT COUNT(*) FROM _AccRgAT410090 Начало выполнения: 29.03.2013 15:36:56 Окончание выполнения: 29.03.2013 15:38:03
#94
by Chai Nic
"Шринк скуля их не убирает" Ну это логично.. с его точки зрения это обычные строки таблиц, которые он обязан хранить, пока приложение не захочет ух удалять. То, что они хранят бесполезную информацию, известно на прикладном уровне, но на уровне хранения данных они вполне не пустые.
#95
by ptiz
Всем большое спасибо за указание на ошибку, исправил. Действительно, в итогах много нулевых.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Период оборотного регистра
- Avi-шка 4,5 Гб... Чем из нее сделать DVD или чем ее порезать?
- В чем отличие регистра накопления от регистра сведения
- v7: В 1с типов полей dbf меньше чем в Visual Basic чем заменить необходимое поле?
- Чем менеджер записи РС лучше чем набор записей РС?
- Чем лучше 10.3 чем ТиС семерка
- Чем УТ10.3 лучше чем Тис 9.2 ? Стоит ли переходить ? 11 не хотим.
В этой группе 1С
- ЗУП: переходящий отпуск и имущественный вычет
- Настройка прав на сохранение и печать печатных форм
- Как получить ссылку в модуле менеджера справочника 1С
- Как внести в УПП остатки по 97 счету
- ВыборкаИзРезультатаЗапроса метод получить() не догоняю
- Подключение нескольких сканеров штрихкодов
- В какой обработчик вставить создание документа при проведении другого?
- Передача даты из формы отчета в запрос СКД
- УФ. Как открыть форму по ссылке на документ ??
- Потоковое сканирование в 1 С Документооборот
- Как ограничить доступ к внешним рег. отчетам?
- Ошибка вызова метода внешней компоненты
- Запретить продавать в минус УТ 11.1.1.11
- КА: Выпуск продукции на 41 счет вместо 43
- СКД: Проблема при установки фильтра на ресурс
- Не редактируются настройки СКД на форме обработки
- Как в запросе проверить есть ли реквизит в регистраторе или нет?
- обновилась компонента "1С: Сканер штрихкода" (8.0.15.1)
- Есть способ убить соединение фонового задания не останавливая службу агента 1С?
- Общий модуль 1с 8.2 доступность методов