|   |   | 
| 
 | Быстрая и наглая очистка таблицы Обороты регистра накопления. Кто пробовал? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Dwarrior 23.07.19✎ 17:55 | 
        Доброго времени суток!
 Задался задачей сжать базу УТ 10.3 на MSSQL. Как выяснилось, нехилый объем занимает таблица Обороты регистра Продажи за последние 10 лет. Как ее очистить? Решил на тестовой базе нагло и быстро выполнить "truncate table". Думал, сломал обороты. Ан нет! Запрос к Продажи.Обороты выполняется и показывает правильные цифры! Платформа видимо при отсутствии записей в оборотах считает их заново из основной таблицы. И, кстати, создает новые записи в Оборотах, за затронутый период. Отчеты, использующие обороты, формируются. Документы проводятся. Вроде все отлично. Теперь вопрос - кто-нибудь так делал? Это не грозит какими-то дальнейшими проблемами? Опасаюсь делать такое же в боевой базе | |||
| 1
    
        ChMikle 23.07.19✎ 17:57 | 
        Из конфигурации удали этот регистр, базу сохрани, а потом заново создай в конфигурации и снова сохрани     | |||
| 2
    
        lubitelxml 23.07.19✎ 17:58 | 
        может все-таки свернуть БД?     | |||
| 3
    
        Dwarrior 23.07.19✎ 17:59 | 
        (1) Так потеряю ж данные регистра? Данные нужны, за все 10 лет     | |||
| 4
    
        Dwarrior 23.07.19✎ 17:59 | 
        (2) Типовым методом? Нет, нужна аналитика продаж за 10 лет     | |||
| 5
    
        ChMikle 23.07.19✎ 18:00 | 
        (3)Как выяснилось, нехилый объем занимает таблица Обороты регистра Продажи за последние 10 лет. 
 Как ее очистить? | |||
| 6
    
        Dwarrior 23.07.19✎ 18:04 | 
        (5) Так речь же про Обороты, а не про Основную таблицу регистра!     | |||
| 7
    
        Вафель 23.07.19✎ 18:06 | 
        нужно было не все удалять, а только за старые периоды. и это можно делать через настройки регистров | |||
| 8
    
        Dwarrior 23.07.19✎ 18:10 | 
        (7) УТ 10.3 в таком режиме совместимости, что нет начального периода расчета итогов. Только конечный.
 Удалить обороты старого периода - хороший план, но в этой базе доступен только ПОСЛЕДОВАТЕЛЬНОЙ очисткой наборов записей по каждому регистру, что очень тяжело и муторно. | |||
| 9
    
        xXeNoNx 23.07.19✎ 18:58 | 
        Опомнитесь, Вы нарушаете лицензионное соглашение     | |||
| 10
    
        Смотрящий 23.07.19✎ 19:30 | 
        (9) Да плевали на него все. Лицухи есть, итс есть - идите лесом     | |||
| 11
    
        xXeNoNx 23.07.19✎ 19:33 | 
        (10) БГ, прости их, неразумных     | |||
| 12
    
        mistеr 23.07.19✎ 20:11 | 
        (11) Ты хотел сказать БН.     | |||
| 13
    
        ДенисЧ 23.07.19✎ 20:17 | 
        отключи использование итогов     | |||
| 14
    
        hhhh 23.07.19✎ 22:32 | 
        (12) всё ж таки БГ     | |||
| 15
    
        Aleksey 24.07.19✎ 03:26 | ||||
| 16
    
        ink-nsk 24.07.19✎ 06:11 | 
        2(0) Итоги не забудь пересчитать. )))))))     | |||
| 17
    
        Лефмихалыч 24.07.19✎ 07:26 | 
        (0) чем ты занимался последние 12 лет таким, что это для тебя сюрприз?
 итоги пересчитай. Иначе, когда пользователи набегут, устанешь на жалобы отвечать что-нибудь невнятное | |||
| 18
    
        ptiz 24.07.19✎ 08:48 | 
        (0) "Запрос к Продажи.Обороты выполняется и показывает правильные цифры" - за какой период показывает правильные цифры? Период итогов какой установлен?     | |||
| 19
    
        ptiz 24.07.19✎ 08:49 | 
        И толку от такой очистки - ноль, только вред.     | |||
| 20
    
        Dwarrior 24.07.19✎ 10:14 | 
        (19) Польза такая - размер базы уменьшился с 900Гб до 800Гб. По работе - никаких замедлений, обороты продаж считаются правильно (и быстро, что удивительно, нафик тогда вообще Обороты нужны?), документы проводятся. 
 (18) за любой, таблица оборотов очищена полностью. Период итогов - февраль 2019. (9) Да, верно, нарушаем. Но кто докажет и кому это нужно? Оно само сломалось (17) последние 12 лет не было нужды лезть в базу на уровне SQL. А сейчас есть - быстро и безболезненно уменьшить базу. Пересчитать итоги по регистру Продажи? | |||
| 21
    
        1Сергей 24.07.19✎ 10:19 | 
        (20) я бы ожидал, что оно скоро всё упадёт, если в итогах одно, а в основной таблице другое.
 Самому не стрёмно? | |||
| 22
    
        Кац 24.07.19✎ 10:25 | 
        (20) Сомнительная польза - уменьшить размер базы на ~10%.     | |||
| 23
    
        unregistered 24.07.19✎ 10:29 | 
        (20) > Польза такая - размер базы уменьшился с 900Гб до 800Гб.
 А с чего ты решил, что это польза? Иметь риск получения кем-либо из пользователей некорректных данных, и только лишь ради экономии чуть более 10% от размера базы. Ответьте себе на простой вопрос - а какой смысл от этой экономии 100Гб? База стала работать быстрее? - Нет конечно. Единственный сомнительный плюс - экономия дискового пространства на базу и бекапы. Но при нынешней копеечной стоимости Гб это достижении не выглядит таким уж значимым... | |||
| 24
    
        Dwarrior 24.07.19✎ 10:47 | 
        (21) Стремно, поэтому и спрашиваю совета у людей. Если это потенциально опасная операция - то лучше не делать конечно. Но пока все работает.
 (22) Так это только Продажи. Еще другие регистры есть:) В итоге 50% удалось выкроить (23) Быстрее должны проводиться операции обслуживания базы (обновление статистики, перестроение индексов). Экономия места на сервере, да. Это важно, если расширение трудно реализовать - гипервизоры, дисковые полки с 100% загрузкой и спец. дисками. Кстати, попутный вопрос - у кого-нибудь есть базы более 1Тб? Надо ли их делить на несколько mdf? Стабильно ли работает? | |||
| 25
    
        ptiz 24.07.19✎ 10:58 | 
        (20) "за любой, таблица оборотов очищена полностью" - (с) не верю
 Даже проверил в профайлере. Запрос за целый месяц - обращается к таблице итогов, даже если она пустая. И вернет пустоту. exec sp_executesql N'SELECT T1.Fld4328Turnover_, T1.Fld4329Turnover_ FROM (SELECT ISNULL(CAST(CAST(SUM(T2._Fld4329) AS NUMERIC(27, 2)) AS NUMERIC(27, 2)),0.0) AS Fld4329Turnover_, ISNULL(CAST(CAST(SUM(T2._Fld4328) AS NUMERIC(27, 3)) AS NUMERIC(27, 3)),0.0) AS Fld4328Turnover_ FROM dbo._AccumRgTn4333 T2 WITH(NOLOCK) WHERE T2._Period >= P1 AND T2._Period < @P2 AND (T2._Fld4329 <> @P3 OR T2._Fld4328 <> @P4) HAVING (ISNULL(CAST(CAST(SUM(T2._Fld4329) AS NUMERIC(27, 2)) AS NUMERIC(27, 2)),0.0)) <> 0.0 OR (ISNULL(CAST(CAST(SUM(T2._Fld4328) AS NUMERIC(27, 3)) AS NUMERIC(27, 3)),0.0)) <> 0.0) T1',N'P1 datetime2(3),@P2 datetime2(3),@P3 numeric(10),@P4 numeric(10)','4008-06-01 00:00:00','4008-07-01 00:00:00',0,0 | |||
| 26
    
        Dwarrior 24.07.19✎ 11:19 | 
        (25) В консоли запросов выполняю запрос:
 ВЫБРАТЬ ПродажиОбороты.Контрагент, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты Период - январь 2015. Все данные на месте | |||
| 27
    
        ptiz 24.07.19✎ 11:36 | 
        (26) Чему равен &КонецПериода? Точно, до секунды.     | |||
| 28
    
        unregistered 24.07.19✎ 11:39 | 
        (24) > у кого-нибудь есть базы более 1Тб? Надо ли их делить на несколько mdf? Стабильно ли работает?
 Поищи в сети описание проекта "Деловые Линии". У них база на самописной конфе более 2Тб. Было в прошлом или позапрошлом году. Сейчас, наверное, уже ещё больше. | |||
| 29
    
        unregistered 24.07.19✎ 11:43 | 
        (24) > Быстрее должны проводиться операции обслуживания базы... Экономия места на сервере...
 Это всё понятно. Но 10%? Я понимаю, если бы речь шла хотя бы о трети базы или половине. | |||
| 30
    
        ptiz 24.07.19✎ 11:51 | 
        (24) > 1Тб на ОФ 8.2 - норм крутится. Глупостями типа чистки таблицы итогов не занимаемся. А если уж очень хочется, то есть штатный метод - ставишь итоги на 01.01.2001 и не двигаешь. В последних платформах 8.3 вообще можно любой период хранения итогов выбирать (например, только последний год).     | |||
| 31
    
        ink-nsk 24.07.19✎ 12:29 | 
        2(24) Про обслуживание базы - это про что? Ты итоги пересчитал после псевдооптимизации?
 Это из оперы на 31 число одна сумма - на первое другая. Т.е. тут за полный период программа даст цифры, а за пол месяца - хрен. | |||
| 32
    
        Dwarrior 24.07.19✎ 16:30 | 
        (27) Период 01.01.2015-15.01.2015 
 (29) Так о том и речь. Регистр Продажи не единственный. В общем и целом сэкономил 50% размера базы. (31) Обслуживание базы - обновление статистики и перестроение индексов средствами MSSQL. Ну в принципе, я мысль понял - "Недокументированные возможности непредсказуемы и их использование вред". | |||
| 33
    
        Ёпрст гуру 24.07.19✎ 16:35 | 
        Лучше б сжатие таблиц сделал, всяко твоя базенка похудела бы в разы.     | |||
| 34
    
        Ёпрст гуру 24.07.19✎ 16:36 | 
        на вот, почитай на ночь
 http://catalog.mista.ru/public/114634/ | |||
| 35
    
        Ёпрст гуру 24.07.19✎ 16:38 | 
        ну и это, в догонку
 http://catalog.mista.ru/public/692209/ | |||
| 36
    
        ptiz 24.07.19✎ 20:19 | 
        (32) А теперь поставь 01.01.2015-31.01.2015 23:59:59     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |