Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Наилучший поиск по заданному номеру всех документов конкретного вида (sql) (число прочтений - 12651 )
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #30 - 31. Мая 2010 :: 17:14
Печать  
Z1,
_1sdnlock нужен только для того, чтобы заблокировать номер еще не записанного объекта при многопользовательской работе. Необходимость в индексе это никак не отменяетУлыбка
зы: дефрагментацию индексов в 1С делать каждую ночь, имхо, совершенно излишне.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #31 - 31. Мая 2010 :: 18:02
Печать  
Цитата:
подробно не смотрел
посмотрел так...

Ну эти тесты лишь показывают что для автонумерации нужна _1sdnlock. Но это не означает что нужна только она.

На самом деле для автонумерации нужна _1sjourn для определения максимального номера среди записанных документов и _1sdnlock для определения занятых номеров еще не записанных, но еще открытых новых документов.
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #32 - 01. Июня 2010 :: 04:59
Печать  
Добавление нового документа когда есть галка автонумерации документов

Код
Выбрать все
set implicit_transactions on
exec _1sp__1SJOURN_TLockX
set rowcount 1;
select DOCNO from _1SJOURN(NOLOCK) where DNPREFIX='	 1962010    ' order by DNPREFIX DESC, DOCNO DESC;
set rowcount 0
exec sp_executesql N'Insert into _1SDNLOCK values( @P1,@P2)', N'@P1 varchar(28),@P2 varchar(24)', '	 1962010    ', '277017'

IF @@TRANCOUNT > 0 COMMIT TRAN
set implicit_transactions off
Открытие формы документа 


Включаем режим неявных транзакций
Устанавливаем Х блокировку TAB на 1SJOURN
ищем максимальный номер по заданному префиксу Здесь используется индекс docno
заносим найденый номер в таблицу _1SDNLOCK
фиксируем транзакцию
Выключаем режим неявных транзакций
Открываем форму документа
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #33 - 01. Июня 2010 :: 05:02
Печать  
Добавление нового документа когда  галка автонумерации документов выключена

Код
Выбрать все
set implicit_transactions on
exec _1sp__1SJOURN_TLockX
IF @@TRANCOUNT > 0 COMMIT TRAN
set implicit_transactions off
Открытие формы документа 



Включаем режим неявных транзакций
Устанавливаем Х блокировку TAB на 1SJOURN
фиксируем транзакцию
Выключаем режим неявных транзакций
Открываем форму документа


Код вырождается. И вообще весь код в этом посте становится ненужным.


  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #34 - 01. Июня 2010 :: 05:07
Печать  
alexdd писал(а) 31. Мая 2010 :: 17:14:
Z1,
зы: дефрагментацию индексов в 1С делать каждую ночь, имхо, совершенно излишне.

А каков критерий как часто надо запускать переиндексацию ? ( с другой стороны это не так и много времени сервера занимает.)
А когда достаточно defrag ?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #35 - 01. Июня 2010 :: 05:11
Печать  
Цитата:
заносим найденый номер в таблицу _1SDNLOCK

я бы уточнил: Пытаемся занести новый номер.
Если попытка неудачна (кто то уже занял этот номер новым документом), увеличиваем номер и пытаемся снова.
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #36 - 01. Июня 2010 :: 05:18
Печать  
небольшой вывод :
Если документ проводиться ( из другого sql процесса ) то 1с.exe не может создать новый документ( открыть форму документа) .

Это верно и для случая когда галка автонумерация выключена хотя в этом случае это ограничение совершенно излишне.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #37 - 01. Июня 2010 :: 08:40
Печать  
Z1 писал(а) 28. Мая 2010 :: 11:44:
Еще можно вопрос
в той  ветке на  мисте (пост 129,131) один из участников сделал переиндексацию DBCC DBREINDEX(_1sjourn).
индекса и после этого даже неоптимальные запросы "залетали"
Т.е. вопрос как проверить что таблица действительно нуждается
в переиндексации и как часто ее (переиндексацию ) надо делать.

Сейчас еженочно делается defrag и обновление статистики.

Собственно, этот эффект может быть следствием пересчёта статистики, а не дефрагментации индекса. DBREINDEX обновляет статистику (т.к., по сути, это создание нового индекса), а INDEXDEFRAG - нет.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #38 - 01. Июня 2010 :: 08:54
Печать  
Z1 писал(а) 01. Июня 2010 :: 05:07:
А каков критерий как часто надо запускать переиндексацию ? ( с другой стороны это не так и много времени сервера занимает.)
А когда достаточно defrag ?

Точные критерии зависят от характера нагрузки, распределения данных и показателей снижения производительности. Я бы начал с таких:
ScanDensity < 60 или LogicalFragmentation > 15 - DBREINDEX
ScanDensity < 75 или LogicalFragmentation > 10 - INDEXDEFRAG
прочие значения - оставить как есть
Хотя, вот здесь приведены несколько иные критерии.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #39 - 01. Июня 2010 :: 10:32
Печать  
так вот у меня и возникла мысль
сейчас еженочно идет ( без критериев для всех таблиц )
1.defraf
2.обновление  статистики


так может стоит заменить на
еженочно  переиндексацию всех таблиц (будут и индексы перестроены и статистика)?
Плюс нынешнего варианта чуть меньше времени выполнения
и меньше растет журнал транзакций.

Текущее задание делается где то минут 40
переиндексацию сделал вчера.
точно время не засекал но в течении часа
( при этом несколько человек в базе  1с работало  конечно "спотыкаясь"  на блокировки схемы)

  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #40 - 01. Июня 2010 :: 10:44
Печать  
DBREINDEX, в отличие от INDEXDEFRAG, это оффлайновая операция. Выполнять её одновременно с работой пользователей будет проблематично.  Подмигивание
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #41 - 01. Июня 2010 :: 10:57
Печать  
berezdetsky писал(а) 01. Июня 2010 :: 10:44:
DBREINDEX, в отличие от INDEXDEFRAG, это оффлайновая операция. Выполнять её одновременно с работой пользователей будет проблематично.  Подмигивание

Это понятно. Вчера просто экперементировал,
а так думаю стоит или нет менять в ночной обработке
defrag + обновление статистики на переидексацию или нет?
Или может раз в неделю переиндексация остальные дни оставить как сейчас.

  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #42 - 01. Июня 2010 :: 11:26
Печать  
Цитата:
Инструкция DBCC INDEXDEFRAG дефрагментирует конечный уровень индекса, приводя физический порядок страниц в соответствие логическому порядку конечных узлов слева направо, что повышает эффективность сканирования индекса.
...
Инструкция DBCC INDEXDEFRAG перемещает конечные страницы индекса в произвольном порядке. Таким образом, если содержимое индекса чередуется на диске с содержимым других индексов, выполнение инструкции DBCC INDEXDEFRAG для этого индекса не приведет к расположению всех конечных страниц индекса в последовательном порядке. Чтобы улучшить кластеризацию страниц, создайте индекс заново.

© BOL
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #43 - 02. Июня 2010 :: 05:31
Печать  
И еще вопрос
во многих приводимых скриптах по улучшению sql
( например http://www.1cpp.ru/forum/YaBB.pl?num=1267598546/5#5 )
выполняют
Код
Выбрать все
DBCC UPDATEUSAGE (dbname) 




что дает DBCC UPDATEUSAGE  ? ( вроде не особо и нужен этот оператор )
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Наилучший поиск по заданному номеру всех документов конкретного вида (sql)
Ответ #44 - 02. Июня 2010 :: 06:31
Печать  
Оно может иметь смысл при профилактике или обновлении версии SQL Server. Регулярно запускать стóит, только если в базе часто выполняются инструкции DDL.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать