Имя: Пароль:
1C
1С v8
v8: Оптимизация проведения при пакетном проведении документов
0 xavchik
 
07.10.11
14:05
Доброго времени суток

Не так давно создавал тему:
v8: Замедление скорости проведения при пакетном проведении документов

1c 8, MS SQL 2005, база 20GB
1C: Бухгалтерия 8 ред 1.6

Получил некоторые результаты. Но сейчас хотелось бы развить тему.

Насколько я понимаю, увеличение скорости проведения (при проведении большого количества документов) наблюдается за счет кэширования и других оптимизаций обращений к таблицам регистров сервером MS SQL. Это можно увидеть по тому, как SQL съедает оперативную память и как падает время проведения одного документа.

Так вот вопросы на этот раз такие:
1) Можно ли как-нибудь подготовить MS SQL к таких операция перед загрузкой (например, выполнить операцию, которая предварительно закэширует таблицы нужных регистров или что-то подобное)?
2) Еще какие-нибудь варианты...
3) Отключение ненужного функционала тоже рассматривается. Но по коду сделал все, что можно (95% времени занимает процедура Записать()).

Большая просьба не предлагать улучшить оборудование, разнести файлы базы на разные диски, перенести tempdb и тому подобное. Ибо такой возможности нет или скорее всего пробовал, но эффекта не неблюдалось.
1 Maxus43
 
07.10.11
14:10
напомните в БП автоудаление движений включено?
2 Axel2009
 
07.10.11
14:10
(0) ДокОб.Записать()? =) прально, быстрее врядли будет.  и то надо еще посмотреть, на что тратятся эти 5%.
а предлагать выгрузить в файловую, провести и вернуть обратно - тоже не предлагать?
3 xavchik
 
07.10.11
14:16
(1) Вообще у проводимого документа стоит "Не удалять движения автоматически", но, думаю, это не совсем актуально, так как проводяться НОВЫЕ документы. Или это может как-то влиять?

(2) 5% Складываются из кучи строк, которые выполняются ОЧЕНЬ быстро, но их все равно много. Да и 5% прироста не спасают.
Выгрузка/загрузка не подходит, так как люди при этом должны хотя бы смотреть базу, да и сама процедура выгрузки/загрузки занимает время, соизмеримое с самим созданием документов.
4 МихаилМ
 
07.10.11
14:30
можно попытаться распарралелить
через фоновые задания

и писать и проводить в несколько потоков.

детали должны быть в ветке муму про
восстановление последовательности.
5 xavchik
 
07.10.11
14:42
(4) Спасибо. Уже думал об этом. Видимо все-таки придется использовать этот финт.
6 Maxus43
 
07.10.11
14:43
(4)(5) раньше где то читал что если создаётся новая запись в таблице - то всё равно блокируется вся, непомню точно... надо покопать этот вопрос ещё
7 xavchik
 
07.10.11
14:46
(6) Насколько я знаю, это относится к файловой БД или на PostgreSQL, а в MS SQL выполняется блокировка на уровне записей.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн