Имя: Пароль:
1C
 
Справочник 110 000 элементов 2
0 DGorgoN
 
19.05.09
15:04
Продолжение: Справочник 110 000 элементов - кинте плиз пример ускорения работы с таким
Результаты теста:

***total***     604090.0     100.0
LCK_M_U     189734.0     31.4
NETWORKIO     189064.0     31.3
LCK_M_X     179376.0     29.7
LCK_M_IS     19175.0     3.2
CXPACKET     10164.0     1.7
PAGEIOLATCH_SH     6752.0     1.1
1 DGorgoN
 
19.05.09
15:05
***total***     604090.0     100.0
LCK_M_U     189734.0     31.4
NETWORKIO     189064.0     31.3
LCK_M_X     179376.0     29.7
LCK_M_IS     19175.0     3.2
CXPACKET     10164.0     1.7
PAGEIOLATCH_SH     6752.0     1.1
PAGEIOLATCH_EX     3822.0     .6
WRITELOG     2845.0     .5
LCK_M_IX     1078.0     .2
LATCH_EX     845.0     .1
PAGELATCH_EX     419.0     .1
PAGELATCH_DT     .0     .0
PAGEIOLATCH_NL     .0     .0
PAGEIOLATCH_KP     .0     .0
LATCH_DT     .0     .0
PAGELATCH_NL     .0     .0
PAGELATCH_KP     .0     .0
PAGELATCH_SH     250.0     .0
PAGELATCH_UP     267.0     .0
PAGESUPP     16.0     .0
SHUTDOWN     .0     .0
CURSOR     .0     .0
EXECSYNC     .0     .0
LATCH_NL     .0     .0
LATCH_KP     .0     .0
LATCH_SH     .0     .0
LATCH_UP     .0     .0
PAGEIOLATCH_DT     .0     .0
TRAN_MARK_NL     .0     .0
TRAN_MARK_KP     .0     .0
TRAN_MARK_SH     .0     .0
TRAN_MARK_UP     .0     .0
TRAN_MARK_EX     .0     .0
TRAN_MARK_DT     .0     .0
PAGEIOLATCH_UP     31.0     .0
LCK_M_SIU     .0     .0
LCK_M_SIX     .0     .0
LCK_M_UIX     .0     .0
LCK_M_BU     .0     .0
LCK_M_RS_S     .0     .0
LCK_M_RS_U     .0     .0
LCK_M_RIn_NL     .0     .0
LCK_M_RIn_S     .0     .0
LCK_M_RIn_U     .0     .0
LCK_M_RIn_X     .0     .0
LCK_M_RX_S     .0     .0
LCK_M_RX_U     .0     .0
LCK_M_RX_X     .0     .0
IO_COMPLETION     251.0     .0
ASYNC_IO_COMPLETION     .0     .0
RESOURCE_SEMAPHORE     .0     .0
DTC     .0     .0
OLEDB     .0     .0
FAILPOINT     .0     .0
ASYNC_DISKPOOL_LOCK     .0     .0
UMS_THREAD     .0     .0
PIPELINE_INDEX_STAT     .0     .0
PIPELINE_LOG     .0     .0
PIPELINE_VLM     .0     .0
LOGBUFFER     .0     .0
PSS_CHILD     .0     .0
EXCHANGE     .0     .0
XCB     .0     .0
DBTABLE     .0     .0
EC     .0     .0
TEMPOBJ     .0     .0
XACTLOCKINFO     .0     .0
LOGMGR     .0     .0
CMEMTHREAD     .0     .0
LCK_M_IU     .0     .0
MISCELLANEOUS     .0     .0
LCK_M_SCH_S     .0     .0
LCK_M_SCH_M     .0     .0
LCK_M_S     .0     .0
2 vde69
 
19.05.09
15:10
в целом не так плохо, теперь лезем сюда http://msdn.microsoft.com/ru-ru/library/ms179984.aspx
3 DGorgoN
 
19.05.09
15:12
31.4
Имеет место, когда задача ожидает получения блокировки на обновление. Матрицу совместимости блокировок
31.3
NETWORKIO - понял что сеть, но не нашел
4 DGorgoN
 
19.05.09
15:13
LCK_M_X - тоже не понял
5 Mikeware
 
19.05.09
15:13
NETWORKIO     189064.0     31.3 - бей админов
6 mishaPH
 
19.05.09
15:14
(3) если я ничего не путаю, это как раз затык в сети из-за множества мелких запросов.
7 DGorgoN
 
19.05.09
15:14
(5) А объяснить можешь - шо це?
8 DGorgoN
 
19.05.09
15:14
И из-за чего оно происходит?
9 mishaPH
 
19.05.09
15:14
(5) а смысл то. Сеть же не персональня для 1С. мало что там еще может передаватся.
10 mishaPH
 
19.05.09
15:15
+9 люди то работают.
11 mishaPH
 
19.05.09
15:16
(8) ну представь когда ты с винта копируешь 1000 файлов общей массой 1 мег и 1 файл 1 мег. Скорость одна будет?
12 mishaPH
 
19.05.09
15:18
13 Mikeware
 
19.05.09
15:18
(9) Это сиквел ожидает от клиента окончания принятия данных. Либо клиент тормозит, либо сеть...
NETWORKIO    0x800    This waittype indicates that the SPID is waiting for the client application to fetch the data before the SPID can send more results to the client application.
14 DGorgoN
 
19.05.09
15:18
LCK_M_U - 31.4
Имеет место, когда задача ожидает получения блокировки на обновление.
NETWORKIO - 31.3
Обращение к сети
LCK_M_X - 29.7
Имеет место, когда задача ожидает получения блокировки на монопольный доступ.
15 mishaPH
 
19.05.09
15:19
(13) ну епть, когда листают справочник и идет чертова туча запросов к серваку мелких то что тут гадать.
16 DGorgoN
 
19.05.09
15:20
Значит таки оно. ладненько - буду писать новую версию справоника..

есть еще предположения7
17 mishaPH
 
19.05.09
15:20
+15 как очередь к дисковой сстеме образуется. Сеть то одна и для всех клиентов.
Кстати автор. А что там за сеть? что за хаб?
18 DGorgoN
 
19.05.09
15:21
(17) Конкретно модель не скажу - значю что гигабит
19 Mikeware
 
19.05.09
15:21
(15) Ежу понятно. Тольк тут фигня в том, чт сервер _успевает_ обработать эти запросы, и ждет _клиентов_...
20 mishaPH
 
19.05.09
15:22
+ 15 клиенту тоже в обратку надо каждый запрос обработать.
21 mishaPH
 
19.05.09
15:24
(19) ну тут такая фигня, что что не только сервер захлебывается от запросов, но и видимо клиенту не хватает время их обработать. Уменьшить количество запросов видимо надо.
(18) видал я одну сеть гигабитную, вроде гигабит показывал а работал хуже сотки.
22 DGorgoN
 
19.05.09
15:24
(19) Т.е. вопрос и в том что у клиента проблемы с сетью?
23 vde69
 
19.05.09
15:24
у меня вызывает удивление
LCK_M_X - задача ожидает получения блокировки на монопольный доступ.

кроме того учитывая, что работают в терминале, странное вот это:
NETWORKIO - вероятно цитриксу мало памяти и он юзает файл подкачки, или ЦП мало
24 Mikeware
 
19.05.09
15:24
(16) Проверить сетевку, загрузку сети. Убрать из протоколов трубы.
Протестировать еще раз.
25 DGorgoN
 
19.05.09
15:25
(23) там только рдп - стандартный..
26 DGorgoN
 
19.05.09
15:25
(24) Да сетевухи как бы сильно не напрягаются - отсилы 25, макс 50% когда сильно большие отчеты получают
27 vde69
 
19.05.09
15:25
(25) тем более, проверить терминалы на свободную физическую память и загрузку ЦП
28 Mikeware
 
19.05.09
15:26
(21) Судя по результатам, сервер не захлебывается... А вот на клиентах - проблемы. (в принципе, может даже на одном клиенте)
29 vde69
 
19.05.09
15:26
(26) возможны проблеммы например в свиче, или еще где
30 mishaPH
 
19.05.09
15:26
(23) выборка периодических реквизитов и длинных строк идет из таблицы констант,
может ей для этого надо таблицу заблокировать.
2. гм. тоже кстати вариант. А не в курсе, при получении запросов не идет кеширование в файлы пользователя в каталог юзера? не создает он там очередь на диск?
31 vde69
 
19.05.09
15:29
одно могу сказать точно - винты СУПЕР
32 Mikeware
 
19.05.09
15:30
(30) Не создает и не кэширует. Только "черные запросы" так поступают.
33 DGorgoN
 
19.05.09
15:30
(31) :) в какую сторону?
34 mishaPH
 
19.05.09
15:31
(32) понятно
35 vde69
 
19.05.09
15:31
(33) менее 1% напрягают, норма примерно 10% по этому можно увеличить скорость SQL примерно в 5-10 раз
36 Mikeware
 
19.05.09
15:32
(33) в хорошую...
--
И посмотри степень параллеллизма. Если не 1, то поставь в 1.
37 DGorgoN
 
19.05.09
15:32
(35) Круть, а как её увеличить? :)
38 mishaPH
 
19.05.09
15:32
(37) а смысл, если у тебя проблема на стороне клиента
39 Mikeware
 
19.05.09
15:32
(37) Нормальными запросами :-))))))
40 vde69
 
19.05.09
15:32
(37) если устранишь первые 3 строки
41 DGorgoN
 
19.05.09
15:33
(39) Это понятно..
(40) Тоже понял, т.е. имхается мне справочник переделывать 100%
42 Mikeware
 
19.05.09
15:33
+(38) Кстати, да... Что же сказал старый еврей Профайлер? :-)))
43 mishaPH
 
19.05.09
15:37
(41) Справочник переделывать не так просто. тебе везде надо копать где реквизиты используются.
Для начала убери все эти запросы с формы и кешируй в ТЗ что выбиралось хоть раз. Как писалось ранее.
44 mishaPH
 
19.05.09
15:41
LCK_ тоже не с проста, видимо периодика выбирается из таблицы констант, вот и требует для выборки ее монопольного доступа.
45 vde69
 
19.05.09
15:43
(41) кроме справочников могут напрягать длинные транкзации (большие документы).

для начала:

1. напряги админов на предмет потеряных покетов на роутерах и постарася привести количество роутеров от сервера к клиенту не более 2х (правило 3-4-5, вторая часть)
2. проверь на всех клиентах ОЗУ

потом уже за справочник.
46 mishaPH
 
19.05.09
15:47
(45) дык у него же терминал помоему. там клиент то один фактически.
47 vde69
 
19.05.09
15:49
(46) не на 100% если у него 49 в терминале и один на дохлом клиенте то этот 1 и тормозит все
48 DGorgoN
 
19.05.09
15:49
(46) терминальных машин 3 штуки
49 Mikeware
 
19.05.09
15:49
(44) Если у него периодика не отображается - то достаточно убрать ИспользоватьДату(). И тогда периодика выдергиваться не будет кроме явных запросов...
50 vde69
 
19.05.09
15:52
(48) 1с ОЧЕНЬ плохо с широковещательными пакетами ведет себя (особено когда разное количество сегментов), это то-же админам на ухо шепни
51 mishaPH
 
19.05.09
15:54
(48) В общем убирай все нафиг из формы.
52 DGorgoN
 
19.05.09
15:58
ужас - на 1 серваке сотка!
53 mishaPH
 
19.05.09
16:00
(52) балансируй нагрузку
54 DGorgoN
 
19.05.09
16:01
вечером обещали гигабит поставить :)
55 Mikeware
 
19.05.09
16:02
(52) Воттераз! подумал Штирлиц....
Вообще, пусть в каждый терминальник по две сетевки воткнут! Одна под клиентский доступ, вторая - под сервер БД
56 Mikeware
 
19.05.09
16:03
В общем, советов тебе хватит...
57 mishaPH
 
19.05.09
16:04
(55) ты думаешь там не так? Это вообще-то аксиота так сказать для профи терминальные серваки и СКл сервак посадить на отдельный гигабитный канал
58 mishaPH
 
19.05.09
16:04
аксиота = аксиома
59 mishaPH
 
19.05.09
16:06
(54) админов запинать
60 Mikeware
 
19.05.09
16:07
(57) аксиомы - они разные бывают :-))) Некоторым аксиомы доказывать приходится... (правда, после этого теоремам на слово верят :-))
61 DGorgoN
 
19.05.09
16:14
так - т.е. сеть надо мутить - это раз. правильно?
62 mishaPH
 
19.05.09
16:22
(61) да у тебя там целый комплекс.
63 Mikeware
 
19.05.09
16:32
(61) Мутить не надо - она у тебя и так мутная :-)
Но в первую очередь разобраться именно с сетью. Как толлько нетворкио уменьшится до единиц процентов - можно будет смотреть далее
64 vde69
 
19.05.09
16:45
(63) короче опять все ждем завтра :) и новых результатов тестов
65 mishaPH
 
19.05.09
16:47
(64) а что. Это увлекательный процесс. Я сам берусь с удовольствие за работу по переводу на скл с дбф и оптимизацией дальнейшей. Увлекательно и не скучное тупое кодирование
66 DGorgoN
 
19.05.09
19:26
В общем патч установлен, скуль вроде хавает 7 гигов, с/к заменена.
Короче завтра буду считать :)
67 DGorgoN
 
20.05.09
08:49
Ну что? в общем видимых результатов данные действия не принесли - снова запустил счетчики..
68 Mikeware
 
20.05.09
08:55
(67) Спрошу в тысячный раз - "а что говорит товарищ Профайлер"?
69 DGorgoN
 
20.05.09
08:58
(68) Куда тыкать в этот профайлер? шо це ваще?
70 DGorgoN
 
20.05.09
09:01
DBCC SHOWCONTIG scanning '_1SCONST' table...
Table: '_1SCONST' (1640717989); index ID: 1, database ID: 8
TABLE level scan performed.
- Pages Scanned................................: 21637
- Extents Scanned..............................: 2720
- Extent Switches..............................: 2803
- Avg. Pages per Extent........................: 8.0
- Scan Density [Best Count:Actual Count].......: 96.47% [2705:2804]
- Logical Scan Fragmentation ..................: 0.48%
- Extent Scan Fragmentation ...................: 19.74%
- Avg. Bytes Free per Page.....................: 1298.4
- Avg. Page Density (full).....................: 83.96%
71 DGorgoN
 
20.05.09
09:09
+(69) уже разобрался..
72 DGorgoN
 
20.05.09
09:12
(710 буду смотреть профпйлер
73 vde69
 
20.05.09
09:37
(70) судя по всему у тебя явные проблеммы с переодическими реквизитами

1. попробуй почистить конфу от лишних
2. можно подрезать историю (в разумных значениях)
3. сделать упаковку и реиндексацию средствами SQL (а также обновить планы запросов и сбросить статистику)
74 DGorgoN
 
20.05.09
09:39
(73) обновить планы запросов и сбросить статистику - это какими методами?
75 vde69
 
20.05.09
09:39
(73)+ если в переодических есть строки - уменьши их длинну
76 vde69
 
20.05.09
09:40
(74) это средствами SQL... я не помню, ибо делают это админы
77 Mikeware
 
20.05.09
09:43
(73) "обновить планы запросов и сбросить статистику" - можно подробнее?
Точнее, зачем сбрасывать статистику, и как обновить планы запросов?
78 DGorgoN
 
20.05.09
09:46
поспрошаю - но врядли они что-то толковое скажут..
79 vde69
 
20.05.09
09:46
(77) это SQL фишки связаные с оптимизацией запросов средствами SQL, делаеться это для того, что-бы сам процесс оптимизации запросов шел быстрее. подробнее  ищи в документации или www.sql.ru
80 DGorgoN
 
20.05.09
09:52
DBCC INDEXDEFRAG(database_name, table_name, index_name).
81 Mikeware
 
20.05.09
09:53
(79) Сброс статистики обычно делается для оптимизации плана выполнения при существенном изменении структуры базы (например, добавления/удаления/изменения структуры индексов) - для того, чтобы старая статистика не влияла. Зачем сбрасывать при уменьшении количества данных - я не понимаю.
А планы запросов вообще строятся автоматически (если не указывать хинты, а 1с их не указывает) основываясь на статистике, поэтому этот пункт непонятен вообще...
82 DGorgoN
 
20.05.09
09:54
4. Обновление статистики для оптимизации запросов:

exec sp_msforeachtable N’UPDATE STATISTICS ? WITH FULLSCAN’
DBCC FREEPROCCACHE
83 Sammo
 
20.05.09
09:58
(c) Регламентные операции на уровне СУБД для MS SQL Server
Автор: Рупасов Константин (1С, Москва)

Для обновления статистик по всем таблицам базы данных необходимо выполнить следующий SQL запрос:
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'

Таким образом, рекомендуется всегда после обновления статистик очищать содержимое процедурного КЭШа.
Для очистки процедурного КЭШа MS SQL Server необходимо выполнить следующий SQL запрос:
DBCC FREEPROCCACHE

Рекомендуется регулярное выполнение дефрагментации индексов. Для дефрагментации всех индексов всех таблиц базы данных необходимо использовать следующий SQL запрос (предварительно подставив имя базы):
sp_msforeachtable N'DBCC INDEXDEFRAG (<имя базы данных>, ''?'')'

Рекомендуется выполнять регулярную переиндексацию таблиц базы данных. Для реиндексации всех таблиц базы данных необходимо выполнить следующий SQL запрос:
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
84 vde69
 
20.05.09
09:59
(81) при изменении конфигурации 1с это НЕ ДЕЛАЕТ, по этому это надо делать переодически... кроме того влияет размер таблиц, а они растут.
85 Mikeware
 
20.05.09
10:07
(84) Естественно, 1с это не делает. Только в данном случае затыки с периодикой, а эта табличка "условно-постоянная", из пофигурации ее не исковеркать. Поэтому статистика ее неизменна (условно, конечно) и зависит от данных (не столько от их количества, сколько от вариативности). Размер таблиц может играть существенную роль только при фуллскане, а тут все-таки индексный...
86 Mikeware
 
20.05.09
10:07
(80)
DECLARE @MyTable varchar(32)
DECLARE @MyIndex varchar(32)
DECLARE MyCursor CURSOR FOR
SELECT o.name, i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id = i.id
WHERE (o.xtype = 'U') AND (INDEXPROPERTY(i.id, i.name, 'isStatistics') = 0) AND (i.dpages > 0)
ORDER BY o.name, i.indid
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
WHILE @@FETCH_STATUS=0
BEGIN
PRINT 'Дефрагментация индекса '+@MyIndex+' из таблицы '+@MyTable
DBCC INDEXDEFRAG (0,@MyTable,@MyIndex)
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
END
CLOSE MyCursor
DEALLOCATE MyCursor
87 vde69
 
20.05.09
10:09
(85) LOL

признак сортировки у переодического реквизита убери, или вообще сделай из переодического постоянный реквизит
88 Mikeware
 
20.05.09
10:14
(87) Признак сортировки у периодического???? это как, пардон?
А если я сделаю постоянный, вариативность индекса idd не изменится.
89 vde69
 
20.05.09
10:23
(88) ну ступил с сортировкой.

все равно размер имеет значение :)
90 Sadovnikov
 
20.05.09
10:25
Не надоело? :)
91 vde69
 
20.05.09
10:26
(90) мы сейчас еще голосовалку заведем и до 1000 постов дотянем :)
92 Mikeware
 
20.05.09
10:27
(89) Значение имеет не столько размер, сколько нормальная организация.
93 СуперМега Монстр
 
20.05.09
10:28
тихо так тихо: а может размер сетевого пакета уменьшить?
94 DGorgoN
 
20.05.09
14:13
***total***,1461065.0,100.0
CXPACKET,428035.0,29.3
LCK_M_X,314154.0,21.5
LCK_M_IS,271796.0,18.6
NETWORKIO,182777.0,12.5
PAGEIOLATCH_SH,88060.0,6.0
LCK_M_U,81030.0,5.5
LCK_M_S,41172.0,2.8
LATCH_EX,14172.0,1.0
PAGEIOLATCH_EX,14147.0,1.0
LCK_M_IX,10999.0,.8
WRITELOG,10323.0,.7
IO_COMPLETION,1074.0,.1
PAGELATCH_EX,1982.0,.1
PAGELATCH_DT,.0,.0
PAGEIOLATCH_NL,.0,.0
PAGEIOLATCH_KP,.0,.0
PAGEIOLATCH_UP,343.0,.0
LCK_M_IU,.0,.0
LATCH_DT,.0,.0
PAGELATCH_NL,.0,.0
PAGELATCH_KP,.0,.0
PAGELATCH_SH,188.0,.0
PAGELATCH_UP,659.0,.0
MISCELLANEOUS,.0,.0
LCK_M_SCH_S,.0,.0
LCK_M_SCH_M,.0,.0
PAGEIOLATCH_DT,.0,.0
TRAN_MARK_NL,.0,.0
TRAN_MARK_KP,.0,.0
TRAN_MARK_SH,.0,.0
TRAN_MARK_UP,.0,.0
TRAN_MARK_EX,.0,.0
TRAN_MARK_DT,.0,.0
ASYNC_IO_COMPLETION,.0,.0
RESOURCE_SEMAPHORE,.0,.0
DTC,.0,.0
OLEDB,.0,.0
FAILPOINT,.0,.0
ASYNC_DISKPOOL_LOCK,.0,.0
UMS_THREAD,.0,.0
PIPELINE_INDEX_STAT,.0,.0
PIPELINE_LOG,.0,.0
PIPELINE_VLM,.0,.0
LCK_M_SIU,.0,.0
LCK_M_SIX,.0,.0
LCK_M_UIX,.0,.0
LCK_M_BU,.0,.0
LCK_M_RS_S,.0,.0
LCK_M_RS_U,.0,.0
LCK_M_RIn_NL,.0,.0
LCK_M_RIn_S,.0,.0
LCK_M_RIn_U,.0,.0
LCK_M_RIn_X,.0,.0
LCK_M_RX_S,.0,.0
LCK_M_RX_U,.0,.0
LCK_M_RX_X,.0,.0
LOGBUFFER,.0,.0
PSS_CHILD,.0,.0
EXCHANGE,62.0,.0
XCB,.0,.0
DBTABLE,.0,.0
EC,.0,.0
TEMPOBJ,.0,.0
XACTLOCKINFO,.0,.0
LOGMGR,.0,.0
CMEMTHREAD,.0,.0
PAGESUPP,91.0,.0
SHUTDOWN,.0,.0
CURSOR,.0,.0
EXECSYNC,.0,.0
LATCH_NL,.0,.0
LATCH_KP,.0,.0
LATCH_SH,.0,.0
LATCH_UP,.0,.0
95 DGorgoN
 
20.05.09
14:15
CXPACKET,428035.0,29.3
Имеет место при попытке синхронизации итератора обмена обработчика запросов. Можно попытаться снизить степень параллелизма, если конфликты такого типа становятся проблемой.

LCK_M_X,314154.0,21.5
Имеет место, когда задача ожидает получения блокировки на монопольный доступ. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks (Transact-SQL).

LCK_M_IS,271796.0,18.6
Имеет место, когда задача ожидает получения блокировки с намерением коллективного доступа (IS). Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks (Transact-SQL).
96 DGorgoN
 
20.05.09
14:17
Люди! Ау!
97 Mikeware
 
20.05.09
14:17
(93) max degree of parallelism
98 vde69
 
20.05.09
14:17
отключай нафиг параллелизм
99 DGorgoN
 
20.05.09
14:18
(98) это где и как? на работающем можно?
100 mishaPH
 
20.05.09
14:18
100 сто
101 vde69
 
20.05.09
14:19
а вообще примерно на 15% лучше уже стало :)
102 vde69
 
20.05.09
14:19
(99) на работающем можно, ставь цыфру 1 туда
103 Mikeware
 
20.05.09
14:20
(99) можно. Ставь 1. Перезапуска не требует.
104 DGorgoN
 
20.05.09
14:21
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO

так?
105 vde69
 
20.05.09
14:22
меня волнует переход в монопольный режим и обратно, у меня такого просто нету.

имей в виду, что ты имеешь статистику по СЕРВЕРУ, может у тебя какие другие "хитрые" базы или репликации или джобы ?
106 Mikeware
 
20.05.09
14:23
(104) ага
И снова EXEC track_waitstats :-)))
107 mishaPH
 
20.05.09
14:23
(99) Ентерпрайз манагер, на сервере твоем правая кнопка мыши свойства.
закладка процессы.
поставить галку в разделе параллелеизм на 1 процесс
108 Mikeware
 
20.05.09
14:24
(105) LCK_M_X - разве не TabLock_x &
109 DGorgoN
 
20.05.09
14:24
(106) не понял?

Зы - что делать то? может из-за параллелизма 1 постарадать производительность сервера в целом?
110 vde69
 
20.05.09
14:25
(109) кроме баз 1с чего еще есть на SQL сервере?
111 mishaPH
 
20.05.09
14:26
(109) нет. не постразат. у тебя много пользователей и много обращений и запростов. СКЛ пытается распаралелить по процам задачу что на мелких задачах приводит к тормозам.
Помоему так.
112 DGorgoN
 
20.05.09
14:26
(110) нет
113 Mikeware
 
20.05.09
14:28
(109) Он у тебя явно больше, чем 1 - посмотри через sp_configure
когда включено 'show advanced options'
114 DGorgoN
 
20.05.09
14:29
58 коннектов сейчас к базе
115 DGorgoN
 
20.05.09
14:35
(113)
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism';
GO


так?
116 vde69
 
20.05.09
14:36
(111) он вложеные запросы вычисляет паралельно на разных камнях, а блокировки возникают из-за неравномерности времени выполнения, что на приводит к очереди как на маленьких запрсах, так и на больших неравномерных, но зато дает более сболансированую нагрузку. Вообще это не очень страшно если-бы это была не 1с с кривыми руками...

(114) только количество камней по максимому ставь, тогда он активных пользователей делит по ним в соотвествии с наложеными блокировками
117 DGorgoN
 
20.05.09
14:37
(116) можно поподробне?
118 DGorgoN
 
20.05.09
14:37
кстати параметр сменился с 0 на 1
119 DGorgoN
 
20.05.09
14:37
запустил тест
120 mishaPH
 
20.05.09
14:37
(116) ну я это и имел в виду
121 DGorgoN
 
20.05.09
14:38
на часок.

сделано:

   
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
122 Mikeware
 
20.05.09
14:39
(117) В янедекс. Там статейка хорошая есть на этот счет.
123 vde69
 
20.05.09
14:39
(118) правильно!
0 - это максимум

запускай тест еще раз.
124 vde69
 
20.05.09
14:42
(121) для тебя главный показатель увеличения производительности - это уделичение WRITELOG

в начале у тебя было 0.5% норма 5-10
125 mishaPH
 
20.05.09
14:42
(123) вообще я думаю все это фигня. На форме справочника все этоникак не скажется. больше пользователей и быстрее отчеты может станут. Но задача автора не решит
126 vde69
 
20.05.09
14:44
(125) в глобальном плане - да, но сейчас мы занимаемся балансировкой железа, после этого уже программно будем.
127 Mikeware
 
20.05.09
14:47
(124) Откуда цифра?
(125) Почему же? Как раз при листании справочника на сервер идет куча мелких простых запросов. Которые как раз сейчас и тормозились из-за попыток параллельного выполнения (что показал счетчик CXPACKET).
Но для полного решения нужно вниматочно смотреть на форму списка.
Ну, и в профайлер, конечно...
128 DGorgoN
 
20.05.09
14:48
(127) блин, был бы под рукой профайлер - глянул бы туда само сабой
129 DGorgoN
 
20.05.09
14:49
но это позже..
130 Mikeware
 
20.05.09
14:49
(128) Второй день талдычу об этом...
131 Вопрос_по_Бух
 
20.05.09
14:56
интересная ветка. отмечусь чтобы позже почитать.
132 DGorgoN
 
20.05.09
14:59
(131) Мне самому то жуть как интересно :)
133 Mikeware
 
20.05.09
14:59
(131) Да все это давно описано. И неоднократно. Просто не в одном месте...
134 vde69
 
20.05.09
15:01
Десять важнейших проблем производительности SQL Server 2005 для приложений хранилищ данных и отчетности

http://www.microsoft.com/rus/technet/prodtechnol/sql/bestpractice/dw_perf_top10.mspx
135 DGorgoN
 
20.05.09
15:45
***total***,46133.0,100.0
LCK_M_IS,13623.0,29.5
PAGEIOLATCH_SH,11517.0,25.0
LCK_M_X,6751.0,14.6
NETWORKIO,6129.0,13.3
LCK_M_U,5374.0,11.6
PAGEIOLATCH_EX,1000.0,2.2
WRITELOG,929.0,2.0
PAGELATCH_EX,496.0,1.1
LCK_M_S,109.0,.2
PAGELATCH_UP,111.0,.2
PAGEIOLATCH_UP,62.0,.1
IO_COMPLETION,31.0,.1
ASYNC_IO_COMPLETION,.0,.0
RESOURCE_SEMAPHORE,.0,.0
136 Mikeware
 
20.05.09
15:47
(135) Уже лучше. Но НетворкИО опять слишком велик....
137 DGorgoN
 
20.05.09
15:47
PAGEIOLATCH_SH
   
Имеет место, когда задача ожидает кратковременной блокировки буфера, находящегося в состоянии запроса ввода-вывода. Запрос на кратковременную блокировку производится в режиме общего доступа. Длительное время ожидания может указывать на проблемы с дисковой подсистемой.
138 DGorgoN
 
20.05.09
15:48
(136) PAGEIOLATCH_SH - это с чем связанно?
139 DGorgoN
 
20.05.09
15:48
я имею ввиду для 1с
140 Mikeware
 
20.05.09
15:49
(137) Т.е. подбираешься к ограничениям подсистемы в/в. Это нормально. По-идее, в нее и упрешься в конце концов
141 DGorgoN
 
20.05.09
15:50
(140) хы хы хы.. успокоил :)
142 Mikeware
 
20.05.09
15:55
(137) а где расшифровку на русском берешь?
143 Mikeware
 
20.05.09
15:56
(139) Это не "для 1с", это сервер ждет, пока некэшированная информация прочитается в кэш с диска...
144 vde69
 
20.05.09
15:59
WRITELOG - 2% это уже вполне приемлимый показатель

PAGEIOLATCH_SH - можно сделать кластер файла базы (несколько файлов) на разных дисковых массивах, но это уже не такое простое дело...

но вообще уже можно приступать к оптимизации самой 1с, то-есть переписывать узкие места...
145 DGorgoN
 
20.05.09
15:59
146 Mikeware
 
20.05.09
16:02
(145) Спасиба. А я все на англицком читал, опасался за точность перевода...
(144) Так у него райтлог - всего 2% А нетворкио- 13%
147 Попытка1С
 
20.05.09
16:05
Вот скрипт по дефрагментации индексов, может пригодится.


SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @indexname VARCHAR (128)
DECLARE @execstr   VARCHAR (255)
DECLARE @objectid  INT
DECLARE @indexid   INT
DECLARE @frag      DECIMAL
DECLARE @maxfrag   DECIMAL

-- Decide on the maximum fragmentation to allow
SELECT @maxfrag = 10.0



-- Declare cursor
DECLARE tables CURSOR FOR
 
   SELECT so.name, si.name FROM sysindexes si
   INNER JOIN sysobjects so
   ON si.id = so.id
   WHERE si.indid=1
   AND OBJECTPROPERTY(so.id, 'IsMSShipped' ) = 0





IF OBJECT_ID('tempdb..#fraglist') IS NOT NULL
DROP TABLE #fraglist
-- Create the table
CREATE TABLE #fraglist (
  ObjectName CHAR (255),
  ObjectId INT,
  IndexName CHAR (255),
  IndexId INT,
  Lvl INT,
  CountPages INT,
  CountRows INT,
  MinRecSize INT,
  MaxRecSize INT,
  AvgRecSize INT,
  ForRecCount INT,
  Extents INT,
  ExtentSwitches INT,
  AvgFreeBytes INT,
  AvgPageDensity INT,
  ScanDensity DECIMAL,
  BestCount INT,
  ActualCount INT,
  LogicalFrag DECIMAL,
  ExtentFrag DECIMAL)





-- Open the cursor
OPEN tables

-- Loop through all the tables in the database
FETCH NEXT
  FROM tables
  INTO @tablename, @indexname

WHILE @@FETCH_STATUS = 0
BEGIN
-- Do the showcontig of all indexes of the table
  INSERT INTO #fraglist
  EXEC ('DBCC SHOWCONTIG (''' + @tablename + ''', ''' + @indexname + ''')
     WITH FAST, TABLERESULTS, NO_INFOMSGS')
  FETCH NEXT
     FROM tables
     INTO @tablename, @indexname
END



-- Close and deallocate the cursor
CLOSE tables
DEALLOCATE tables




-- Declare cursor for list of indexes to be defragged
DECLARE indexes CURSOR FOR
  SELECT ObjectName, ObjectId, IndexId, IndexName, LogicalFrag
  FROM #fraglist
  WHERE LogicalFrag >= @maxfrag


-- Open the cursor
OPEN indexes

-- loop through the indexes
FETCH NEXT
  FROM indexes
  INTO @tablename, @objectid, @indexid, @IndexName, @frag

WHILE @@FETCH_STATUS = 0
BEGIN
   IF  @frag< 30.0  
       BEGIN
           
           SELECT @execstr = 'DBCC INDEXDEFRAG (0, ' + RTRIM(@tablename) + ', ' + RTRIM(@indexname) + ')'
           EXEC (@execstr)

       PRINT RTRIM(CONVERT(varchar(20),(GETDATE() ))) + ', frag[' + RTRIM(CONVERT(varchar(15),@frag)) + '], EXEC ' + @execstr
       END
   ELSE
       BEGIN
           
           SELECT @execstr = 'DBCC DBREINDEX (['+RTRIM(@tablename) + '], [' + RTRIM(@indexname)+'], 0) WITH NO_INFOMSGS'
           EXEC (@execstr)
           PRINT RTRIM(CONVERT(varchar(20),(GETDATE() ))) + ', frag[' + RTRIM(CONVERT(varchar(15),@frag)) + '], EXEC ' + @execstr
       END

  FETCH NEXT
     FROM indexes
     INTO @tablename, @objectid, @indexid, @IndexName, @frag
END

-- Close and deallocate the cursor
CLOSE indexes
DEALLOCATE indexes

-- Delete the temporary table
DROP TABLE #fraglist
GO
148 vde69
 
20.05.09
16:05
(146) нетворкио- 13% это конечно не гуд, но приемлимо. Он только на 1 час запускал, по этому мог просто попасть на 5 минутное зависание одного клиента
149 DGorgoN
 
20.05.09
16:13
(147) так мож все проиндексить сразу?
150 Попытка1С
 
20.05.09
16:17
(149) дефрагментировать
151 DGorgoN
 
20.05.09
16:25
(150) да
152 DGorgoN
 
20.05.09
16:25
но за скрипт спасибо
153 DGorgoN
 
21.05.09
09:11
Короче справочник прикручен - остатки получаются сверх тормознуто, видимо придется таки юзать 1с++
154 vde69
 
21.05.09
09:26
1. покажи как остатки получаешь (надеюсь у тебя нету колонки с остатками??? а только статусная строка)
2. и покажи структуру справочника (из DDS)
155 mishaPH
 
21.05.09
09:29
(154) колонка у него с остатками. иначе с чего бы форме тормозить.
Еще как вариант остатки идут на текущую дату, а ТА загнали вперед. Вот оно и рассчитывается
156 DGorgoN
 
21.05.09
09:31
(154) Колонка с остатками есть - но это к сожалению надо
В тестовом примере я убрал её, т.е. был только новый справочник
157 DGorgoN
 
21.05.09
09:31
(155) Остатки на ТА.

Люди, плиз - киньте ссылками на 1с++ - меня интересует просто создание списка
158 Sadovnikov
 
21.05.09
09:32
(157) Какого списка?
159 DGorgoN
 
21.05.09
09:32
(158) табличное поле т.е.
160 mishaPH
 
21.05.09
09:33
(159) зачем тебе остатки показывать не весь товар?? на список?
161 Sadovnikov
 
21.05.09
09:34
(159)
http://www.rikcenter.ru/downloads.php?file=6
пример справочника на табличном поле. НЕ оптимизирован под большие объемы. Просто демка.
162 DGorgoN
 
21.05.09
09:35
(160) я же говорю - даже список номенклатуры получается с тормозами
163 DGorgoN
 
21.05.09
09:35
(161) ок. спасибо
164 DGorgoN
 
21.05.09
09:38
Думаю взять и посмотреть табличное поле - в него просто при вызове "пихнуть" весь справочник и посмотреть на результат..
165 vde69
 
21.05.09
09:38
>>>Колонка с остатками есть - но это к сожалению надо

БРЕД, не надо это!!!

по чему это не надо:
1. в данном случае вычисляемые поля не имеют гарантию правомерности (они обновляются редко)
2. давайте разделять формы подбора с остатками и обычную
3. делай структуру ограничивающую количество показываемых остатков например от вхождения в группу с текущим, ведь по факту не нужно видеть ВСЕ остатки а только текущего и похожих.
4. а вообще довольно и статусной строки. сделай 2 варианта формы, с колонкой и без и пусть пользователи сами решают (в своих настройках) какой формой вользоваться быстрой/полной
166 mishaPH
 
21.05.09
09:40
(162) да не может он с тормозами быть. Рассчитывается там что-то у тебя или выборка периодики или вложенных реквизитов.
167 DGorgoN
 
21.05.09
09:41
(165) Друг, даже просто получение списка номенклатуры без доп. полей тормозит - фактъ
168 mishaPH
 
21.05.09
09:41
Зачем нужна колонка с остатками???
169 DGorgoN
 
21.05.09
09:41
(166) Тормозит - тормозит :(
(168) см (167)
170 mishaPH
 
21.05.09
09:41
(167) как проверял?
171 vde69
 
21.05.09
09:44
(170)+1

мне тоже интересно от куда такая информация
172 DGorgoN
 
21.05.09
09:44
(170) сделал новый справочник, оттуда все убрал кроме списка номенклатуры
уже лучше - но все равно медленно
(168)

Объясняю почему нужны остатки:
Когда ищут например позицию выключатель такой-то
Артикулы у выключателей отличаются на последнюю букву - цифры.
Они идут рядом
Порядка от 10 до 100 одних и тех же зап. частей но с разными хар-ками.
Клиенту очень часто по барабану - выключатель может быть на параметр больше, например ток предельный на 1-2 ампера больше.
173 DGorgoN
 
21.05.09
09:44
Я имеюю ввиду вообще новый справочник - туда тупо все перелил..
174 Sadovnikov
 
21.05.09
09:44
(172) А зачем выбирать товар в документ, открывая справочник?
175 DGorgoN
 
21.05.09
09:46
(174) Обычно клиент звонит не просто так - у него на руках список из 100-200 позиций.
Ему нужно их где то купить..

Соот-нно основная рабочая форма это как раз форма этого справочника - менеджеры проводят в нём большинство своего рабочего времени
176 vde69
 
21.05.09
09:46
(173) структуру этого нового справочника покажи
177 DGorgoN
 
21.05.09
09:47
щас
178 Sadovnikov
 
21.05.09
09:48
(175) Еще раз - зачем для выбора товара в документ открывать форму списка справочника?
179 DGorgoN
 
21.05.09
09:48
#
#===============================================================================
#==TABLE no 240    : Справочник БыстраяНоменклатура
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable  
T=SC20197 |Справочник БыстраяНоменклатура|A          |SC20197    |1        
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=ID        |ID object           |C   |9     |0        
F=PARENTID  |ID parent obj       |C   |9     |0        
F=CODE      |object code         |C   |7     |0        
F=DESCR     |object description  |C   |25    |0        
F=ISFOLDER  |Flag - Is Line - Fol|N   |1     |0        
F=ISMARK    |Flag Object is Marke|C   |1     |0        
F=VERSTAMP  |Version stamp       |C   |6     |0        
F=SP20201   |(P)НоменклатурныйНом|C   |50    |0        
F=SP20202   |(P)ПолноеНаименовани|C   |100   |0        
F=SP20203   |(P)Номенклатура     |C   |9     |0        
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName    
I=IDD      |of ID         |0     |ID                                                          |IDD        
I=PCODE    |of PARENT and |0     |PARENTID,ISFOLDER,CODE(UPPER)                               |PCODE      
I=PDESCR   |of PARENT and |0     |PARENTID,ISFOLDER,DESCR(UPPER)                              |PDESCR    
I=CODE     |of CODE       |0     |CODE(UPPER)                                                 |CODE      
I=DESCR    |of DESCR      |0     |DESCR(UPPER)                                                |DESCR      
#
#===============================================================================
#==TABLE no 241    : Справочник НоменклатураБыстр
# Name    |Descr                         |Type[A/S/U]|DBTableName|ReUsable  
T=SC20204 |Справочник НоменклатураБыстр  |A          |SC20204    |1        
#-----Fields-------
# Name      |Descr               |Type|Length|Precision
F=ID        |ID object           |C   |9     |0        
F=PARENTID  |ID parent obj       |C   |9     |0        
F=CODE      |object code         |C   |7     |0        
F=DESCR     |object description  |C   |100   |0        
F=ISFOLDER  |Flag - Is Line - Fol|N   |1     |0        
F=ISMARK    |Flag Object is Marke|C   |1     |0        
F=VERSTAMP  |Version stamp       |C   |6     |0        
F=SP20222   |(P)ЕдиницаПоУмолчани|C   |9     |0        
F=SP20237   |(P)НоменклатурныйНом|C   |50    |0        
F=SP20261   |(P)Производитель    |C   |9     |0        
F=SP20265   |(P)ТипТовара        |C   |9     |0        
F=SP20280   |(P)НоменклатурныйНом|C   |50    |0        
F=SP20307   |(P)Ном              |C   |9     |0        
#----Indexes------
# Name     |Descr         |Unique|Indexed fields                                              |DBName    
I=IDD      |of ID         |0     |ID                                                          |IDD        
I=PCODE    |of PARENT and |0     |PARENTID,ISFOLDER,CODE(UPPER)                               |PCODE      
I=PDESCR   |of PARENT and |0     |PARENTID,ISFOLDER,DESCR(UPPER)                              |PDESCR    
I=CODE     |of CODE       |0     |CODE(UPPER)                                                 |CODE      
I=DESCR    |of DESCR      |0     |DESCR(UPPER)                                                |DESCR      
I=VI20237  |VI20237       |0     |SP20237(UPPER=128)                                          |VI20237    
I=VIP20237 |VIP20237      |0     |PARENTID,ISFOLDER,SP20237(UPPER=128)                        |VIP20237  
I=VI20261  |VI20261       |0     |SP20261,DESCR(UPPER)                                        |VI20261    
I=VIP20261 |VIP20261      |0     |PARENTID,ISFOLDER,SP20261,DESCR(UPPER)                      |VIP20261  
I=VI20280  |VI20280       |0     |SP20280(UPPER=128),DESCR(UPPER)                             |VI20280    
I=VIP20280 |VIP20280      |0     |PARENTID,ISFOLDER,SP20280(UPPER=128),DESCR(UPPER)
180 mishaPH
 
21.05.09
09:50
(175) а зачем на экран выводить остатки в таблицу? если интерисует аналог соседний манагеру трудно что-ли поставить на него курсор и посмотреть остаток в строке?
181 DGorgoN
 
21.05.09
09:50
(178) Звонит клиент, ему нужно что-то купить!!!!
Иногда он даже не знает как точно это называется и какой у него артикул.

менеджер всегда открывает счет!!!! (т.к. люди обычно звонят с серъезными намерениями)
И набивает то чт о набрали в этот счет!
182 DGorgoN
 
21.05.09
09:51
(180) ты пойми - их там может быть около сотни - этих аналогов
183 DGorgoN
 
21.05.09
09:51
на каждый ставить курсор не очень удобно
184 DGorgoN
 
21.05.09
09:52
Одних только кресел для водителя порядка несколько десятков - синие, зеленые, красные, бадовые, с ручками, без ручек, новой модификации - старой.
В 8 - ке это еще понятно - там есть свойства и харак-ки..
а в 7-ке это все отдельной строкой
185 mishaPH
 
21.05.09
09:52
(182) Ну глаз человеческий не способен всеравно весь лист прочитать, всеравно спозиционироватся приходится на чем-то. Да есть аналог он его видит в таблице, и что трудно поставить курсор и узнать остаток?? тем более что он же не заказывает всю 100 аналогов одной детали.
186 DGorgoN
 
21.05.09
09:53
Клиенту иногда пофик какое там кресло - они обычно взаимозаменямые:
ему надо и тех и тех и тех - сразу, что-бы манагер сказал какая цена и сколько у него в наличии..
(185) да ладно - как раз в нашей области этим манагеры и занимаются все время - быстро пролистывают этот весь лист :)
187 DGorgoN
 
21.05.09
09:54
Но зачм вы про остатки:
Я же говорю - даже список БЕЗ остатков тормозит
188 Sadovnikov
 
21.05.09
09:55
(181) Эх... Мне еще раз спросить?
Посмотри в ссылке из (161) обработку "Тест поля выбора a la 8.хх"
189 DGorgoN
 
21.05.09
09:55
Быстрее правда работает - но все равно тормозит
190 mishaPH
 
21.05.09
09:55
(187) х.з. я в чудеса не верю, все проблемы которые возникали росли из одного места
191 DGorgoN
 
21.05.09
09:55
(188) качнул, смотрю.

Мы друг друга так не поймем - попробуй задать вопрос другими словами
192 DGorgoN
 
21.05.09
09:56
(190) Ну вот блин так - сам расстроен
193 DGorgoN
 
21.05.09
09:57
Хотя еще попробую прийти сегодня после обеда и сделать кое что -
194 Sadovnikov
 
21.05.09
09:58
(191) "Мы друг друга так не поймем " - похоже :)
В документе/отчете встаешь на поле, куда надо ввести товар и начинаешь буковки из наименования набирать. И выбираешь нужный товар без открытия формы списка. Вот что я имел ввиду :)
195 DGorgoN
 
21.05.09
10:00
(194) Повторяюсь:
Есть список практически одинаковых товаров но с модификациями
196 DGorgoN
 
21.05.09
10:00
их от 5 до 200. в среднем порядка 20-30
197 DGorgoN
 
21.05.09
10:01
ок или не ок?
198 Sadovnikov
 
21.05.09
10:02
(195) Так и выводи этот список при наборе буковок. И показывай остатки по ним. Или показывай только те позиции, которые есть на остатках.
199 Sadovnikov
 
21.05.09
10:02
+(198) Не вижу проблемы.
200 DGorgoN
 
21.05.09
10:12
(199) Есть еще 1 штука - есть 2 тз на форме - которые показывают:
1) от кого пришел товар и за какюу цену
2) кому ушел товар и за какую цену

благодаря этим полям магер еще делает красивую наценку именно для этого клиента
201 Sadovnikov
 
21.05.09
10:13
(200) А вот это уточнение стоило привести еще начале преддыдущей ветки.
202 DGorgoN
 
21.05.09
10:14
(201) ну ссори если что не так. Но эти поля рассчитываются очень красиво и быстро - не тормозит практически
203 mishaPH
 
21.05.09
10:15
(200) что еще сть на форме?? может еще партии показывает все какие в наличии и кому какие пошли?
204 DGorgoN
 
21.05.09
10:16
(203) нет, щас код покажу
205 vde69
 
21.05.09
10:16
(179)

Справочник.БыстраяНоменклатура

сделай
наименование, код, артикул, и ссылку на справочник номенклатуры
206 DGorgoN
 
21.05.09
10:18
ИОП!!!!
207 DGorgoN
 
21.05.09
10:18
ПокупкиИПродажи = СоздатьОбъект("Периодический");
   ПокупкиИПродажи.ИспользоватьОбъект("ПокупкиИПродажи", Номенклатура);
   ПокупкиИПродажи.ОбратныйПорядок(1);
   ПокупкиИПродажи.ВыбратьЗначения(,); // Граница);
208 DGorgoN
 
21.05.09
10:18
Простите меня люди добрые - вот же в чм ж косяк ж еще
209 mishaPH
 
21.05.09
10:19
(208) тебе говорили, что блокировки это периодики выбор.
210 Sadovnikov
 
21.05.09
10:19
(207) Приколист ты... :)
211 DGorgoN
 
21.05.09
10:20
ПокупкиИПродажи - это преодический рекв. справочника номенклатура, которые еще и документами изменяется..

(210) это не я..
212 Sadovnikov
 
21.05.09
10:21
(211) Ты-ты :)
Я имел ввиду сокрытие информации в течении нескольких дней :)
213 DGorgoN
 
21.05.09
10:21
Т.е. насколкьо я понял из-за этого еще и тормозит. ееп..
214 DGorgoN
 
21.05.09
10:21
(212) блин, ссори - просто не придал этому должного значения
215 mishaPH
 
21.05.09
10:22
(214) чудес не бывает. Все давно пройдено и грабли известны. их 2 всего. Вложенные реквизиты и выборка периодики. ;))
216 DGorgoN
 
21.05.09
10:23
такс , т.е. насколкьо я понял - еще и придется переделать эту часть
217 DGorgoN
 
21.05.09
10:24
уоп их сервер. специально же спрашивал зачем нужна переодика
218 vde69
 
21.05.09
10:24
DGorgoN - теперь с тебя развернутая статья по итогом 3х дней работ, по оптимизации SQL
219 DGorgoN
 
21.05.09
10:25
(218) без б. сделаю, на почту кину тебе что-бы проверил, ок?
220 DGorgoN
 
21.05.09
10:26
"Меня всегда удивляло, что код комментируют так сухо и бездушно. Привожу пример моих комментов одной VBA-процедуры, написанных в разные моменты времени:

Первая версия:
/* Сделано через жопу. Прошу прощения у того, кто будет дорабатывать — меня заставили сделать именно так. */

Исправленная версия:
/* Cобрался с силами и исправил код так, чтобы он выглядел более логичным и читаемым. Концептуально он остался жопой, но теперь стал больше похож на аппетитную женскую попку, чем на суровую мужицкую задницу. */

Комментирование — занятие крайне интересное и творческое. Сделайте немного интереснее жизнь человеку, которому придётся потом разбираться в вашем коде!"
221 Sadovnikov
 
21.05.09
10:26
(219) И первые слова в статье должны звучать примерно так: "Самая главная мысль, которую я вынес из этой эпопеи - всегде (слышите, всегда!) сразу выдавайте полную информацию!" :)
222 vde69
 
21.05.09
10:27
(217) кстати ты реально подумай об ограничении получения остатков в зависимости от текущего элемента, в твоем случае например показывать только для артикулов которые совпадают первые Х знаков, а остальные просто игнорировать.
223 vde69
 
21.05.09
10:28
(219) лучше садовникову - он лучше меня в этом разбирается
224 DGorgoN
 
21.05.09
10:28
(221) Сам не обратил на это внимания, друг - прокололся немного. спасибо за пинки в нужном
(222) да вот уже думаю как бы оргаизовать то все - сегодня на обед съезжу, посомтрю..
225 DGorgoN
 
21.05.09
10:29
(223) ок
(221)
Слушай, но ведь эти тз расчитываются именно в форме - это имет какое то значение?
226 DGorgoN
 
21.05.09
10:29
т.е. переодика перебирается толкьо в форме.
В обед поеду - проверю..
227 Sadovnikov
 
21.05.09
10:33
(226) Так форма и тормозит у тебя, правильно? Сильно подозреваю, что код из (207) выполняется при каждом чихе на форме. Это же код из формы списка справочника, я ничего не путаю?
228 mishaPH
 
21.05.09
10:35
(227) и его в отладчике не видно. он же только модуль смотрит. В чем и всегда засада. Понатыкают на форму кода а потом хрен найдешь что тормозит
229 DGorgoN
 
21.05.09
10:37
(227) Да. этот код из формы списка справочника.
230 DGorgoN
 
21.05.09
10:38
(228) вот такие вот грабли :)
231 DGorgoN
 
21.05.09
10:39
думаю что-бы сделать что-бы это рассчитывалось по кнопке
232 DGorgoN
 
21.05.09
10:39
так-же можно сделать?
233 Sadovnikov
 
21.05.09
10:42
(232) у нас, напрмер, на всех визуальных таблицах, где есть товар, висит волшебная кнопка F11, покоторой можно увидеть детальную информацию по текущему товару. Тоесть, открывается формочка с офигительным количеством закладок, где все подробно разрисовано.
234 DGorgoN
 
21.05.09
10:43
(233) ок
235 Обработка
 
21.05.09
12:09
ту DGorgoN, поясни что за тест как эти показатели посмотреть. Откройте глаза мне.
236 Обработка
 
21.05.09
12:11
ой, нашел сам вопрос снимаю спасибо
237 Обработка
 
21.05.09
12:17
А меня всегда беслио когда 1сник в 1с77 хранить опер инфу в периодике. Ужас.
238 DGorgoN
 
21.05.09
12:56
(237) Более того - этой переодикой вся конфа объята
239 artbear
 
21.05.09
15:48
(221) Цитата:
(219) И первые слова в статье должны звучать примерно так: "Самая главная мысль, которую я вынес из этой эпопеи - всегде (слышите, всегда!) сразу выдавайте полную информацию!" :)
=====
А вторая и третья фраза - "Ищите проблему в своем коде 1С, а уж потом начинайте копать сервер, железо и т.д." и "Попробуйте упростить свой код, свои запросы по максимуму, и только потом, если тормоза остались, тестируйте настройки базы, железа, сети и т.д."
.
ЗЫ у меня также пару месяцев назад была большая проблема на скульной 1С 8-ке - народ жаловался, что форма подбора очень сильно тормозит.
Начал разбираться, увидел жутко неоптимальный код прежнего программера :(, исправил его, но улучшение производительности произошло всего на 30-45%, что было недостаточно.
Увидел, что тормозит простейший запрос к группе товаров с выборкой из Спр.Товаров + Лев.Соед. по остаткам + Лев.соед.по цене товаров. Выборка цены - основной виновник.
Далее покопался в базе, добавил индексов и т.д., особого улучшения не заметил.
Перерыл всю 1С, улучшения не получил.
После этого 2 дня убил на настройку скуля, чтение доки, профайлер и т.д. - ничего не помогло.
Снова вернулся к 1С, к настройкам регистра сведений цены, начал экспериментировать с настройками этого регистра в 1С.
И о чудо, одна настройка помогла - пред.разработчик поставил периодичность хранения итогов цены по регистратору, а я поставил по дням. 1С просто залетала, ускорение порядка 200/300% :)

Т.е. причина, как обычно, в собственной настройке 1С, а скуль и железо, как обычно, не виноваты :)
240 mishaPH
 
21.05.09
15:51
(239) +1000
как показывает практика даже дефолтных настроек скуля, винды и железа вполне достаточно
241 vde69
 
21.05.09
17:09
(240) SQL - да, по дефолту довольно ровно встает, а вот сетевые затыки возникают ПОЧТИ ВСЕГДА, как в САБЖЕ - сетевуху поменяли и уже лучше стало...