Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
invertex Member Откуда: Сообщений: 1 |
Коллеги, пожалуйста помогите настроить работу с 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, а не к последнему размеру файлов (сейчас почему-то восстанавливается последний размер). |
18 июн 18, 13:53 [21499710] Ответить | Цитировать Сообщить модератору |
Rankatan Member Откуда: Сообщений: 250 |
Файл журнала транзакций работает именно так: когда первый файл заканчивается переходим на второй. Обычные файлы с данными заполняются всегда параллельно, поэтому тут ничего не сделать. |
18 июн 18, 14:23 [21499815] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
invertex, про файлы лога вам уже ответили про файлы данных: выделение места в файлах данных происходит циклически (файлы перебираются) и пропорционально свободному месту поэтому можно выделить для файлов tempdb.mdf, tempdev01.ndf, tempdev02.ndf, tempdev03.ndf одинаковое пространство максимально заполнив диск и отключив автоприращение. а для файла tempdev04.ndf выделить очень мало места с малым автоприращением. тогда tempdev04.ndf будет использоваться минимально, основная нагрузка на него ляжет только когда остальные файлы будут заполнены. НО, нужно учитывать, что в этот момент он будет очень часто приращиваться малыми кусочками. (тут можно написать скрип отслеживающий такое поведение и меняющий настройки для этого файла) про рестарт службы: размер файлов tempdb после рестарта сбрасывается на значения "последней ручной установки" посмотреть эти значения можно так: 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 |
18 июн 18, 14:45 [21499919] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
Ну и maxdop поставить в 4 вместо 0, так я думаю...Чтобы не было у MSSQL движка мысли сделать все в 5 потоков, начав активно приращивать tempdev04.ndf раньше нужного. |
||
18 июн 18, 14:53 [21499964] Ответить | Цитировать Сообщить модератору |
Rankatan Member Откуда: Сообщений: 250 |
Дедушка, Я сейчас неуверен, но вполне может быть так, что сервер пытается заполнить файлы данных на одинаковый размер заполненности. Т.е. ему все равно какой текущий размер файла, он будет все равно во все 4 файла лить одинаковый объем. |
18 июн 18, 14:59 [21499992] Ответить | Цитировать Сообщить модератору |
Rankatan Member Откуда: Сообщений: 250 |
Если конечно файлы все изначально пустые. Но если например у нас есть 2 файла заполненные на 500мб каждый и мы добавили новый файл, то да в третий будет писаться намного больше данных, чтобы в конечном итоге размер заполненности сравнялся. В любом случае вариант когда у нас 4 файла и 3 их них кладем на ram и четвертый на ssd решит проблему. В этом случае на ram будет писаться в три раза больше данных. |
||
18 июн 18, 15:05 [21500028] Ответить | Цитировать Сообщить модератору |
aleks222 Member [заблокирован] Откуда: Сообщений: 1240 |
Осподе, милосердный!!! Избави нас от... искушения! Сервер сам эффективнее использует ОЗУ, чем фсякие "виртуальные RAM диски". Верни ОЗУ серверу и не майся херней. |
||
18 июн 18, 15:07 [21500039] Ответить | Цитировать Сообщить модератору |
0wl Member Откуда: Сообщений: 84 |
Может там Standard и возвращать уже некуда? По поводу записи в tempdb: вот, например, кучка MVP пишет, что файлы используются пропорционально размеру:
|
||||
18 июн 18, 15:20 [21500116] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
Rankatan, Дело не в размере файла, а в размере свободного места пропорционально которому распределяются данные. В доке хорошо описано и про Round Robin и про Proportional Fill |
18 июн 18, 16:10 [21500374] Ответить | Цитировать Сообщить модератору |
Rankatan Member Откуда: Сообщений: 250 |
сделал репу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кб. Короче сервер стремится уровнять свободное место внутри всех файлов. Поэтому Дедушка прав. |
18 июн 18, 16:15 [21500395] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |