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

Откуда:
Сообщений: 12
Добрый день.
Проконсультируйте меня по следующему вопросу:

Имеется БД с одной файловой группой.
В этой файловой группе 4 файла одинакового размера и прироста (например размер 5МБ, а прирост 1МБ).
БД пустая и поэтому файлы ещё не заполнены.
Создаем таблицу и выполняем в неё операцию Insert.
Вопрос следующий: по какому принципу будут заполнятся файлы:
1. Поочередно, то есть 1 файл начнет заполнятся, когда заполнится на 100% начнет заполняться второй......третий.....четвертый. Затем первый прирастет на 1 МБ и начнет заполнятся, когда заполнится на 100% начнет заполняться второй......третий.....четвертый

2. Равномерно, то есть будет заполнятся экстентами в процентном соотношении. Другими словами файлы будут заполнены одинаково.

P.S. Вопрос возник, так как до этого я считал верным 2 вариант, но на практике вижу ситуацию из варианта 1.

Для уточнения: я заполнял таблицу следующим запросом:
INSERT INTO [test].[dbo].[T]
([id]
,[name])
VALUES
(1
,'testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest')
GO 10000
26 сен 11, 13:15    [11336274]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
BOL - Using Files and Filegroups - File and Filegroup Fill Strategy

И место выделяется не под одну запись. А экстентами
26 сен 11, 15:13    [11336357]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Кирилл Иванов
Member

Откуда:
Сообщений: 12
Вопрос отпал.
Ответ следующий:
1 вариант можно наблюдать в Microsoft SQL Server Express
2 вариант можно наблюдать в Microsoft SQL Server Enterprise Edition (и другие версии)
26 сен 11, 15:27    [11336461]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кирилл Иванов
1 вариант можно наблюдать в Microsoft SQL Server Express
2 вариант можно наблюдать в Microsoft SQL Server Enterprise Edition (и другие версии)

И чем же вы наблдаете
- сколько новых экстентов запрашивает ваша команда insert ?
- как запрошенные экстенты распределяются между файлами ?
26 сен 11, 15:30    [11336491]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Кирилл Иванов
Member

Откуда:
Сообщений: 12
Glory,
В SQL Express в Primary группе при выполнении n-ного количества команд Insert через выборку из динамического представления:
SELECT * FROM sys.dm_io_virtual_file_stats(DB_ID(),NULL)
видно какой из файлов заполняется, а какой нет. в данном случае заполнялся только 1 файл до 100%, затем остальные.

В SQL Server Enterprise Edition мы видим другую ситуацию через выборку из динамического представления:
SELECT * FROM sys.dm_io_virtual_file_stats(DB_ID(),NULL)
Все файлы заполняются равномерно.
26 сен 11, 15:43    [11336568]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кирилл Иванов
В SQL Express в Primary группе при выполнении n-ного количества команд Insert через выборку из динамического представления:

Еще раз.
- Место под таблицу выделяется экстентами, т.е. по 64Кб
- Один экстент может быть помещен только в один файл
26 сен 11, 15:52    [11336626]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Кирилл Иванов
Member

Откуда:
Сообщений: 12
Glory,
Все верно, при заполнении файла на 64КБ, при следующем заполнении он снова заполняется на 64К, а не следующий файл.
26 сен 11, 16:06    [11336754]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кирилл Иванов
Все верно, при заполнении файла на 64КБ, при следующем заполнении он снова заполняется на 64К, а не следующий файл.

Вы прочитали указанную ссылку из хелпа ?
Если вы запрашиваете по одному экстенту, по почему он должен размещаться в разных файлах ?
26 сен 11, 17:08    [11337229]     Ответить | Цитировать Сообщить модератору
 Re: Рост 4 файлов в файловой группе.  [new]
Кирилл Иванов
Member

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

Ниже представленная вырезка из BOL - Using Files and Filegroups - File and Filegroup Fill Strategy не подходит для файловой группы PRIMARY в версии SQL EXPRESS.
Для доказательства, попробуйте создать на сервере SLQ Express БД с 4 файлами в группе PRIMARY и выполнить операции INSERT, параллельно следить за заполнениями файлов.
А затем проделать туже операцию только уже в SQL Server Enterprise Edition.
Результаты заполнения экстентами будут разными.

File and Filegroup Fill Strategy
Filegroups use a proportional fill strategy across all the files within each filegroup. As data is written to the filegroup, the SQL Server Database Engine writes an amount proportional to the free space in the file to each file within the filegroup, instead of writing all the data to the first file until full. It then writes to the next file. For example, if file f1 has 100 MB free and file f2 has 200 MB free, one extent is allocated from file f1, two extents from file f2, and so on. In this way, both files become full at about the same time, and simple striping is achieved.

As soon as all the files in a filegroup are full, the Database Engine automatically expands one file at a time in a round-robin manner to allow for more data, provided that the database is set to grow automatically. For example, a filegroup is made up of three files, all set to automatically grow. When space in all the files in the filegroup is exhausted, only the first file is expanded. When the first file is full and no more data can be written to the filegroup, the second file is expanded. When the second file is full and no more data can be written to the filegroup, the third file is expanded. If the third file becomes full and no more data can be written to the filegroup, the first file is expanded again, and so on.
26 сен 11, 17:44    [11337444]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить