Выборочная реиндексация таблиц после подрезки базы

1. apic 13 21.06.24 06:45 Сейчас в теме
Есть задача порезать много терабайтную базы 1С на MS SQL. Естественно резаться будем средствами SQL т.к. объем не подъемный для подрезки средствами 1С. Вопрос что делать с индексами? Можно ли как то выполнить переиндексацию только подрезанных таблиц? Все рекомендую выполнить процедуру тестирование и исправление средствами конфигуратора, но на таких объемах это не выполнимая задача. И еще вопрос - что будет если не трогать индексы подрезанной таблицы, это скажется только на производительности (при выполнении запросов к подрезанной таблице) и объеме базы (хранение мусорных индексов) или может привести к сбоям в работе базы?
Найденные решения
10. MACTEP1C 21.06.24 11:08 Сейчас в теме
(7) В сети гуляет обработка "Структура таблиц", с помощью которой можно узнать имена таблиц, а дальше уже дело техники: ALT ER INDEX ALL ON _InfoRg108454 rebuild with (sort_in_tempdb = On), где вместо _InfoRg108454 подставить нужное.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. paulwist 21.06.24 08:50 Сейчас в теме
(1)
1. Если под "порезать" подразумевается секционировать таблицы, то 1С не переживёт такого надругательства (работать не будет)

2. Если под "порезать" подразумевается delete from table, то

Вопрос что делать с индексами? Можно ли как то выполнить переиндексацию только подрезанных таблиц?


Можно переиндексировать и перестроить статистики (если кол-во удаленных записей будет меньше 20% от первоначального и/или выключено автообновление статистики )

И еще вопрос - что будет если не трогать индексы подрезанной таблицы, это скажется только на производительности (при выполнении запросов к подрезанной таблице) и объеме базы (хранение мусорных индексов) или может привести к сбоям в работе базы?


Что бы не заморачиваться просто переиндексируйте и обновите статистику на этих таблицах иначе получите тормоза из-за "кривых" планов запросов.

MSSQL не PG он по честному удаляет данные, поэтому индексы не содержат "мусорных" данных, в индексах лежат только актуальные значения.

К сбоям в БД может привести банальное незнание движения информации для заполнения таблиц 1С (поскольку, например ссылочная целостность в 1С обеспечивается самим движком 1С ), сам процесс удаления из таблиц безопасен.
7. apic 13 21.06.24 10:54 Сейчас в теме
(4)
MSSQL не PG он по честному удаляет данные, поэтому индексы не содержат "мусорных" данных, в индексах лежат только актуальные значения.
Этого не знал. Но разве MSSQL знает внутреннее устройство таблиц 1С? И просьба подсказать как можно средствами MSSQL переиндексировать таблицу определенного объекта метаданных, например регистра сведений или таблицу документов. Заранее спасибо.
9. apic 13 21.06.24 11:00 Сейчас в теме
(4)
сам процесс удаления из таблиц безопасен.
, т.е. я могу удалять записи таблиц 1С средствами 1С не беспокоясь за индексы?
17. paulwist 21.06.24 12:35 Сейчас в теме
(7)
как можно средствами MSSQL переиндексировать таблицу определенного объекта метаданных, например регистра сведений или таблицу документов.


В SSMS выполняете команду (как написал MACTEP1C)

(10)
ALT ER INDEX ALL ON _InfoRg108454 rebuild with (sort_in_tempdb = On), где вместо _InfoRg108454 подставить нужное.

UPDATE STATISTICS _InfoRg108454 WITH FULLSCAN


этого достаточно.

(9)
т.е. я могу удалять записи таблиц 1С средствами 1С не беспокоясь за индексы?


Да, абсолютно.

PS вообще, на сервере СУБД должны быть задания по обслуживанию индексов/статистик, если такие задания есть, то просто запустите их.
12. Fox-trot 161 21.06.24 11:26 Сейчас в теме
(1) не вижу смысла реиндексации, оно и так автоматом произойдет
а вот итоги пересчитать не помешает
14. apic 13 21.06.24 11:50 Сейчас в теме
(12) Спасибо, тогда я спокоен. А на счет итогов, можете подсказать в чем разница методов
ПересчитатьИтогиЗаПериод( , НачалоМесяца(ТекущаяДата()));
и
УстановитьПериодРассчитанныхИтогов(НачалоМесяца(ТекущаяДата()) - 1);

Я так понимаю приведенный пример с параметрами идентичен или эти методы по разному работают?
16. apic 13 21.06.24 12:16 Сейчас в теме
(14) Если рассчитывать итоги на текущую дату, то я так понял идентичен будет и третий вариант, просто
ПересчитатьИтоги();
верно?
2. frkbvfnjh 799 21.06.24 07:08 Сейчас в теме
Тоже интересует этот вопрос
3. uriah 18 21.06.24 07:11 Сейчас в теме
А какой смысл вы вкладываете в "порезать"?
5. apic 13 21.06.24 10:46 Сейчас в теме
(3) Удалить часть данных на какой либо период например. Например в случае свертки базы. Пять лет данных удалили, как реиндексировать таблицу в которой удалили данные?
6. laperuz 46 21.06.24 10:48 Сейчас в теме
(5)Реструктуризацию v2 пробовали?
Она как раз для больших баз, для которых обычная выполняется неприемлемо долго или вообще не выполняется.
8. apic 13 21.06.24 10:55 Сейчас в теме
11. Zevzm 21.06.24 11:16 Сейчас в теме
(8)Многотерабайтная база. Это что же за говна в нее напихали? Может там вложения все загадили? Не пробовали просмотреть структуру хранения базы данных и для начала вычистить то, что ее раздуло?
У нас тоже база была громадная, вычистили вложения, версии - теперь грузится и выгружается средствами 1С.
10. MACTEP1C 21.06.24 11:08 Сейчас в теме
(7) В сети гуляет обработка "Структура таблиц", с помощью которой можно узнать имена таблиц, а дальше уже дело техники: ALT ER INDEX ALL ON _InfoRg108454 rebuild with (sort_in_tempdb = On), где вместо _InfoRg108454 подставить нужное.
13. paulwist 21.06.24 11:29 Сейчас в теме
(10)
ALT ER INDEX


Не обновит все статистики на табличке.
19. apic 13 04.07.24 13:40 Сейчас в теме
(10) Спасибо большое! Я так понял еще и статистика самого индекса обновится. Но я не понял что делает sort_in_tempdb = On. Если расскажите человеческим языком, буду благодарен.
20. apic 13 04.07.24 13:47 Сейчас в теме
(19) А все, понял - типа подключает к работе таблицу tempdb экономя оперативку если ее мало, но временно увеличивает используемое пространство диска, кроме того если tempdb на другом диске, то может ускорить перестроение индекса. Идеальная команда, спасибо!
15. MACTEP1C 21.06.24 12:12 Сейчас в теме
(13)
Ещё, значит, UPDATE STATISTICS _InfoRg108454 WITH FULLSCAN
18. MACTEP1C 21.06.24 13:33 Сейчас в теме
(17)
на сервере СУБД должны быть задания по обслуживанию индексов/статистик, если такие задания есть, то просто запустите их

База терабайтная - есть вероятность, что они будут выполняться не один день.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот