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

подскажите как ускорить работу штатными методами.
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) И? Со скоростью-то что?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.