Имя: Пароль:
1C
 
Быстрая и наглая очистка таблицы Обороты регистра накопления. Кто пробовал?
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