|
Совет по ускорению 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) И? Со скоростью-то что?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |