Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) статья Ускоряем регисты v77 для базы MS SQL (число прочтений - 14239 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
статья Ускоряем регисты v77 для базы MS SQL
08. Декабря 2010 :: 06:16
Печать  
статья Ускоряем регисты v77 для базы MS SQL
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #1 - 08. Декабря 2010 :: 06:16
Печать  
Пролог
Читая о новых возможностях sql2008 по сжатию данных пришла мысль, а не сделать нечто
похожее на  это (  в базе sql2000 v77 )  руками.
Мотивы все те же. Заставляем sql server обрабатывать меньшее количество страниц для получения
точно такого же результата.

То что описано далее реально работает на высоконагруженной 1с77 ms sql базе
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #2 - 08. Декабря 2010 :: 06:17
Печать  
Основная мысль
Таблицы rg.. самые изменяемые таблицы 1с базы и любое улучшение работы с этими таблицами
обязательно улучшает общую производительность sql базы.
Для всех таблиц  rg...  меняем для поля PERIOD тип с datetime на тип smalldatetime.
Вообщем то это главная идея этой статьи.
Далее описывается как это сделать и что из этого получилось
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #3 - 08. Декабря 2010 :: 06:17
Печать  
Как сделать
Расписывается для конфигурации Торговля и Склад версия 9.2
В этой конфигурации есть регистр ОстаткиТМЦ
  

_______________001.JPG ( 10 KB | Загрузки )
_______________001.JPG
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #4 - 08. Декабря 2010 :: 06:18
Печать  
Описание из dds
#==TABLE no 160    : Регистр ОстаткиТМЦ
# Name    |Descr                         |SQLTableNam|RecordLock
T=RG405   |Регистр ОстаткиТМЦ            |RG405      |         
#-----Fields-------
# Name                  |Descr               |Type|Length|Precision
F=PERIOD                |Period Registr      |D   |0     |0       
F=SP4062                |(P)Фирма            |C   |9     |0       
F=SP408                 |(P)Номенклатура     |C   |9     |0       
F=SP418                 |(P)Склад            |C   |9     |0       
F=SP3117                |(P)ЦенаПрод         |N   |14    |2       
F=SP411                 |(P)Количество       |N   |14    |5       
#----Indexes------
# Name                           |Descr         |Unique|Indexed fields                                              |Type      
I=PK_RG405                       |PERIOD+PROP   |1     |PERIOD,SP4062,SP408,SP418,SP3117                            |1         
I=VIA408                         |VIA408        |0     |PERIOD,SP408                                                |0         
#

Т.е. в таблице  RG405 есть Кластерный индекс PK_RG405
и индекс VIA408 ( Ускоряет отбор итогов по номенклатуре )
В терминах sql RG405 это
Код
Выбрать все
CREATE TABLE [RG405] (
	[PERIOD] [datetime] NOT NULL ,
	[SP4062] [char] (9) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[SP408] [char] (9) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[SP418] [char] (9) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[SP3117] [numeric](14, 2) NOT NULL ,
	[SP411] [numeric](14, 5) NOT NULL ,
	CONSTRAINT [PK_RG405] PRIMARY KEY  CLUSTERED
	(
		[PERIOD],
		[SP4062],
		[SP408],
		[SP418],
		[SP3117]
	)  ON [PRIMARY]
) ON [PRIMARY]
 



Повторюсь еще раз наша цель заменить
     [PERIOD] [datetime] NOT NULL ,
на
     [PERIOD] [smalldatetime] NOT NULL ,
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #5 - 08. Декабря 2010 :: 06:19
Печать  
Что делаем
1. Создаем копию таблицы RG405 в Х_RG405
2. Копируем данные из  RG405 в  Х_RG405
3. Удаляем таблицу RG405
4.Создаем RG405 с полем PERIOD имеет тип   smalldatetime
5. Копируем данные из  Х_RG405 в  Х_RG405
6. Создаем индекс VIA408 в таблице RG405
7. Удаляем таблицу Х_RG405
8.Цель достигрнута.  Работаем в обновленной 1с

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

В приложении расписываются подробно шаги с 1-7. Аналогичные действия надо выполнить для всех
регистров Вашей базы .Неважно регистр остатков или оборотов.
также не важна дискретность итогов (месяц декада неделя пять дней)  я считаю что всегда должен быть месяц
  

__________.txt ( 1 KB | Загрузки )
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #6 - 08. Декабря 2010 :: 06:20
Печать  
После  имеем
Таблицы rg занимает меньше памяти а значит все операции (insert update delete ) выполняются быстрее и
при этом меньше расходуется буферный пул.
Т.к поле PERIOD входит в кластерный индекс то операции с индексами(со всеми индексами по rg),
то  операции над индексами ( scan table, scan index, seek index) выполняются быстрее
Также т.к длина одной записи rg стала меньше , то информация об rg ,
которая пишется в журнал транзакций, стала короче, поэтому запись в журнал транзакций об rg пишется быстрее.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #7 - 08. Декабря 2010 :: 06:20
Печать  
Еще наблюдение при работе с этими обновленными таблицами изменились блокировки по таблицам rg
раньше было
id        table        type         mode      Status           Resource
278     RG4380    Tab          S           GRANT

Стало
id        table        type         mode      Status           Resource
278     RG4380    Tab          IS           GRANT
278     RG4380    Pag          S           GRANT         1:2347280
278     RG4380    Pag          S           GRANT         1:2347281
278     RG4380    Pag          S           GRANT         1:2347094
........................................
278     RG4380    Pag          S           GRANT         1:2347221
  

__________PAG.JPG ( 84 KB | Загрузки )
__________PAG.JPG
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #8 - 08. Декабря 2010 :: 06:21
Печать  
Аналогично можно написать и для итогов. таблиц по бухгалтерии.

Если Вы применили все что написано выше и эфект 0 то скорее всего у Вас проблемы с дисковой системой
sql сервера. Скорее всего файлы данных и журнала транзакций расположенны на медленных дисковых массивах
и/или эти файлы сильно повержены внешней  физической фрагментации ( файловая фрагментация)
и/или внутренней (логической) фрагментации данных.


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

Эпилог
Надеюсь ,вышеизложенное, улучшит  работу Ваших пользователей с программой 1с77 для базы ms sql

  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #9 - 08. Декабря 2010 :: 07:22
Печать  
Z1 писал(а) 08. Декабря 2010 :: 06:17:
обязательно улучшает общую производительность sql базы.


Z1 писал(а) 08. Декабря 2010 :: 06:19:
8.Цель достигрнута.



А сколько это "в попугаях"? Какие показатели и на сколько процентов были улучшены?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #10 - 08. Декабря 2010 :: 07:38
Печать  
berezdetsky писал(а) 08. Декабря 2010 :: 07:22:
Z1 писал(а) 08. Декабря 2010 :: 06:17:
обязательно улучшает общую производительность sql базы.


Z1 писал(а) 08. Декабря 2010 :: 06:19:
8.Цель достигрнута.



А сколько это "в попугаях"? Какие показатели и на сколько процентов были улучшены?

Я не знаю как это измерить.
(единственно что можно сделать на тестовой ТС9 посмотреть сколько было и сколько стало чтений страниц )
по субъективным ощущениям  5%-10% при проведении.

Как это сказалось при рассчетах вне проведения не знаю.
но не зря же ms sql понизил экскалацию блокировок.
получается при тех же ресурсах(железо тоже) и при той же внешней нагрузке ms sql обрабатывает больше данных (rg) за то же самое время.
  
Наверх
 
IP записан
 
zaki
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #11 - 03. Января 2011 :: 07:59
Печать  
Я протестировал, на обновлениях записей таблиц RG дает 10-15% прирост скорости, осталось автоматизировать  замену datetime на smalldatetime
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #12 - 03. Января 2011 :: 18:22
Печать  
можно еще одно заклинание применить: заменить у всех ссылочных полей кодировку (collate) например на Cyrillic_General_BIN (ну или Latin1_General_BIN) - теоретически сравнение символьных полей с такой кодировкой должно ускориться.
  

1&&2&&3
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #13 - 10. Января 2011 :: 17:56
Печать  
trad писал(а) 03. Января 2011 :: 18:22:
заменить у всех ссылочных полей кодировку (collate) например на Cyrillic_General_BIN (ну или Latin1_General_BIN)

Интересно было бы посмотреть на результаты сравнения.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: статья Ускоряем регисты v77 для базы MS SQL
Ответ #14 - 10. Января 2011 :: 17:59
Печать  
Z1 писал(а) 08. Декабря 2010 :: 06:16:
статья Ускоряем регисты v77 для базы MS SQL

А ты это у себя внедрил? Или это пока из разряда экспериментального исследования?

ps: статья-то где, что-то ссылки не вижу?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать