Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: И опять об 1с SQL и повышения производительности.  [new]
Traygod
Member

Откуда:
Сообщений: 82
Владислав Колосов
Traygod,

сколько ядер? 1c создает значительную нагрузку на tempdb.

https://msdn.microsoft.com/ru-ru/library/ms175527(v=sql.105).aspx

Кроме того, 100 мб прирост - это для домашней базы ещё пригодно, но не для предприятия. Для журнала это просто губительно - получите тысячи VLF и производительность стремительно деградирует.


База после сжатия таблиц по PAGE стала весить 50 гигов, вместо 90. Сколько сделать шаг на рост?
17 апр 17, 13:12    [20407409]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
Traygod
Member

Откуда:
Сообщений: 82
Владислав Колосов
Traygod,

сколько ядер? 1c создает значительную нагрузку на tempdb.

https://msdn.microsoft.com/ru-ru/library/ms175527(v=sql.105).aspx

Кроме того, 100 мб прирост - это для домашней базы ещё пригодно, но не для предприятия. Для журнала это просто губительно - получите тысячи VLF и производительность стремительно деградирует.



4 ядра, tempdb на системном диске, в perfmon нагрузка в пик на него 50-60%.
17 апр 17, 13:14    [20407418]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
Traygod
как лечить?
Либо увеличить объем памяти на сервере.
Либо избавляться от сортировок, хеш-соединений и хеш-группировок в запросах.
17 апр 17, 13:17    [20407433]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7931
Traygod,

Если Вам известен годовой прирос базы, то я бы советовал сделать от текущего запас на 5-10 лет и зафиксировать этот размер сразу.

Например, 90 Гб сотрудники наработали за 5 лет. Установите фиксированный размер базы в 300 гб и размер журнала 10% от размеры базы. При этом желательно произвести дефрагментацию диска (или создавать на чистом диске), разместить на нём базу(ы) и выделить для нее (них) место сразу с запасом.
При этом логически база будет занимать непрерывное пространство и исчезнут накладные расходы на сжатие, расширение, дисковую фрагментацию. Чтение непрерывных кусков выгодно даже для SSD.
17 апр 17, 13:20    [20407461]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7931
Traygod,

посмотрите рекомендации по ссылке на оптимизацию tempdb.
17 апр 17, 13:21    [20407472]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
Traygod
Member

Откуда:
Сообщений: 82
Владислав Колосов
Traygod,

посмотрите рекомендации по ссылке на оптимизацию tempdb.


Да, спасибо большое. Сделано всё было изначально примерно так же. Сегодня зафиксировал интересный момент, когда заходит и начинает проводить один из людей(Оператор передает задания в цех), то все начинают вешаться, при этом ни память, ни нагрузка на проц и жесткие - особо не отличается, разве что процентов на 10 вырастает, но ощущение что sql рвет со всеми коннекты, т.е. у меня завис даже sql монитор, а рядом с часиками появилось сообщение что "mssql ждет завершение операции, если будет постоянно, то обратитесь в microsoft". Скуль 2014, 1с 8.3.8_1784. Даже предполагал что может что-то агент делает и выключил его сегодня с утра, но днем всё повторилось - помог только перезапуск службы скуля. Ребят, выручайте - что-то неведомое ))
17 апр 17, 14:57    [20407881]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31470
Traygod
Даже предполагал что может что-то агент делает и выключил его сегодня с утра, но днем всё повторилось - помог только перезапуск службы скуля. Ребят, выручайте - что-то неведомое ))
Так что происходит то?
Кроме эмоциональных оценок что есть?
Какие были блокировки, какие очереди к дискам, как они распределены по типам файлов, какая нагрузка на CPU, как она распределена по ядрам, какие появились ожидания у коннектов, которые "зависли"?
17 апр 17, 15:06    [20407919]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
человек_ниоткуда
Guest
Traygod
Итак запустил в пик, топом оказался RESOURCE_SEMAPHORE, есть мысли как лечить?

RESOURCE_SEMAPHORE - это оперативка.
Лечить - тупо добавить оперативки на сервер. +25% >>> +50% >>> +100% -- пока не поможет.
А версию скуля ты говорил уже? У тебя там надеюсь не x86?
PRINT @@VERSION

^^^ что выдаёт?

Просто для интереса:
EXEC sys.sp_configure 'show advanced options', '1'; RECONFIGURE;
GO

EXEC sys.sp_configure 'max server memory (MB)';
EXEC sys.sp_configure 'min server memory (MB)';

^^^ что выдаёт?

Попробуй обновлять статистики, тогда планы запросов будут оптимальнее и есть шанс что память будут меньше юзать. Ночью запусти:
+

/*	@Mode :
*	 - RPT : Генерирует и выводит на экран скрипт обновления статистк.
*	 - EXE : Выполняет обновление статистик. 
*/
DECLARE @Mode CHAR(4) = 'EXE';
/*	@DoFullScan :
*	 - 1 : Выполняет обновление статистик с атрибутом FULLSCAN.
*	 - 0 : Иначе.
*/
DECLARE @DoFullScan BIT = 0;

------------------
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

WHILE 1=1
BEGIN
	IF @Mode = 'RPT'
	BEGIN
		PRINT 'USE ' + QUOTENAME(DB_NAME()) + ';';
		BREAK;
	END;
	
	IF @Mode = 'EXE'
	BEGIN
		PRINT 'Database name: ' + DB_NAME();
		BREAK;
	END;

	RAISERROR ('Invalid @Mode option.', 11, 1);
END;

DECLARE 
	@TblObjId INT = (SELECT MIN([object_id]) FROM sys.tables)
,	@SQL NVARCHAR(4000);

WHILE	@TblObjId IS NOT NULL
BEGIN
	SET @SQL =
	(	SELECT
			REPLACE(REPLACE(
				CASE @DoFullScan 
					WHEN CAST(1 AS BIT) THEN N'UPDATE STATISTICS ?(sc_name).?(tb_name) WITH FULLSCAN;'
					WHEN CAST(0 AS BIT) THEN N'UPDATE STATISTICS ?(sc_name).?(tb_name);'
				END
			,	'?tb_name?', QUOTENAME(tb.name))
			,	'?sc_name?', QUOTENAME(sc.name))
		FROM
			sys.tables tb
		INNER JOIN
			sys.schemas sc
		ON	sc.[schema_id] = tb.[schema_id]
		WHERE
			@TblObjId = tb.[object_id]
	);
	
	IF @Mode = 'RPT'
	BEGIN
		PRINT 'GO';	
		PRINT @SQL;		
	END;
	
	IF @Mode = 'EXE'
		EXEC (@SQL);
	
	SET @TblObjId = (SELECT MIN([object_id]) FROM sys.tables WHERE [object_id] > @TblObjId);
END


И скажи как на следующий день всё будет работать?

Traygod
Максимальная степень параллелизма стоит 1.

Норм. Можешь затюнить по крутому.
Сделай:
EXEC sys.sp_configure 'show advanced options', '1'; RECONFIGURE;
GO
EXEC sys.sp_configure 'cost threshold for parallelism', '2048'; RECONFIGURE;
EXEC sys.sp_configure 'max degree of parallelism', '2'; RECONFIGURE;

Вечером следующего дня отсюда запусти скрипт https://www.sqlskills.com/blogs/jonathan/tuning-cost-threshold-for-parallelism-from-the-plan-cache/ посмотри какие значения в StatementSubTreeCost и много-ли значений приходит.
17 апр 17, 15:48    [20408034]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34076
Блог
сколько Page Life Expectancy?
18 апр 17, 15:32    [20411106]     Ответить | Цитировать Сообщить модератору
 Re: И опять об 1с SQL и повышения производительности.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7931
автор
Сегодня зафиксировал интересный момент

Возможно, что он забрал себе все 4 ядра.
18 апр 17, 18:39    [20412066]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить