![]() |
![]() |
![]() |
|
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 выполняется блокировка на уровне записей.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |