Выборочная реиндексация таблиц после подрезки базы
Есть задача порезать много терабайтную базы 1С на MS SQL. Естественно резаться будем средствами SQL т.к. объем не подъемный для подрезки средствами 1С. Вопрос что делать с индексами? Можно ли как то выполнить переиндексацию только подрезанных таблиц? Все рекомендую выполнить процедуру тестирование и исправление средствами конфигуратора, но на таких объемах это не выполнимая задача. И еще вопрос - что будет если не трогать индексы подрезанной таблицы, это скажется только на производительности (при выполнении запросов к подрезанной таблице) и объеме базы (хранение мусорных индексов) или может привести к сбоям в работе базы?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. Если под "порезать" подразумевается секционировать таблицы, то 1С не переживёт такого надругательства (работать не будет)
2. Если под "порезать" подразумевается delete from table, то
Можно переиндексировать и перестроить статистики (если кол-во удаленных записей будет меньше 20% от первоначального и/или выключено автообновление статистики )
Что бы не заморачиваться просто переиндексируйте и обновите статистику на этих таблицах иначе получите тормоза из-за "кривых" планов запросов.
MSSQL не PG он по честному удаляет данные, поэтому индексы не содержат "мусорных" данных, в индексах лежат только актуальные значения.
К сбоям в БД может привести банальное незнание движения информации для заполнения таблиц 1С (поскольку, например ссылочная целостность в 1С обеспечивается самим движком 1С ), сам процесс удаления из таблиц безопасен.
1. Если под "порезать" подразумевается секционировать таблицы, то 1С не переживёт такого надругательства (работать не будет)
2. Если под "порезать" подразумевается delete from table, то
Вопрос что делать с индексами? Можно ли как то выполнить переиндексацию только подрезанных таблиц?
Можно переиндексировать и перестроить статистики (если кол-во удаленных записей будет меньше 20% от первоначального и/или выключено автообновление статистики )
И еще вопрос - что будет если не трогать индексы подрезанной таблицы, это скажется только на производительности (при выполнении запросов к подрезанной таблице) и объеме базы (хранение мусорных индексов) или может привести к сбоям в работе базы?
Что бы не заморачиваться просто переиндексируйте и обновите статистику на этих таблицах иначе получите тормоза из-за "кривых" планов запросов.
MSSQL не PG он по честному удаляет данные, поэтому индексы не содержат "мусорных" данных, в индексах лежат только актуальные значения.
К сбоям в БД может привести банальное незнание движения информации для заполнения таблиц 1С (поскольку, например ссылочная целостность в 1С обеспечивается самим движком 1С ), сам процесс удаления из таблиц безопасен.
(4)
MSSQL не PG он по честному удаляет данные, поэтому индексы не содержат "мусорных" данных, в индексах лежат только актуальные значения.
Этого не знал. Но разве MSSQL знает внутреннее устройство таблиц 1С? И просьба подсказать как можно средствами MSSQL переиндексировать таблицу определенного объекта метаданных, например регистра сведений или таблицу документов. Заранее спасибо.
(7)
В SSMS выполняете команду (как написал MACTEP1C)
(10)
этого достаточно.
(9)
Да, абсолютно.
PS вообще, на сервере СУБД должны быть задания по обслуживанию индексов/статистик, если такие задания есть, то просто запустите их.
как можно средствами MSSQL переиндексировать таблицу определенного объекта метаданных, например регистра сведений или таблицу документов.
В SSMS выполняете команду (как написал MACTEP1C)
(10)
ALT ER INDEX ALL ON _InfoRg108454 rebuild with (sort_in_tempdb = On), где вместо _InfoRg108454 подставить нужное.
UPDATE STATISTICS _InfoRg108454 WITH FULLSCAN
UPDATE STATISTICS _InfoRg108454 WITH FULLSCAN
этого достаточно.
(9)
т.е. я могу удалять записи таблиц 1С средствами 1С не беспокоясь за индексы?
Да, абсолютно.
PS вообще, на сервере СУБД должны быть задания по обслуживанию индексов/статистик, если такие задания есть, то просто запустите их.
(12) Спасибо, тогда я спокоен. А на счет итогов, можете подсказать в чем разница методов и
Я так понимаю приведенный пример с параметрами идентичен или эти методы по разному работают?
ПересчитатьИтогиЗаПериод( , НачалоМесяца(ТекущаяДата()));
УстановитьПериодРассчитанныхИтогов(НачалоМесяца(ТекущаяДата()) - 1);
Я так понимаю приведенный пример с параметрами идентичен или эти методы по разному работают?
(8)Многотерабайтная база. Это что же за говна в нее напихали? Может там вложения все загадили? Не пробовали просмотреть структуру хранения базы данных и для начала вычистить то, что ее раздуло?
У нас тоже база была громадная, вычистили вложения, версии - теперь грузится и выгружается средствами 1С.
У нас тоже база была громадная, вычистили вложения, версии - теперь грузится и выгружается средствами 1С.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот