Имя: Пароль:
1C
 
Совет по ускорению 1с
0 Маленький Вопросик
 
28.06.17
15:00
Товарищи, есть бд УТ 10.3 серверная, 100 гб.

подскажите как ускорить работу штатными методами.
1 Волшебник
 
модератор
28.06.17
15:00
Разогнать процессор и видеокарту
2 Маленький Вопросик
 
28.06.17
15:01
(1) штатными методами 1с имелось ввиду)
3 aka AMIGO
 
28.06.17
15:02
Штатными в 1С - свернуть базу, чтобы не было длинных хвостов прошлых периодов
4 yzimin
 
28.06.17
15:03
Иногда апгрейд сервера дешевле стоимости оптимизации софта
5 Маленький Вопросик
 
28.06.17
15:04
(3) ну срез базы это я понимаю, ну уж очень долго он идет)
6 Maniac
 
28.06.17
15:05
А что именно ускорить то надо?
7 aka AMIGO
 
28.06.17
15:06
есть еще вариант - реиндексация.Иногда файлы индексов бывают раза в 2-3 больше индексируемого файла. Естественно, это нехилый тормоз.
8 d4rkmesa
 
28.06.17
15:06
Обратиться к франчайзи, провести аудит и сделать выводы. Это если в лоб. Или нанять кого-нибудь кто может что-то сделать. Что значит "ускорить работу"? В УТ10 проблема может быть только с проведением по партиям, да кривыми дописками.
9 Маленький Вопросик
 
28.06.17
15:06
(6) проведение реализаций, отчетов розн продаж, возвратов - старая песня...
10 Маленький Вопросик
 
28.06.17
15:07
(7) реиндексация - пересоздание базы - вариант!
11 Maniac
 
28.06.17
15:08
какие таблицы сколько забирают - то и надо думать как очистить.
12 d4rkmesa
 
28.06.17
15:10
(10) Как то все сумбурно. Пересоздание базы не решит проблему - разве что база "похудеет" примерно наполовину, все равно остатки перенесут часть документов. Надо искать в чем проблема. План обслуживания стандартный в ms sql настроен?
13 Волшебник
 
модератор
28.06.17
15:11
Замер производительности уже предлагали?
14 yzimin
 
28.06.17
15:14
(0)
1. https://its.1c.ru/db/metod8dev/content/5904/hdoc
2. Проверить, чтобы в 1С не было документов ранее даты ввода остатков и будущих дат.
3. Вынести на отдельный SSD временные файлы пользователя под которым стартует служба сервера 1С, временные файлы службы сервера 1С
4. Вернуть старый формат журнала регистрации
15 Maniac
 
28.06.17
15:15
Ну или просто перейти на УТ1...... и забить болт
16 Маленький Вопросик
 
28.06.17
15:18
всем спасибо! ничего нового не узнал
17 Маленький Вопросик
 
28.06.17
15:19
(14) журнал регистрации давно отключен
18 Maniac
 
28.06.17
15:20
Если тормозят списания - то надо смотреть процедуры проведения и запросы которые там списывается остатки и партии.

Несомненно я уверен там есть что оптимизировать!!!!!!
19 mehfk
 
28.06.17
15:20
(15) В советчика.
20 Dotoshin
 
28.06.17
15:21
(16) А чо ты хотел узнать-то? Ничо нового пока не придумали...
21 yzimin
 
28.06.17
15:22
(16) а что ты хотел? общий вопрос - общий совет)))
22 Maniac
 
28.06.17
15:22
Удалить все старые заказы покупателей - очистить по ним данные в основаниях реализаций.

Я такое делал легко на УТ10!! Причем можно обработать списание реализаций очистить в их движениях только конкретные регистры - например заказы  покупателей.

Все это в топку убрать. Там я уверен у тебя ВИСЯКИ ПРОСТОГ немерянно в регистрах!! незакрытые ресурсы!

есть обработка по Унализу УТ10 - вываливает всю грязь что в базе
23 Маленький Вопросик
 
28.06.17
15:24
(22) что за обработка? можно ссылку
24 Maniac
 
28.06.17
15:24
[1С УТ10] Экспресс-проверка ведения учета (исправление ошибок)

https://subsystems.ru/solutions/program=120/


ВОт если у тебя там регистры не закрыты - они итоги тебе снежным комом формируют. из за этого расчет отстатков при списании доков- тормозит во всю!!

Я сто процентов уверен у тебя весь тормоз из за того что по многим регам в 0 не списаны ресурсы.

И все они комом нарастили таблицы итогов - которые расчитываются берутся при проведениях списаний по этим же регистрам.
25 Maniac
 
28.06.17
15:25
То что у меня там на закладке скачать написано - можешь игнорить. доступ на самом деле есть у всех...
26 Dotoshin
 
28.06.17
15:26
Если база серверная, то посмотри вот этот видос, там как раз в целом про ускорение
https://youtu.be/oljKKUJwAUw
может откроешь для себя что-то новое...
27 Maniac
 
28.06.17
15:32
Удали историю заказов, чистка оснований. почистить все нафиг в регистрах заказов.


Удали все старые установки цен и регистрации цен.


Попробуй поставить нужные индексы в регистрах на нужных измерениях
28 Maniac
 
28.06.17
15:34
Еще я резал базу УТ при сохранении всей истории продаж.


Создал спец документ ПродажиОбороты.
Загрузил в них данные.

Сделал в этой же базе свертку остатков.

ПОлностью снял все документы старые с проведения.

Провел обороты продаж...


И в база просто становилась как новая. При этом все остатки - причем даже по партиям с теми же поступлениями... и тп..

Все обороты продаж полностью за все года...
29 Вафель
 
28.06.17
15:34
отключить онлайн партии
30 Маленький Вопросик
 
28.06.17
15:37
(28) у меня процедура среза такая

1 снимаются остатки на конец определенной даты (создаются одной кнопкой оприход и списание)
2 начинает удалять все документы до этой даты
3 проводится пункт 1

все делается нажатием одной кнопки... но доооооолго)
31 Вафель
 
28.06.17
15:39
(28) те регистры все остались, только документы удалил? А в чем тогда свертка?
32 Маленький Вопросик
 
28.06.17
15:46
(28) удаление - отмена проведения, распроведение
33 Maniac
 
28.06.17
15:47
(31)) эээ. что значит теже. продажи оборотный регситр - он летает.

Заситка остаточных регистров - это по сути 90 процентов базы. итоги, таблицы движений - в ноль.
34 Maniac
 
28.06.17
15:51
ВОт что значит не учились на 1С

Я курсы в 2000 году. у меня был замечательный препод и я раз и навсегда заруьил на носу что такое оборотные и остаточные регистры. какие у них таблицы и суть.
35 _Batoo
 
28.06.17
16:14
(28), (33)

Поясните, пожалуйста.
Отличие от обычной свертки, как я понял, это то, что вы сохранили оборотные регистры как есть, да?

Т.е. можно получить оборот за "старый" период, но остатки на эти даты узнать уже нельзя?)
36 Вафель
 
28.06.17
16:16
свертка на самом деле не особо поможет ускорить базу
37 Вафель
 
28.06.17
16:17
Конечно если, все отчеты не попадают в индекс и делают фулл скан по таблицам движений - тогда да
38 wayss
 
28.06.17
16:17
(32) размер вашей базы в общем случае ничего не значит. Нужен список таблиц с размерами.
И отладчиком искать медленные места и разбираться в причинах.
39 Dotoshin
 
28.06.17
16:20
(36) Обоснуй
40 Tateossian
 
28.06.17
16:21
(0) Переложить самые активные таблицы в рам-диск.
41 Tateossian
 
28.06.17
16:22
Вот пример такого скрипта с УПП

USE tempdb

BEGIN TRANSACTION

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[_AccumRg21466](
    [_Period] [datetime] NOT NULL,
    [_RecorderTRef] [binary](4) NOT NULL,
    [_RecorderRRef] [binary](16) NOT NULL,
    [_LineNo] [numeric](9, 0) NOT NULL,
    [_Active] [binary](1) NOT NULL,
    [_RecordKind] [numeric](1, 0) NOT NULL,
    [_Fld21467RRef] [binary](16) NOT NULL,
    [_Fld21468RRef] [binary](16) NOT NULL,
    [_Fld21469RRef] [binary](16) NOT NULL,
    [_Fld21470RRef] [binary](16) NOT NULL,
    [_Fld21471_TYPE] [binary](1) NOT NULL,
    [_Fld21471_RTRef] [binary](4) NOT NULL,
    [_Fld21471_RRRef] [binary](16) NOT NULL,
    [_Fld21472RRef] [binary](16) NOT NULL,
    [_Fld21473RRef] [binary](16) NOT NULL,
    [_Fld21474RRef] [binary](16) NOT NULL,
    [_Fld21475RRef] [binary](16) NOT NULL,
    [_Fld21476] [numeric](15, 3) NOT NULL,
    [_Fld21477] [numeric](15, 2) NOT NULL,
    [_Fld21478RRef] [binary](16) NOT NULL,
    [_Fld21479] [binary](1) NOT NULL,
    [_Fld21480] [numeric](9, 0) NOT NULL,
    [_Fld21481_TYPE] [binary](1) NOT NULL,
    [_Fld21481_RTRef] [binary](4) NOT NULL,
    [_Fld21481_RRRef] [binary](16) NOT NULL,
    [_Fld21482] [datetime] NOT NULL,
    [_Fld21483] [numeric](9, 0) NOT NULL
) ON [PRIMARY]
END

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByPeriod_TRN')
CREATE UNIQUE CLUSTERED INDEX [_AccumRg21466_ByPeriod_TRN] ON [dbo].[_AccumRg21466]
(
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims21484_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByDims21484_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21468RRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims28914_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByDims28914_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21467RRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims28915_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByDims28915_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21471_TYPE] ASC,
    [_Fld21471_RTRef] ASC,
    [_Fld21471_RRRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByProperty21485_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByProperty21485_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21481_TYPE] ASC,
    [_Fld21481_RTRef] ASC,
    [_Fld21481_RRRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByRecorder_RN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByRecorder_RN] ON [dbo].[_AccumRg21466]
(
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]

INSERT INTO [dbo].[_AccumRg21466]
           ([_Period]
           ,[_RecorderTRef]
           ,[_RecorderRRef]
           ,[_LineNo]
           ,[_Active]
           ,[_RecordKind]
           ,[_Fld21467RRef]
           ,[_Fld21468RRef]
           ,[_Fld21469RRef]
           ,[_Fld21470RRef]
           ,[_Fld21471_TYPE]
           ,[_Fld21471_RTRef]
           ,[_Fld21471_RRRef]
           ,[_Fld21472RRef]
           ,[_Fld21473RRef]
           ,[_Fld21474RRef]
           ,[_Fld21475RRef]
           ,[_Fld21476]
           ,[_Fld21477]
           ,[_Fld21478RRef]
           ,[_Fld21479]
           ,[_Fld21480]
           ,[_Fld21481_TYPE]
           ,[_Fld21481_RTRef]
           ,[_Fld21481_RRRef]
           ,[_Fld21482]
           ,[_Fld21483])
(SELECT [_Period]
      ,[_RecorderTRef]
      ,[_RecorderRRef]
      ,[_LineNo]
      ,[_Active]
      ,[_RecordKind]
      ,[_Fld21467RRef]
      ,[_Fld21468RRef]
      ,[_Fld21469RRef]
      ,[_Fld21470RRef]
      ,[_Fld21471_TYPE]
      ,[_Fld21471_RTRef]
      ,[_Fld21471_RRRef]
      ,[_Fld21472RRef]
      ,[_Fld21473RRef]
      ,[_Fld21474RRef]
      ,[_Fld21475RRef]
      ,[_Fld21476]
      ,[_Fld21477]
      ,[_Fld21478RRef]
      ,[_Fld21479]
      ,[_Fld21480]
      ,[_Fld21481_TYPE]
      ,[_Fld21481_RTRef]
      ,[_Fld21481_RRRef]
      ,[_Fld21482]
      ,[_Fld21483]
  FROM [upp].[dbo].[_AccumRg21466]
  WITH (TABLOCK))

USE upp

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByRecorder_RN')
DROP INDEX [_AccumRg21466_ByRecorder_RN] ON [dbo].[_AccumRg21466]

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByProperty21485_RTRN')
DROP INDEX [_AccumRg21466_ByProperty21485_RTRN] ON [dbo].[_AccumRg21466]

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims28915_RTRN')
DROP INDEX [_AccumRg21466_ByDims28915_RTRN] ON [dbo].[_AccumRg21466]

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims28914_RTRN')
DROP INDEX [_AccumRg21466_ByDims28914_RTRN] ON [dbo].[_AccumRg21466]

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims21484_RTRN')
DROP INDEX [_AccumRg21466_ByDims21484_RTRN] ON [dbo].[_AccumRg21466]

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByPeriod_TRN')
DROP INDEX [_AccumRg21466_ByPeriod_TRN] ON [dbo].[_AccumRg21466] WITH ( ONLINE = OFF )

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND type in (N'U'))
DROP TABLE [dbo].[_AccumRg21466]

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[_AccumRg21466](
    [_Period] [datetime] NOT NULL,
    [_RecorderTRef] [binary](4) NOT NULL,
    [_RecorderRRef] [binary](16) NOT NULL,
    [_LineNo] [numeric](9, 0) NOT NULL,
    [_Active] [binary](1) NOT NULL,
    [_RecordKind] [numeric](1, 0) NOT NULL,
    [_Fld21467RRef] [binary](16) NOT NULL,
    [_Fld21468RRef] [binary](16) NOT NULL,
    [_Fld21469RRef] [binary](16) NOT NULL,
    [_Fld21470RRef] [binary](16) NOT NULL,
    [_Fld21471_TYPE] [binary](1) NOT NULL,
    [_Fld21471_RTRef] [binary](4) NOT NULL,
    [_Fld21471_RRRef] [binary](16) NOT NULL,
    [_Fld21472RRef] [binary](16) NOT NULL,
    [_Fld21473RRef] [binary](16) NOT NULL,
    [_Fld21474RRef] [binary](16) NOT NULL,
    [_Fld21475RRef] [binary](16) NOT NULL,
    [_Fld21476] [numeric](15, 3) NOT NULL,
    [_Fld21477] [numeric](15, 2) NOT NULL,
    [_Fld21478RRef] [binary](16) NOT NULL,
    [_Fld21479] [binary](1) NOT NULL,
    [_Fld21480] [numeric](9, 0) NOT NULL,
    [_Fld21481_TYPE] [binary](1) NOT NULL,
    [_Fld21481_RTRef] [binary](4) NOT NULL,
    [_Fld21481_RRRef] [binary](16) NOT NULL,
    [_Fld21482] [datetime] NOT NULL,
    [_Fld21483] [numeric](9, 0) NOT NULL
) ON [RAMDATA]
END

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByPeriod_TRN')
CREATE UNIQUE CLUSTERED INDEX [_AccumRg21466_ByPeriod_TRN] ON [dbo].[_AccumRg21466]
(
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [RAMDATA]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims21484_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByDims21484_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21468RRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [RAMDATA]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims28914_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByDims28914_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21467RRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [RAMDATA]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByDims28915_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByDims28915_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21471_TYPE] ASC,
    [_Fld21471_RTRef] ASC,
    [_Fld21471_RRRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [RAMDATA]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByProperty21485_RTRN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByProperty21485_RTRN] ON [dbo].[_AccumRg21466]
(
    [_Fld21481_TYPE] ASC,
    [_Fld21481_RTRef] ASC,
    [_Fld21481_RRRef] ASC,
    [_Period] ASC,
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [RAMDATA]

SET ANSI_PADDING ON


IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[_AccumRg21466]') AND name = N'_AccumRg21466_ByRecorder_RN')
CREATE UNIQUE NONCLUSTERED INDEX [_AccumRg21466_ByRecorder_RN] ON [dbo].[_AccumRg21466]
(
    [_RecorderTRef] ASC,
    [_RecorderRRef] ASC,
    [_LineNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [RAMDATA]

INSERT INTO [dbo].[_AccumRg21466]
           ([_Period]
           ,[_RecorderTRef]
           ,[_RecorderRRef]
           ,[_LineNo]
           ,[_Active]
           ,[_RecordKind]
           ,[_Fld21467RRef]
           ,[_Fld21468RRef]
           ,[_Fld21469RRef]
           ,[_Fld21470RRef]
           ,[_Fld21471_TYPE]
           ,[_Fld21471_RTRef]
           ,[_Fld21471_RRRef]
           ,[_Fld21472RRef]
           ,[_Fld21473RRef]
           ,[_Fld21474RRef]
           ,[_Fld21475RRef]
           ,[_Fld21476]
           ,[_Fld21477]
           ,[_Fld21478RRef]
           ,[_Fld21479]
           ,[_Fld21480]
           ,[_Fld21481_TYPE]
           ,[_Fld21481_RTRef]
           ,[_Fld21481_RRRef]
           ,[_Fld21482]
           ,[_Fld21483])
(SELECT [_Period]
      ,[_RecorderTRef]
      ,[_RecorderRRef]
      ,[_LineNo]
      ,[_Active]
      ,[_RecordKind]
      ,[_Fld21467RRef]
      ,[_Fld21468RRef]
      ,[_Fld21469RRef]
      ,[_Fld21470RRef]
      ,[_Fld21471_TYPE]
      ,[_Fld21471_RTRef]
      ,[_Fld21471_RRRef]
      ,[_Fld21472RRef]
      ,[_Fld21473RRef]
      ,[_Fld21474RRef]
      ,[_Fld21475RRef]
      ,[_Fld21476]
      ,[_Fld21477]
      ,[_Fld21478RRef]
      ,[_Fld21479]
      ,[_Fld21480]
      ,[_Fld21481_TYPE]
      ,[_Fld21481_RTRef]
      ,[_Fld21481_RRRef]
      ,[_Fld21482]
      ,[_Fld21483]
  FROM [tempdb].[dbo].[_AccumRg21466]
  WITH (NOLOCK))

COMMIT TRANSACTION

GO
42 Tateossian
 
28.06.17
16:23
Этот скрипт, конечно, сделан не вручную:)

Через генератор в консоли SSMS
43 Tateossian
 
28.06.17
16:23
И не забыть делать разностный бэкап, скажем, каждые 5 минут.
44 Вафель
 
28.06.17
16:25
(43) такие портянки принято ссылками давать, а не вываливать сюда
45 Tateossian
 
28.06.17
16:26
(44) Куда ссылкой дать? На rdp от моего сервера?
46 Вафель
 
28.06.17
16:27
(45) Не знаешь где текстовые файлы выкладывать?
47 Tateossian
 
28.06.17
16:27
(46) Это пример скрипта. У каждого он свой будет. тебе места жалко в интернете? Я для примера привел - вроде сложный, а по сути - ерунда.
48 Вафель
 
28.06.17
16:31
А скажи зачем индексы пересоздавать, когда есть операция ребилд?
49 rozer76
 
28.06.17
16:33
(0) сначала (14) п.п. 1 потом нужно понять причину - используй на свой вкус http://www.gilev.ru, ЦУП или прогу от софпоинт это все покажет в одном месте данные perfmon/profiler/техжурнала. Но тут квалификация нужна ну или ищи 1с:эксперта и поставь ему ящик бира
50 ptiz
 
28.06.17
16:36
(49) ТС хочет готовый рецепт: кнопку "Ускорить 1С".
51 Вафель
 
28.06.17
16:36
(49) Вначале нужно онлайн партии отключить.
А потом... а потом окажется, что уже и не тормозит
52 Tateossian
 
28.06.17
16:56
(48) У тебя по умолчанию ииндексы лежат в группе PRIMARY, а я их вместе с таблицами переношу в другую группу - RAMDATA. Соответственно, CREATE никто не отменял после DROP. А ребилд только перестраивает некластеризованные индексы с учетом филлфактор и прочих тонкостей.
53 Tateossian
 
28.06.17
16:56
(51) Пфф, меня бы босс за такие отключения вздернул бы.
54 Tateossian
 
28.06.17
17:00
ТС, умеешь готовить ms sql, есть права для работы с ним?
55 rozer76
 
28.06.17
17:01
(51) это уже методология а уверенности нет что разрешат пользователи
56 Aleksey
 
28.06.17
17:04
(51) заодно и резервы отключить.
И движения товара
57 Tateossian
 
28.06.17
17:04
(39) А он прав. Все тормоза - это из-за таблиц итогов. Хоть сворачивай, хоть не сворачивай базу - они всегда будут "как хвосты" тянуться. Более того, 1С при upadate юзает конструкцию (WITH TABLOCK) - так что, сворачивай нет сворачивай, а проблема-то в конкуренции за ресурсы не исчезнет.

Я делал другой способ, штатными методами: отключал использование итогов, СВОРАЧИВАЛ базу и переписывал все запросы с итогами. Действительно, стало работать быстрее на запись, на чтение стало дольше, но блокировки ушли.
58 ptiz
 
28.06.17
17:20
(57) Что за волшебный способ? Если чтение стало дольше - дольше таблицы держатся транзакциями.
И как можно ускорить запись набора записей регистра, если она делается платформой?
59 Генератор
 
28.06.17
17:23
(58) чтение итогов дольше, т.к. они не хранятся, считать приходится. а запись платформой делается быстрее потому-что не надо актуализировать итоги
60 Вафель
 
28.06.17
17:25
С партиями онлайн никакие настройки не помогут
61 Вафель
 
28.06.17
17:28
(58) при записи набора идет пересчет итогов.
62 Tateossian
 
28.06.17
17:39
В общем две рекомендации, ТС:

1) Читай мануалы по работе с СУБД и оптимизируй саму базу данных. Вариант я писал выше. Если база не на ССД - то это самый первый шаг.

2) Положи на одну машину физическую SQL и 1С сервер и отключи tcp, только shared memory.

3) Сделай кейс, в котором отключишь итоги по ключевым партионным регистрам, запустишь параллельные сеансы с проведением документов по ним и проводи тесты производительности (считай время суммарное операции до оптимизации и после). Если результат дает 20% и более - значит, переноси в продакшн.
63 Tateossian
 
28.06.17
17:41
(62) У меня счет с нуля начинается, походу:)
64 X Leshiy
 
28.06.17
17:43
(63) У тебя, походу, пункт 2 не нужен :)
65 Вафель
 
28.06.17
17:43
(62) а как ты остатки контролируешь? без итогов то?
66 Вафель
 
28.06.17
17:44
(62) Вообще у тебя подход от обратного.
А нужно вначале найти узкие места
67 Tateossian
 
28.06.17
17:44
(65) Читай выше.

...Я переписал ВСЕ ЗАПРОСЫ к виртуальным таблицам на физические.
68 Tateossian
 
28.06.17
17:45
(66) Да, пункт перед 1, который 0: найти узкие места и к ним применить описанные далее способы. А по сабжу, на 90% в них проблема (если речь о типовой).
69 Tateossian
 
28.06.17
17:48
Там в утешке очень неоптимально типовой запрос к регистрам партий написан, на мисте была куча веток по его оптимизации. Посмотри, стоит свойство "Индексировать" у поля номенклатура в регистре? Еще вроде к документу партии/оприходования индексацию можно установить (если ФИФО, а не по средней).
70 Cyberhawk
 
28.06.17
18:11
(57) "отключал использование итогов" // Что, переписывал все запросы, которые используют виртуальные таблицы регистра? Много таких было? И что за регистр?
71 Tateossian
 
28.06.17
18:19
(70) Товары на складах и ндс по партиям, может еще какой регистр, но их немного.

Спасибо разработчикам конфы, что, по сути, всего одна точка входа для получения остатков, а не разбросано по всей конфигурации. И несколько отчетов и заполнялок поправить пришлось. Скорее, это задача больше на внимательность, чем на умение качественно кодить.
72 Cyberhawk
 
28.06.17
18:30
(71) Ну т.е. ты вместо "Выбрать КоличествоОстаток Из Товары.Остатки" заменял на "Выбрать СУММА(Количество) Из Товары", типа так?
73 Tateossian
 
28.06.17
18:30
(72) Да, все верно.
74 Cyberhawk
 
28.06.17
18:31
(73) Ок, спс за то, что поделился успешным опытом, может и пригодится когда-нибудь
75 Tateossian
 
28.06.17
18:36
А еще у меня используется механизм синонимов и представлений. Например, таблицу 1С видит как TABLE, но физически она на другом сервере. Это удобно для условно постоянных данных: адресных классификаторов, например. А еще есть такой "хинт": вместо таблицы подсунул представление (VIEW), которое само по себе - запрос. В общем, работоспособность удовлетворительная: при размере базы в 300Гб все летает, никаких жалоб (постоянных). Правда, все оптимизаторские штуки подробно описаны в редмайне, дабы потом не потеть в случае форс-мажора.
76 МихаилМ
 
28.06.17
19:54
(75)
как решаете проблему реструктуризации ?
77 МихаилМ
 
28.06.17
20:00
(75)
"такой "хинт"" . hint - намек, подсказка,совет,указание
78 Tateossian
 
28.06.17
20:57
(76) Спецзапрос после реструктуризации возвращает все в оптимизированный режим. Перед обнлвлением всегда делаю бэкпп. Если реструктуризация сыпится, другим скриптом возвращаю в исходное состояние, делается реструктуризация, и дальше как в первом предложении. Почти все это на батниках. Работает само по себе.
79 Tateossian
 
28.06.17
21:01
(77)  Слово "хинт" можно понимать буквально: это безусловная подскахка  оптимизатору запросов sql.
80 H A D G E H O G s
 
28.06.17
21:03
Дикости какие.
Не проще регзаданием устанавливать минимальную дату итогов на 3 месяца назад и не заниматься этой дичью?
81 H A D G E H O G s
 
28.06.17
21:03
Это шедевр!
82 H A D G E H O G s
 
28.06.17
21:04
Нельзя недооценивать глубину глубин.
Чувак намертво привязал к себе контору.
84 H A D G E H O G s
 
28.06.17
21:05
Неудивительно, что на него тут же съреагировал (но тут должно быть другое слово, но да ладно) МихаилМ, цитируя которого видим: "многие любят, когда все просто. я люблю когда все сложно."

Это, прям, бинго.
85 Tateossian
 
28.06.17
21:07
(80)  Я тебе скажу больше - у нас некторые люди работают в прошлом году. А то что ты пишешь тоже сделано, на 01.01.2017.
86 H A D G E H O G s
 
28.06.17
21:08
(85) Как это может быть сделано, если Итоги отключены?
87 Tateossian
 
28.06.17
21:13
(86) Я ежедневно базу восстанавливаю, по фифо партионному. Обычно этот период - квартал. Так вот, в базе примерно 40000 документов нужно прогнать восстановлением по партиям. И мне на это хватает 6-7 часов. А, ещё курсовые посчитать, восстановив взаимооасчеты.
88 Tateossian
 
28.06.17
21:15
(87) Там, где отключены итоги переписаны запросы, а остатки внесены итоговой корректировкой на начало года.
89 Cyberhawk
 
28.06.17
21:16
(86) Так не по всем регистрам отключены
90 Tateossian
 
28.06.17
21:18
Еще могу рассказать как себестоимость считаем с помощую матриц, а рассчет делается dll'кой, так как 1с-ка долго считает, примерно 30 минут. А нативная ВК - поимерно 500 сек. В типовой расчет даже часа не хватает, а на большее меня не хватает.
91 Волшебник
 
модератор
28.06.17
21:19
(90) Не надо.
92 Tateossian
 
28.06.17
21:20
Моя УПП - это пример хай-лоад системы, ей богу. Все кручу ERP -  ох тяжко переходить будет.
93 H A D G E H O G s
 
28.06.17
21:21
(87) "Так вот, в базе примерно 40000 документов нужно прогнать восстановлением по партиям."

Собираем полную таблицу остатков, отключаем Итоги, начинаем проводить эти 40000 с инкрементом этой Таблицы, включаем Итоги.
94 H A D G E H O G s
 
28.06.17
21:21
(93) *** молимся, чтобы ничего не упало.
95 Tateossian
 
28.06.17
21:22
(94) Уже год все работает, молитв не нужно.
96 Tateossian
 
28.06.17
21:23
(91) Хорошо.
97 МихаилМ
 
28.06.17
22:06
(96)
я с 5 контор предлагал внедрить  аналоги Ваших внедрения

и везде получал отказ по причине невозможности найти замену
в случае если меня переедет танк.  

сорри  за оффтоп
98 Злопчинский
 
29.06.17
00:28
"Я охреневаю от своей охрененности"
99 Tateossian
 
29.06.17
01:27
(97) Одинесники меня удивляют отсутствием любознательности. И в том, что они расписываются в своей тупости (не все). Я же специально даже написал в одном из постов, что система лежит, ко всему прочему, на RAM диске (там же темп файлы серверные, до кучи, а журнал лежит на SSD, ежедневно переносясь в архив): когда электрики проводили работы, они предупредили, что в полночь обесточат здание. Ну я в 23.45 по RDP пытаюсь зайти на рабочий хост: а не тут-то было, электрики в 23 вырубили свет и батареи не хватило. И как ни странно, я базу восстановил за 15 минут, примерно, никаких проблем. Вот мой подчиненный, светило мое, сидит и думает над задачей весь день: что делаешь, спрашиваю. Да вот, нужно в этикетку длинное название уместить все, если оно не умещается - уменьшаем шрифт и так пока не уместим" (растягивать ячейку нельзя). Он нашел какой-то мануал на инфостарте от извращенцев и пытался сделать. Я говорю ему: "Возьми лист, сделай ему размер этой ячейки, туда же макет в эту одну ячейку и делов: проверяй вывод, влезло - ок, не влезло - уменьшай шрифт". Пять минут и проблема решена. Нет же, мы не хотим думать, мы будем искать "умные" советы от экспертов весь день. Как с детьми, ей богу, няньчусь. СКД юзать не хотят - а это же половина проблем решенных: нет, будем заводить новые структуры для хранения трех объектов. Я еще добрый, не ругаю сильно, а за ошибки выхода за пределы массива руки отрубать надо. Или другой сотрудник: есть у нас сайт электронного документооборота, там все документы (помимо 1С). И понадобилось штук 30 документов вывести оттуда, так программист скриншоты делал сидел. Вот жеж. Эта проблема решается в консоли java script'ом десяткой строк кода... Я получаю по шапке, разумеется, от Генерального, но иногда устаешь покрывать своих раздолбаев. Хотя ребята все умные, толковые, но порой удивляешься...
100 Tateossian
 
29.06.17
01:31
(97) А вес решения, которые я внедрил задокументированы в Редмайне с подробным описанием, чтобы, не дай бог, меня танк переехал, а контора не встала. И такое решение намного лучше, чем постоянно говорить сотрудникам "Ну это 1С тормозит, это же типовая, так все работают, плюясь, больше ее никак не ускорить, мучайтесь, ребята".
101 Tateossian
 
29.06.17
01:33
Вот вопрос экспертам: как в типовой конфигурации из куска кода сделать функцию наиболее быстрым способом?
102 H A D G E H O G s
 
29.06.17
01:53
(100) "которые я внедрил задокументированы в Редмайне с подробным описанием"

Хахаха. Его еще сначало найти надо, это описание.
Ставлю 100500%, что как только тебя там не станет, через критичный промежуток времени "без сбоя" все станет колом.
103 H A D G E H O G s
 
29.06.17
01:54
(101) Странный вопрос - ну, берем и копируем, это если отвечать на твой вопрос.

Обособить код, чтобы он не зависил от типовых штоле? или что?
104 H A D G E H O G s
 
29.06.17
01:59
Да че там с нестандартными фишками? О чем вообще речь.
Есть тиражное решение, с мануалами и простейшим кодом. Постоянно звонят программисты, которые докручивают там велосипеды и спотыкаются на них, так как поддержка уже снята.

99% при снятой поддержке, при обновлении, оставляют старые объекты. Ну просто, не задумаваясь. А потом звонят и говорят - ваше решение не работает, он какие-то процедуры подписки на события не может найти.
105 Tateossian
 
29.06.17
02:00
(103) А проще? В один клик?
106 H A D G E H O G s
 
29.06.17
02:03
(105) Рефакторинг - Выделить фрагмент
107 H A D G E H O G s
 
29.06.17
02:03
Если ты об этом
108 H A D G E H O G s
 
29.06.17
02:04
Короче, давай отгадку, великий Сфинск
109 Tateossian
 
29.06.17
02:07
(106) Да, красава. Но многие этого не знают:)
110 Tateossian
 
29.06.17
02:10
Люди, может за одно подскажете. В общем хочу сделать планирование производства - по уму, с помощью имитационного моделирования. В частности, при помощи вот энтого

https://repast.github.io/

У кого был опыт использования моделирования для планирования? Или кто работал с AnyLogic?
111 ILM
 
гуру
29.06.17
06:56
(110) Делал планирование как для серийного, так и для индивидуального производства. Могу дать общий совет:
1. Полное планирование производства делать только укрупненным на период и только для оценки занятости или исполнимости плана.
2. Оперативное планирование производство должно работать на базе приоритетов и системного ограничения, а у каждого заказчика это разные понятия.
3. Исполнитель должен строго следовать оперативному плану, не пытаясь сделать что-то другое вместо нужного.
4. Обеспечение производства должно быть со страховым запасом, на случай статотклонений от графика работы оборудования.
112 ptiz
 
29.06.17
09:24
Добровольно отказаться от физических таблиц итогов?
Мама дорогая! (*wall)
113 rozer76
 
29.06.17
09:55
114 rphosts
 
29.06.17
12:33
(57) сплиттеры не спасут отца русской демократии?
116 2dolist
 
29.06.17
13:46
(115) зачем ты такие nsfw вещи выкладываешь
117 Лефмихалыч
 
модератор
29.06.17
13:50
мне кажется, этот джентльмен (99) хочет сказать, что мы здесь все - не джентльмены.
А еще есть подозрение, что он не любит пролетариата.
118 Лефмихалыч
 
модератор
29.06.17
13:51
в связи с этим я решил поставить вопрос: ты откудова взялся такой бессмертный, ? Tateossian ?
119 Имитация работы
 
29.06.17
14:07
А что ты хочешь от человека, взявшего себе ником название выпендрежной ювелирки? =)
120 Маленький Вопросик
 
01.07.17
19:19
я бы хотел реально посмотреть на человека, который "шаманством" на сервере и sql сможет увеличить производительность.)
121 mexanik_96
 
01.07.17
19:22
(120) дак это, а метрика то сейчас какая? что висит, сколько выполняется? к чему идти? какая модель данных(сколько вставки, чтения)? как покрыто индексами?
122 mexanik_96
 
01.07.17
19:23
+ (121) отсюда можно в железо посмотреть либо в субд, итам типа "штатными" средствами уже что то поделать
123 Имитация работы
 
01.07.17
19:27
124 Маленький Вопросик
 
02.07.17
15:34
Чем кончилось дело:
снял остатки, внес их опреходыванием и списанием
Снес кучу документов
Провел оприход и списание
И пересоздал дт-шник в новую базу

Сверил остатки до среза и после - обычным отчетом ведомость товаров на складах

В результате, размер mdf файла уменьшился с 90 гб до 60 гб

Вся операция заняла порядка 20 часов
125 ptiz
 
03.07.17
09:00
(124) И? Со скоростью-то что?