Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Настройка TempDB файлов / 10 сообщений из 10, страница 1 из 1
18.06.2018, 13:53
    #39661983
invertex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
Коллеги, пожалуйста помогите настроить работу с TempDB файлами или ткните носом, где почитать.
Исходные данные:
1. В качестве приложения используется 1С.
2. На виртуальном RAM диске расположены: tempdb.mdf, tempdev01.ndf, tempdev02.ndf, tempdev03.ndf, templog.ldf
3. На SSD диске расположен: tempdev04.ndf, templog01.ldf
4. TempDB и Log размер InitalSize 1024MB с автоматическим приращением 512MB.


В результате хотелось бы получить следующее:
1. Используются файлы на виртуальном RAM диске до тех пор пока не закончилось место.
2. Если место на RAM диске закончилось, начинаем использовать SSD.
3. При рестарте SQL, размер файлов возвращается к п.4, а не к последнему размеру файлов (сейчас почему-то восстанавливается последний размер).
...
Рейтинг: 0 / 0
18.06.2018, 14:23
    #39661999
Rankatan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
Файл журнала транзакций работает именно так: когда первый файл заканчивается переходим на второй. Обычные файлы с данными заполняются всегда параллельно, поэтому тут ничего не сделать.
...
Рейтинг: 0 / 0
18.06.2018, 14:45
    #39662018
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
invertex,

про файлы лога вам уже ответили

про файлы данных:
выделение места в файлах данных происходит циклически (файлы перебираются) и
пропорционально свободному месту
поэтому можно выделить для файлов tempdb.mdf, tempdev01.ndf, tempdev02.ndf, tempdev03.ndf одинаковое пространство максимально заполнив диск и отключив автоприращение.
а для файла tempdev04.ndf выделить очень мало места с малым автоприращением.
тогда tempdev04.ndf будет использоваться минимально, основная нагрузка на него ляжет только когда остальные файлы будут заполнены.
НО, нужно учитывать, что в этот момент он будет очень часто приращиваться малыми кусочками.
(тут можно написать скрип отслеживающий такое поведение и меняющий настройки для этого файла)

про рестарт службы:
размер файлов tempdb после рестарта сбрасывается на значения "последней ручной установки"
посмотреть эти значения можно так:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT 
name, file_id, type_desc, size * 8 / 1024 [TempdbSizeInMB]
FROM sys.master_files
WHERE DB_NAME(database_id) = 'tempdb'
ORDER BY type_desc DESC, file_id 
GO
...
Рейтинг: 0 / 0
18.06.2018, 14:53
    #39662025
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
Дедушкапоэтому можно выделить для файлов tempdb.mdf, tempdev01.ndf, tempdev02.ndf, tempdev03.ndf одинаковое пространство максимально заполнив диск и отключив автоприращение.

Ну и maxdop поставить в 4 вместо 0, так я думаю...Чтобы не было у MSSQL движка мысли сделать все в 5 потоков, начав активно приращивать tempdev04.ndf раньше нужного.
...
Рейтинг: 0 / 0
18.06.2018, 14:59
    #39662030
Rankatan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
Дедушка,

Я сейчас неуверен, но вполне может быть так, что сервер пытается заполнить файлы данных на одинаковый размер заполненности. Т.е. ему все равно какой текущий размер файла, он будет все равно во все 4 файла лить одинаковый объем.
...
Рейтинг: 0 / 0
18.06.2018, 15:05
    #39662034
Rankatan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
RankatanДедушка,

Я сейчас неуверен, но вполне может быть так, что сервер пытается заполнить файлы данных на одинаковый размер заполненности. Т.е. ему все равно какой текущий размер файла, он будет все равно во все 4 файла лить одинаковый объем.
Если конечно файлы все изначально пустые. Но если например у нас есть 2 файла заполненные на 500мб каждый и мы добавили новый файл, то да в третий будет писаться намного больше данных, чтобы в конечном итоге размер заполненности сравнялся.

В любом случае вариант когда у нас 4 файла и 3 их них кладем на ram и четвертый на ssd решит проблему. В этом случае на ram будет писаться в три раза больше данных.
...
Рейтинг: 0 / 0
18.06.2018, 15:07
    #39662035
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
invertexКоллеги, пожалуйста помогите настроить работу с TempDB файлами или ткните носом, где почитать.
Исходные данные:

2. На виртуальном RAM диске расположены: tempdb.mdf, tempdev01.ndf, tempdev02.ndf, tempdev03.ndf, templog.ldf


Осподе, милосердный!!! Избави нас от... искушения!

Сервер сам эффективнее использует ОЗУ, чем фсякие "виртуальные RAM диски".
Верни ОЗУ серверу и не майся херней.
...
Рейтинг: 0 / 0
18.06.2018, 15:20
    #39662044
0wl
0wl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
aleks222Верни ОЗУ серверу и не майся херней.
Может там Standard и возвращать уже некуда?

По поводу записи в tempdb: вот, например, кучка MVP пишет, что файлы используются пропорционально размеру:
https://logicalread.com/sql-server-tempdb-best-practices-multiple-files-w01/#.WyehKYp9hhE When you create multiple data files they will all be in the primary filegroup and SQL Server uses a proportional fill algorithm to determine which file to use for each request to create an object.
...
Рейтинг: 0 / 0
18.06.2018, 16:10
    #39662069
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
Rankatan,

Дело не в размере файла, а в размере свободного места
пропорционально которому распределяются данные.
В доке хорошо описано и про Round Robin и про Proportional Fill
...
Рейтинг: 0 / 0
18.06.2018, 16:15
    #39662072
Rankatan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка TempDB файлов
сделал репу

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
USE [master]
GO

CREATE DATABASE [test_size]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'test_size', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\test_size.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
 FILEGROUP [GRSIZES] 
( NAME = N'size1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\size1.ndf' , SIZE = 111104KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
( NAME = N'size2', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\size2.ndf' , SIZE = 111104KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
( NAME = N'size3', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\size3.ndf' , SIZE = 111104KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
( NAME = N'size4', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\size4.ndf' , SIZE = 512KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'test_size_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\test_size_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

CREATE TABLE [dbo].[tblsize](
	[i] [int] NULL,
	[bin] [varbinary](max) NULL
) ON [GRSIZES] TEXTIMAGE_ON [GRSIZES]

GO


insert into [dbo].[tblsize] ([bin])
select cast(REPLICATE('dsfasdfdsf',1000) as varbinary(max))
GO 200000



вывод такой: он пишет пропорционально свободному месту внутри файлов, если у нас 4 пустых файла (у 3х начальных размер 100 мб и один 512кб) то пока место полностью не будет занято внутри файлов с 100мб он не начнет писать в файл 512кб. Короче сервер стремится уровнять свободное место внутри всех файлов.

Поэтому Дедушка прав.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Настройка TempDB файлов / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]