Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) есть ли альтернатива общим журналам документов 1С 7.7? (число прочтений - 13541 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #15 - 25. Ноября 2009 :: 14:26
Печать  
sml писал(а) 25. Ноября 2009 :: 14:17:
Z1 писал(а) 25. Ноября 2009 :: 13:27:
Наконец то вчитался в разогрев кеша.
это полумера представьте если документов много то
сколько будете входить в 1с ?


так этими строчками весь _1sjourn (а также и таблицы подчиненных документов)  помещается в кэш, а после уже из него берутся разнообразные списки документов. Кроме, м.б., вновь созданных.

при помещении всех документов в кеш проблема не исчезает (план выполнения sql  запроса тот же самый ) просто повышается быстродейсвие выполнения за счет того что данные не нужно тянуть с диска в кеш.
Далее когда начнешь работать с другими данными : справочники,
регистры, шапки документов и таблич части документов то
это вытеснит журнал документов из кеша и cнова получишь subj
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #16 - 25. Ноября 2009 :: 23:08
Печать  
Z1 писал(а) 25. Ноября 2009 :: 13:27:
Наконец то вчитался в разогрев кеша.
это полумера представьте если документов много то
сколько будете входить в 1с ?
а во вторых все равно Ваш кеш остынет и снова будет subj


не думаю что эти команды полностью кешируют _1sjourn, которые потом могут быть вытеснены.
тут дело в чем, то другом
может кешируется правильный план запроса, может еще чего

эти команды не сканируют таблицы - они создают курсоры
а данные выбираются постепенно, небольшими порциями, командой ПолучитьДокумент() (sql FETCH)
поэтому не оказывают большого влияния на скорость входа в 1С-ку
да и практика показывает: после выполнения этих команд - проблема ушла Улыбка

ЗЫ
- база 12Гб
- RAM, на самом старом сервере, 1Гб

ЗЫЫ
думаю уже пора переходить на 2008 скуль Улыбка
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #17 - 26. Ноября 2009 :: 06:18
Печать  
slawa писал(а) 25. Ноября 2009 :: 23:08:
не думаю что эти команды полностью кешируют _1sjourn, которые потом могут быть вытеснены.
тут дело в чем, то другом
может кешируется правильный план запроса, может еще чего

эти команды не сканируют таблицы - они создают курсоры
а данные выбираются постепенно, небольшими порциями, командой ПолучитьДокумент() (sql FETCH)


я вчера выкладывал команды 1С, которые отправляются на скуль из-за этих строк, на форум sql.ru:
Код
Выбрать все
declare @p1 int
set @p1=1073741828
declare @p2 int
set @p2=180150021
declare @p5 int
set @p5=2
declare @p6 int
set @p6=1
declare @p7 int
set @p7=-1
exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 varchar(23),@P2 varchar(23)',
N'Select * from _1SJOURN(NOLOCK INDEX=ACDATETIME)
 where DATE_TIME_IDDOC>=@P1 and DATE_TIME_IDDOC<=@P2
order by DATE_TIME_IDDOC',
@p5 output,@p6 output,@p7 output,'17530101 0 0 ','99991230FHML6O 0 '
select @p1, @p2, @p5, @p6, @p7

exec sp_cursorfetch 180150021,1,0,1

declare @p1 int
set @p1=1073741829
declare @p2 int
set @p2=180150023
declare @p5 int
set @p5=2
declare @p6 int
set @p6=1
declare @p7 int
set @p7=-1
exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 int,@P2 char(23),@P3 char(23),@P4 char(23)',
N'Select JOURN.*
from _1SJOURN JOURN(NOLOCK INDEX=ACDATETIME),
	  _1SCRDOC CRDOC(NOLOCK INDEX=PARENT)
where JOURN.DATE_TIME_IDDOC=CRDOC.CHILD_DATE_TIME_IDDOC
and CRDOC.MDID=@P1 and CRDOC.PARENTVAL=@P2
and CRDOC.CHILD_DATE_TIME_IDDOC>=@P3
and CRDOC.CHILD_DATE_TIME_IDDOC<=@P4
order by CRDOC.MDID, CRDOC.PARENTVAL, CRDOC.CHILD_DATE_TIME_IDDOC',
@p5 output,@p6 output,@p7 output,0,'O1 6GV F30A ','17530101 0 0 ','99991230FHML6O 0 '
select @p1, @p2, @p5, @p6, @p7

exec sp_cursorfetch 180150023,1,0,1 



как видно из селектов (период с нулевой даты скуля = 1 января 1753г по 30 декабря 9999г), которыми заполняются курсоры, обращение идет к полной таблице журнала документов и полной таблице подчиненных документов.
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #18 - 26. Ноября 2009 :: 06:37
Печать  
sml писал(а) 26. Ноября 2009 :: 06:18:
я вчера выкладывал команды 1С, которые отправляются на скуль из-за этих строк, на форум sql.ru:
...
как видно из селектов (период с нулевой даты скуля = 1 января 1753г по 30 декабря 9999г), которыми заполняются курсоры, обращение идет к полной таблице журнала документов и полной таблице подчиненных документов.


Создание курсоров, с помощью процедуры sp_cursorprepexec, не вызывает моментального выполнения всего запроса.
Запрос выполняется частями по мере поступления команд на чтение данных из курсора. (ПолучитьДокумент())
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #19 - 26. Ноября 2009 :: 06:55
Печать  
slawa писал(а) 26. Ноября 2009 :: 06:37:
Создание курсоров, с помощью процедуры sp_cursorprepexec, не вызывает моментального выполнения всего запроса.
Запрос выполняется частями по мере поступления команд на чтение данных из курсора. (ПолучитьДокумент())


запрос-то, возможно, так и работает, но в кэш сразу размещаются все страницы памяти, в которых размещены записи таблиц документов (а может быть только их индексы).

В любом случае, при дальнейших обращениях к документам, скуль берет данные из кэша, что нам и надо.
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #20 - 26. Ноября 2009 :: 06:58
Печать  
sml писал(а) 26. Ноября 2009 :: 06:55:
запрос-то, возможно, так и работает, но в кэш сразу размещаются все страницы памяти, в которых размещены записи таблиц документов (а может быть только их индексы).


откуда такая инфа ?
что-то я в этом сомневаюсь Улыбка
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #21 - 26. Ноября 2009 :: 07:09
Печать  
slawa писал(а) 26. Ноября 2009 :: 06:58:
откуда такая инфа ?
что-то я в этом сомневаюсь Улыбка


http://www.sql.ru/forum/actualthread.aspx?tid=714878#7977915
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #22 - 26. Ноября 2009 :: 07:18
Печать  
sml писал(а) 26. Ноября 2009 :: 07:09:


Цитата:
Разумеется кэш разогреется, если выполнить
Select * from _1SJOURN(NOLOCK INDEX=ACDATETIME) where
DATE_TIME_IDDOC>=@P1
and
DATE_TIME_IDDOC<=@P2
где @P1 - '17530101', а @P2 - '99991230'


если выполнить, то разогревается,
а если на основе этого запроса создать курсор, то запрос не выполняется и кеш - соответственно не разогревается,
а вот если ты прочитаешь весь курсор, тогда и кеш подогреется

но мы не читаем весь курсор, значит кеш не греется

мне кажется так Улыбка
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #23 - 26. Ноября 2009 :: 07:47
Печать  
slawa писал(а) 25. Ноября 2009 :: 23:08:
Z1 писал(а) 25. Ноября 2009 :: 13:27:
Наконец то вчитался в разогрев кеша.
это полумера представьте если документов много то
сколько будете входить в 1с ?
а во вторых все равно Ваш кеш остынет и снова будет subj


не думаю что эти команды полностью кешируют _1sjourn, которые потом могут быть вытеснены.
тут дело в чем, то другом
может кешируется правильный план запроса, может еще чего

эти команды не сканируют таблицы - они создают курсоры
а данные выбираются постепенно, небольшими порциями, командой ПолучитьДокумент() (sql FETCH)
поэтому не оказывают большого влияния на скорость входа в 1С-ку
да и практика показывает: после выполнения этих команд - проблема ушла Улыбка

ЗЫ
- база 12Гб
- RAM, на самом старом сервере, 1Гб

ЗЫЫ
думаю уже пора переходить на 2008 скуль Улыбка


Цитата:
не думаю что эти команды полностью кешируют _1sjourn, которые потом могут быть вытеснены.

а как же sql выполнит запрос.
Чтобы выполнить запрос данные таблиц переносяться в буфер данных.
Освобождать буфер данных sql сервер не спешит.

Цитата:
может кешируется правильный план запроса

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


Цитата:
эти команды не сканируют таблицы - они создают курсоры
а данные выбираются постепенно, небольшими порциями, командой ПолучитьДокумент() (sql FETCH)
поэтому не оказывают большого влияния на скорость входа в 1С-ку

Если Вы получаете данные порциями это не значит что sql сервер для Вас их генерит порциями.Это зависит от типа курсора.

Цитата:
а и практика показывает: после выполнения этих команд - проблема ушла

Проблема ушла у Вас потому что данные в кеше
Все очень легко проверить очистите буфер кеша и получите подчиненные документы.

Кстати а что будет делать приведенный код если документов 2 000 000 и 200 пользователей пытаются войти в базу ?


Цитата:
думаю уже пора переходить на 2008 скуль

чем sql2008 лучше  sql2005 относительно subj ?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #24 - 26. Ноября 2009 :: 07:50
Печать  
Цитата:
как видно из селектов (период с нулевой даты скуля = 1 января 1753г по 30 декабря 9999г), которыми заполняются курсоры, обращение идет к полной таблице журнала документов и полной таблице подчиненных документов.

Что же Вы не увидели самого главного что когда у нас полный диапазон то условия на начало и конец временного интервала не нужны. Неоптимальный запрос он по любому неоптимальный будь он в курсоре или просто в отдельном запросе.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #25 - 26. Ноября 2009 :: 07:58
Печать  
Ваш вопрос на sql.ru
Цитата:
а почему баг 1С? Этот запрос как-раз спасает от тормозов, а в чем же баг? И почему таких тормозов в 2000м скуле не наблюдается (без всяких разогревов кэшей)?

Баг 1с в том что генериться неоптимальный запрос.
В sql2000 не наблюдается причин по следущим причинам
база в формате sqll2005 а оптимизатор запросов выполняем от sql2000(формат базы 80 ) а кто Вам сказал что  MS будет развивать
такой вариант взаимодействия до наилучшей оптимизации.
режим 80 оставлен только для совместимости. Поэтому оптимизатор запросов "полузадушен" и работает вполсилы.
а в sql2000 сервере и база в родном формате и оптимизатор запросов работает на полную мощность.

Также читал(где не помню) чем больше версия MS sql тем хуже они поддерживают курсоры.  
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #26 - 26. Ноября 2009 :: 08:00
Печать  
Z1 писал(а) 26. Ноября 2009 :: 07:50:
Что же Вы не увидели самого главного что когда у нас полный диапазон то условия на начало и конец временного интервала не нужны. Неоптимальный запрос он по любому неоптимальный будь он в курсоре или просто в отдельном запросе.


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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #27 - 26. Ноября 2009 :: 08:15
Печать  
sml писал(а) 26. Ноября 2009 :: 08:00:
Z1 писал(а) 26. Ноября 2009 :: 07:50:
Что же Вы не увидели самого главного что когда у нас полный диапазон то условия на начало и конец временного интервала не нужны. Неоптимальный запрос он по любому неоптимальный будь он в курсоре или просто в отдельном запросе.


если условия по датам убрать, то индекс, указанный в запросе, как будет выстроен в кэше? По возрастанию, убыванию, или как попало?

Условия в запросе должны быть полезные.
Я считаю что sql серверу ( его оптимизатору запросов ) надо помогать а не мешать.
Бесполезные условия только отнимут у оптимизатора запросов время а так как оптимизатор работает в очень ограниченных временных рамках он(оптимизатор) не сможет сформировать оптимальный план и будет выполнять наилучший из найденных.
Дополнительный условия никак не влияют на индекс тем более в этом запросе индекс явно задан.
только зачем его задавать если все равно потом будет делаться другая сортировка.


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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #28 - 26. Ноября 2009 :: 08:26
Печать  
Цитата:
Я хочу сказать, что запросы нужно оптимальные писать
Glory из sql.ru
Полностью согласен.

У себя по subj сделал следующее в дереве подчинения написан прямой запрос для получения подчин. документов.
Пользователям рекомендовано подчиненные документы получать
через дерево подчинения а не через журнал подчиненных документов.

либо есть еще варианты subj  перечитать и  применить ветку с  mista
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: есть ли альтернатива общим журналам документов 1С 7.7?
Ответ #29 - 26. Ноября 2009 :: 09:04
Печать  
Z1 писал(а) 26. Ноября 2009 :: 07:47:
Цитата:
не думаю что эти команды полностью кешируют _1sjourn, которые потом могут быть вытеснены.

а как же sql выполнит запрос.
Чтобы выполнить запрос данные таблиц переносяться в буфер данных.
Освобождать буфер данных sql сервер не спешит.

вот я и думаю, что сервер не выполняет запрос, а получает данные порциями по требованию - т.е. кеш не разогревается.

Z1 писал(а) 26. Ноября 2009 :: 07:47:
Цитата:
эти команды не сканируют таблицы - они создают курсоры
а данные выбираются постепенно, небольшими порциями, командой ПолучитьДокумент() (sql FETCH)
поэтому не оказывают большого влияния на скорость входа в 1С-ку

Если Вы получаете данные порциями это не значит что sql сервер для Вас их генерит порциями.Это зависит от типа курсора.

Вполне допускаю, что тип курсора важен.
Какой тип курсора создается в нашем случае ?

Z1 писал(а) 26. Ноября 2009 :: 07:47:
Цитата:
а и практика показывает: после выполнения этих команд - проблема ушла

Проблема ушла у Вас потому что данные в кеше
Все очень легко проверить очистите буфер кеша и получите подчиненные документы.

Кстати а что будет делать приведенный код если документов 2 000 000 и 200 пользователей пытаются войти в базу ?

Какие проблемы ?
При входе:
1. Получаем первый документ базы
2. Создаем выборку подчиненных документов (которая скорее всего пустая - у меня так)
и так 200 раз (один документ и пустая выборка)
количество документов в базе - не имеет значения

А Вы как думаете - что происходит ?

Z1 писал(а) 26. Ноября 2009 :: 07:47:
Цитата:
думаю уже пора переходить на 2008 скуль

чем sql2008 лучше  sql2005 относительно subj ?


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