Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7   вперед  Ctrl      все
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Егоров Александр,

у меня все базы - торговля...
реиндексацию делал для всех баз.
24 июн 11, 17:55    [10871746]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
evoname,

Хм... и все базы одинакового размера и во всех базах одинаково тормозит? Тогда хотя бы примерно, что у Вас по разным базам разделено?

Я к тому, что двое суток у Вас реиндексация шла - по всем базам сразу, или запустили какую-то одну?
24 июн 11, 18:07    [10871852]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Nika1979
Member

Откуда: г. Наро-Фоминск, МО
Сообщений: 99
Егоров Александр
evoname
Егоров Александр,

диспетчером по телефону формируется накладная клиенту, в накладной проставляются количества, дальше при записи и проведении по каждой позиции производится расчет цены в зависимости от почти 100 различных показателей, таких как объемы закупок, лояльность, количество одинаковых позиций, числа привлеченных клиентов и тому подобного. Это система мотивации. Она прорабатывалась годами. Делать расчет в другое время нельзя, т.к. клиент на телефоне ждет сумму своего заказа. Вот такие пироги.


То есть объем закупок выбранного клиента, лояльность, число привлеченных клиентов и тому подобного нельзя рассчитать при выборе клиента, а не при записи документа? ;) И потом, я правильно понимаю, что пока документ не запишется - назвать клиенту сумму, все еще висящему на телефоне, диспетчер не сможет - и это и является одним из основных стимулов ускорить 1С?


И почему объем закупок выбранного клиента, лояльность, число привлеченных клиентов и тому подобного нельзя рассчитать одни раз по всем клиентам, ночью например и сохранить в отдельную таблицу, а при формировании документа рассчитывать цену по уже готовым данным. Да конечно не будет учтено изменение объемов закупок за текущий день, но не думаю, что оно настолько велико.
24 июн 11, 18:09    [10871870]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Kateryne
Member

Откуда:
Сообщений: 351
Согласна на 100% с высказавшимися - сейчас вынужденно занимаюсь именно 1С, и именно прямыми ее запросами. До этого занималась Ораклом, конечно очень много нюансов и отличий, но и общего достаточно много, думаю не сильно ошибусь с диагнозом. Ваша проблема скорее всего связана с узкими местами в коде 1С (которая дергает на каждое получение объекта по запросу, например. И слишком любит блокировать невовремя и лишнее.). Раз уж конфа все равно не поддерживается, я бы узкие места таки переписала на 1cpp. У нас вообще конфа практически так сделана, что от 1С только отчеты (даже формы переписаны), и работают уже не один год прекрасно, ибо по сути используются все возможности MS SQL.

Кстати, вопрос к присутствующим: не пробовала ни разу именно потому что не понадобилось, запросы написаны аккуратно - но если проблемы у ТС связаны с блокировками таблицы, а 1С код, предположим, менять нельзя, может ли помочь переключение MS SQL в режим версионника? Это вообще хоть что-то дает в связке MS SQL + 1C?
24 июн 11, 18:14    [10871912]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 516
evoname
ну ведь наверняка можно сделать что-то безболезненное, несложное, что приведет к росту производительности хоть на 1%... уже было бы неплохо.
Попробуйте как будет работать сиквел в однопроцессорном режиме. Не понравится - вернёте на место.
How to Configure the Affinity Mask (SQL Server Management Studio)
24 июн 11, 19:31    [10872491]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
dmitry.sloutskov
Guest
Kateryne,

Боюсь не поможет... потому что 1С насрать на такие мелочи :-) у него свои locks.
24 июн 11, 19:57    [10872604]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Егоров Александр
evoname,

Хм... и все базы одинакового размера и во всех базах одинаково тормозит? Тогда хотя бы примерно, что у Вас по разным базам разделено?

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


Более двух суток она шла собственными средствами SQL (через maintenance plan), сегодня мне один очень хороший человек прислал скрипт, который сделал дефрагментацию и перестроение индексов за полтора часа... сделали на пробу расчет цен, ускорение заметно невооруженным глазом. по оценке нашего 1С программиста "раз в десять, не меньше"...
24 июн 11, 20:23    [10872702]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Gerros
evoname
ну ведь наверняка можно сделать что-то безболезненное, несложное, что приведет к росту производительности хоть на 1%... уже было бы неплохо.
Попробуйте как будет работать сиквел в однопроцессорном режиме. Не понравится - вернёте на место.
How to Configure the Affinity Mask (SQL Server Management Studio)


попробовал. производительность уменьшается пропорционально количеству убираемых процессоров. не вариант.
24 июн 11, 20:26    [10872711]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
londinium
Member

Откуда: Киев
Сообщений: 1199
Коллеги правильно подсказали - считайте коэффициент лояльности клиента мега-скриптом при закрытии операционного дня, перестраивайте индексы ночью, и все будет веселее
24 июн 11, 22:46    [10873188]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Gerros
evoname
ну ведь наверняка можно сделать что-то безболезненное, несложное, что приведет к росту производительности хоть на 1%... уже было бы неплохо.
Попробуйте как будет работать сиквел в однопроцессорном режиме. Не понравится - вернёте на место.
How to Configure the Affinity Mask (SQL Server Management Studio)
Можно еще пробовать в однодисковом режиме запускать. Вдруг лучше станет?
24 июн 11, 23:40    [10873397]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Гавриленко Сергей Алексеевич
Gerros
пропущено...
Попробуйте как будет работать сиквел в однопроцессорном режиме. Не понравится - вернёте на место.
How to Configure the Affinity Mask (SQL Server Management Studio)
Можно еще пробовать в однодисковом режиме запускать. Вдруг лучше станет?


Это как?.. Что-то мне подсказывает, что будет как с процессорами...
25 июн 11, 06:59    [10874050]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
ABC_1982
Member

Откуда: Москва
Сообщений: 418
evoname
Гавриленко Сергей Алексеевич
пропущено...
Можно еще пробовать в однодисковом режиме запускать. Вдруг лучше станет?


Это как?.. Что-то мне подсказывает, что будет как с процессорами...


Это шутка такая саркастическая. Тут так принято жестковато шутить над глупыми предложениями, что может ввести в заблуждение новичков.

Значит, реиндексация немного помогла? Это логично. Давайте продолжать. :)
25 июн 11, 07:44    [10874057]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
evoname
Егоров Александр
evoname,

Хм... и все базы одинакового размера и во всех базах одинаково тормозит? Тогда хотя бы примерно, что у Вас по разным базам разделено?

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


Более двух суток она шла собственными средствами SQL (через maintenance plan), сегодня мне один очень хороший человек прислал скрипт, который сделал дефрагментацию и перестроение индексов за полтора часа... сделали на пробу расчет цен, ускорение заметно невооруженным глазом. по оценке нашего 1С программиста "раз в десять, не меньше"...


Так на одной базе или на всех сразу?

И скриптом не поделитесь? Не только у Вас такие проблемы могут быть... А по скрипту можно будет вывести некую методу борьбы с фрагментацией индексов в 1Сных базах, приводящих к заметному снижению производительности. Ибо такая фрагментация индексов - это ненормальная стратегия индексирования, а изменить ее на платформе нельзя...
25 июн 11, 08:34    [10874070]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
Kateryne,

Версионность на MSSQL не пробовал... как оно отнесется к таким запросам?
ALTER procedure [dbo].[_1sp__1SJOURN_TLockX] AS
set nocount on declare @i integer select @i=1 from _1SJOURN(TABLOCKX HOLDLOCK) where 0=1
Это штатная процедура 1С... избавиться от нее или обойти ее проверку можно, но это нарушение лицензионной чистоты...
25 июн 11, 08:42    [10874079]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
Gerros,

Это может помочь, если терминал и скуль на одной машине. Тут они разнесены.
25 июн 11, 08:45    [10874085]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
ABC_1982
Member

Откуда: Москва
Сообщений: 418
Егоров Александр
И скриптом не поделитесь? Не только у Вас такие проблемы могут быть... А по скрипту можно будет вывести некую методу борьбы с фрагментацией индексов в 1Сных базах, приводящих к заметному снижению производительности. Ибо такая фрагментация индексов - это ненормальная стратегия индексирования, а изменить ее на платформе нельзя...


Скрипт - это пример D из статьи BOL про sys.dm db index physical stats распространенный на все базы. Он непричесанный (есть заглушки неубранные, которые ссылаются на мою структуру обслуживания). Я прошу его не выкладывать.

Если надо - я его причешу, уберу "личное" и выложу, только сдается мне этих скриптов пруд пруди и все одинаковые. :)
25 июн 11, 08:50    [10874091]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
ABC_1982,

Ага... Понял... Скрипт Ваш, и его главное преимущество - перестройка наиболее дефрагментированных индексов, а не всех подряд?
25 июн 11, 09:05    [10874106]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Егоров Александр
evoname
пропущено...


Более двух суток она шла собственными средствами SQL (через maintenance plan), сегодня мне один очень хороший человек прислал скрипт, который сделал дефрагментацию и перестроение индексов за полтора часа... сделали на пробу расчет цен, ускорение заметно невооруженным глазом. по оценке нашего 1С программиста "раз в десять, не меньше"...


Так на одной базе или на всех сразу?

И скриптом не поделитесь? Не только у Вас такие проблемы могут быть... А по скрипту можно будет вывести некую методу борьбы с фрагментацией индексов в 1Сных базах, приводящих к заметному снижению производительности. Ибо такая фрагментация индексов - это ненормальная стратегия индексирования, а изменить ее на платформе нельзя...


На всех сразу. По поводу скрипта - не могу выложить без согласия автора. Если он читает эту ветку, пусть выложит его сам. Авторство не мое и распоряжаться им я не имею права.
25 июн 11, 09:08    [10874111]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Егоров Александр
Kateryne,

Версионность на MSSQL не пробовал... как оно отнесется к таким запросам?
ALTER procedure [dbo].[_1sp__1SJOURN_TLockX] AS
set nocount on declare @i integer select @i=1 from _1SJOURN(TABLOCKX HOLDLOCK) where 0=1
Это штатная процедура 1С... избавиться от нее или обойти ее проверку можно, но это нарушение лицензионной чистоты...


Что мне с этим делать и какие из-за этого могут быть проблемы?
25 июн 11, 09:09    [10874112]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
ABC_1982,

Всмысле, что если это так, то можно и не выкладывать... :)
Тут тогда лучше подождать немного и попросить ТС-а опубликовать запрос по фрагментации индексов по таблицам. Тогда можно будет понять, что именно у него ломает фрагментацию...
25 июн 11, 09:09    [10874113]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Егоров Александр
ABC_1982,

Всмысле, что если это так, то можно и не выкладывать... :)
Тут тогда лучше подождать немного и попросить ТС-а опубликовать запрос по фрагментации индексов по таблицам. Тогда можно будет понять, что именно у него ломает фрагментацию...


Ответ такой:

Сообщение 1018, уровень 15, состояние 1, процедура _1sp__1SJOURN_TLockX, строка 2
Incorrect syntax near 'HOLDLOCK'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.
25 июн 11, 09:15    [10874117]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
при этом Ваш запрос, выполненный по отношению к базе никакой ошибки не выдал. и никакого сообщения тоже. просто отработал и все.
25 июн 11, 09:16    [10874118]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
evoname
при этом Ваш запрос, выполненный по отношению к базе никакой ошибки не выдал. и никакого сообщения тоже. просто отработал и все.


сорри. это не Ваш запрос, а вот этот я выполнил:
ALTER procedure [dbo].[_1sp__1SJOURN_TLockX] AS
set nocount on declare @i integer select @i=1 from _1SJOURN(TABLOCKX HOLDLOCK) where 0=1
25 июн 11, 09:22    [10874119]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
Егоров Александр
Member

Откуда: Хабаровск
Сообщений: 517
evoname
Что мне с этим делать и какие из-за этого могут быть проблемы?

Вам с этим ничего не сделать. Это внутренние механизмы платформы 1С. Блокировка таблиц в ней связаны с тем, что платформа сама занимается генерацией уникальных номеров объектов. Ключем объекта является простой "набор букв" (с точки зрения sql-сервера, конечно), который платформа формирует по своим правилам.

По простому если - sql сервер гарантирует, что в таблице не будет повторяющихся IDDOC (поле в таблице _1SJOURN, которое содержит внутренние идентификаторы всех объектов "Документ"). Заставляет его это делать уникальный индекс, накладываемый платформой на поле IDDOC при создании структуры БД. Далее платформа 1С сама генерирует эти IDDOC по своим внутренним правилам, но может гарантировать уникальность только если добавление\изменение любого объекта в пределах одной базы будет "монопольным". Что в сетевом режиме обеспечивается платформой через полную блокировку всех таблиц, связанных с хранением объекта и его состояния, а так же связанных с этим состоянием итогов.... Что влечет за собой рекомендацию по сокращению времени работы алгоритмов записи\проведения. А алгоритмы эти делает уже сам 1Сник в процедурах ПриЗаписи() всех объектов в целом, и в процедуре ОбработкаПроведения() объектов типа документ в частности на языке 1С.
25 июн 11, 09:43    [10874132]     Ответить | Цитировать Сообщить модератору
 Re: Помогите ламеру SQL починить  [new]
evoname
Member

Откуда: Orenburg
Сообщений: 81
Егоров Александр
ABC_1982,

Всмысле, что если это так, то можно и не выкладывать... :)
Тут тогда лучше подождать немного и попросить ТС-а опубликовать запрос по фрагментации индексов по таблицам. Тогда можно будет понять, что именно у него ломает фрагментацию...


А какой это запрос?
25 июн 11, 09:46    [10874138]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить