Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Количество файлов данных для пользовательской БД. / 17 сообщений из 17, страница 1 из 1
09.04.2020, 16:10
    #39945436
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Всем привет! Напомните пожалуйста какое количество файлов для пользовательской БД лучше сделать?
Все файлы будут лежать на одном диске.
...
Рейтинг: 0 / 0
09.04.2020, 16:33
    #39945449
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Mandarin,

один обычно.
...
Рейтинг: 0 / 0
09.04.2020, 16:38
    #39945454
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Владислав Колосов,

Количество файлов по количеству процессоров, это только для tempDB рекомендация?
Для пользовательских БД не будет прироста скорости, если сделать несколько файлов?
...
Рейтинг: 0 / 0
09.04.2020, 17:57
    #39945524
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Mandarin
Количество файлов по количеству процессоров, это только для tempDB рекомендация?
Для пользовательских БД не будет прироста скорости, если сделать несколько файлов?
Да.
...
Рейтинг: 0 / 0
09.04.2020, 18:56
    #39945550
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Спасибо.
...
Рейтинг: 0 / 0
20.04.2020, 00:02
    #39948828
Col
Col
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
alexeyvg
Mandarin
Количество файлов по количеству процессоров, это только для tempDB рекомендация?
Для пользовательских БД не будет прироста скорости, если сделать несколько файлов?
Да.

Это не так.
Рекомендации несколько отличаются от всем известных по ТемпДБ но утверждать что не будет прироста это уж слишком.
Рекомендации можно найто вот тут:
https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver15
Если коротко, то для простенькой базы особого смысла добавлять дополнительные файлы не имеет.
Однако для высоконагруженных баз есть смысл вынести данные за пределы основной файловой группы, оставив таким образом там только системные объекты и системные же таблицы, данные же рекомендовано вынести в отдельные файловые группы разделив по уровню загруженности, количеству данных и особенностей гоняемых на базе скриптов. (грубо говоря 2 таблицу из одного джоина разумнее хранить в разных файлофых группах)
В отдельных случаях есть смысл сохранять индексы в отдельных файловых группах, это может сильно сократить физическую фрагментация основаной файловой группы данных, сократив тем самым время проведения обслуживания, кроме того таким образом можно распределить нагрузку на дисковую по разным шпинделям, как пример уникальный индекс который ничего кроме уникальности не делает никогда лучша всего вынести за "периметр".
Ну и "изюминка" на торт это партишенинг, уж чего а дополнительных файлов эта технология предпологоает на одну базу ой как много.
...
Рейтинг: 0 / 0
20.04.2020, 01:11
    #39948829
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Col
В отдельных случаях есть смысл сохранять индексы в отдельных файловых группах, это может сильно сократить физическую фрагментация основаной файловой группы данных, сократив тем самым время проведения обслуживания, кроме того таким образом можно распределить нагрузку на дисковую по разным шпинделям, как пример уникальный индекс который ничего кроме уникальности не делает никогда лучша всего вынести за "периметр".
Ну и "изюминка" на торт это партишенинг, уж чего а дополнительных файлов эта технология предпологоает на одну базу ой как много.
Фрагментация, и, в более общем смысле, использование знаний о логике работы базы для проектирования системы хранения - это понятно, я и сам делал отдельные файлы для секций в партицированной таблице, про нескольким причинам.

Но вопрос ТС в простом делении по типу "как для tempdb", то есть сделать в праймари-файлгруппе несколько файлов. При одинаковом количестве дисков (например, один RAID)
Для tempdb это делают по причине, таящейся в логике взаимодействия ядра с tempdb и с файлами.
А у обычных баз логика другая, там это не поможет.

Для обычной базы сделать 8 файлов на одном диске, или один файл на том же диске - разницы не будет.

Col
Рекомендации можно найто вот тут:
https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver15
Если коротко, то для простенькой базы особого смысла добавлять дополнительные файлы не имеет.
Однако для высоконагруженных баз есть смысл вынести данные за пределы основной файловой группы, оставив таким образом там только системные объекты и системные же таблицы, данные же рекомендовано вынести в отдельные файловые группы разделив по уровню загруженности, количеству данных и особенностей гоняемых на базе скриптов. (грубо говоря 2 таблицу из одного джоина разумнее хранить в разных файлофых группах)
Про разделение на системные и пользовательские объекты что то есть (правда, невнятно, хотелось бы подробнее), а вот про разделение, как для tempdb, там нет.
Там есть некоторые рекомендации про разделению на диски (тоже устаревшие и неправильные), но мы то, повторю, говорим про один диск.
...
Рейтинг: 0 / 0
20.04.2020, 04:47
    #39948833
Col
Col
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
alexeyvg

Там есть некоторые рекомендации про разделению на диски (тоже устаревшие и неправильные), но мы то, повторю, говорим про один диск.

Оба утверждения в этом предложении ложны.
С виртуализацией ничего не изменилось в принципах разделения файлов и их типов по отношения к SQL серверу.
Более того, добавились рекомендации от вендоров виртуализации, лень искать, думаю легко найдете рекомендации того-же вмваре по необходимости разделять данные и их типы на разные SCSI цонтроллеры, диски в таком случает тоже будут разными как понятно.

Теперь о единственном диске.
Лень делать тесты самому используйте чужие неработки.
Вот пример нужного теста от Рандела:
https://www.sqlskills.com/blogs/paul/benchmarking-do-multiple-data-files-make-a-difference/
Где четко видно что 2 файла приводят к деградации, а вот 4-8 улучшают перфоменс, соответственно 16 файлов в одной файловой группе уже хуже 8.

П.С.
Объективно можно опираться только на результат собственных тестов, в моем случае результат совпал с тестом Рандела.
...
Рейтинг: 0 / 0
20.04.2020, 09:59
    #39948861
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Col
alexeyvgТам есть некоторые рекомендации про разделению на диски (тоже устаревшие и неправильные), но мы то, повторю, говорим про один диск.

Оба утверждения в этом предложении ложны.
С виртуализацией ничего не изменилось в принципах разделения файлов и их типов по отношения к SQL серверу.
Более того, добавились рекомендации от вендоров виртуализации, лень искать, думаю легко найдете рекомендации того-же вмваре по необходимости разделять данные и их типы на разные SCSI цонтроллеры, диски в таком случает тоже будут разными как понятно.Оба инстинны :-)

При чём тут "разделение данных и их типы на разные...", я же писал, что такое разделение как раз имеет смысл, и я его использовал.

Но ТС спрашивает про, цитирую:
Mandarin
Количество файлов по количеству процессоров, это только для tempDB рекомендация?
Для пользовательских БД не будет прироста скорости, если сделать несколько файлов?

То есть ТС сравнивает 2 варианта:
1) в праймари файлгруппе делаем один файл, кладём на диск (рейд)
2) в праймари файлгруппе делаем 8 файлов, кладём на диск (рейд)

Col
Теперь о единственном диске.
Лень делать тесты самому используйте чужие неработки.
Вот пример нужного теста от Рандела:
https://www.sqlskills.com/blogs/paul/benchmarking-do-multiple-data-files-make-a-difference/
Где четко видно что 2 файла приводят к деградации, а вот 4-8 улучшают перфоменс, соответственно 16 файлов в одной файловой группе уже хуже 8.
Ок, спасибо, не знал про такое исследование.

Нужно только обратить внимание, что график не от нуля, т.е. разница на уровне дрожания кривых (в секундах 1830 для 8 файлов vs 1870 для одного файла в конфигурации с одним рейдом (для 2х рейдов разница больше, 1760 vs 2000, правда, там в случае с одним файлом используется половина лисков, как я понял?).

Я постоянно слышал, что такое разделение ничего не даёт, ну, попробую тоже потестировать...

PS Согласитесь, вещь всё таки нетривиальная, неоднозначная, как пишет автор:
The answer, as with all things SQL (except concerning auto-shrink) is a big, fat "it depends."
In the best case, the eight-file case on two arrays was just over 6% faster than the single-file case on the single array.
I've heard plenty of anecdotal evidence that adding a few more data files for user databases can lead to performance improvements, but your mileage is definitely going to vary.
...
Рейтинг: 0 / 0
20.04.2020, 11:16
    #39948886
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
imho, "Смешались в кучу кони, люди,"

рекоменцация делить tempdb на несколько файлов появилась не как серебряная пуля для повышения дисковой производительности , а как решение конкретной проблемы при сильно нагруженной tempdb, To improve the concurrency of tempdb, try the following methods:

если вы сталкиваетесь с такой же проблемой на пользовательской базе, то разделение её на несколько файлов решит эту проблему (не важно физическое расположение этих файлов, тут не про скорость доступа к диску, а про конкурентность)
...
Рейтинг: 0 / 0
20.04.2020, 12:23
    #39948904
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Рекомендация разделения, насколько мне известно, основаны на особенностях не SQL, а операционной системы и организации потоков данных при работе с tempdb. В общем случае, для темдб были проведены, насколько я помню, оптимизации типа таблица-поток именно связанные с её спецификой работы, т.е. интенсивному созданию, удалению таблиц и, возможно, сбора мусора. В пользовательских базах такого рода деятельность не происходит и такая оптимизация там была бы избыточной.
...
Рейтинг: 0 / 0
20.04.2020, 12:39
    #39948906
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Зависит от многих факторов. Например от СХД. На некоторых выгоднее делать несколько массивов, а не один большой. Отсюда, чтобы иметь возможность при необходимости утилизировать всю СХД сразу, лучше иметь файловую группу заранее попиленную по файлам, чтобы данные между ними были распределены равномерно.
...
Рейтинг: 0 / 0
20.04.2020, 13:28
    #39948918
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Гавриленко Сергей Алексеевич
Зависит от многих факторов. Например от СХД. На некоторых выгоднее делать несколько массивов, а не один большой. Отсюда, чтобы иметь возможность при необходимости утилизировать всю СХД сразу, лучше иметь файловую группу заранее попиленную по файлам, чтобы данные между ними были распределены равномерно.
Несколько массивов то понятно. Думаю, если вместо одного файла на RAID10*16 дисков сделать 8 файлов на 8 зеркалах, то ускорение может быть заметным.
...
Рейтинг: 0 / 0
20.04.2020, 13:44
    #39948926
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
alexeyvg,

Гораздо индереснее, если сравнивать raid 10 из условно 8 дисков и две десятки из 4х дисков. И, если будет разница, самое главное - почему? Разве что СХД позволяет повесить отдельные массивы на свои отдельные процессоры?
...
Рейтинг: 0 / 0
20.04.2020, 15:58
    #39948994
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Разбиение ещё может преследовать цели оптимизации наполнения данными. Чтение и без того кешируется и по типовой базе чтение/запись от 4 к 1 до 10 к 1. Там нет смысла усложнять обслуживание из-за небольшой выгоды.
...
Рейтинг: 0 / 0
21.04.2020, 08:43
    #39949196
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Критик
alexeyvg,

Гораздо индереснее, если сравнивать raid 10 из условно 8 дисков и две десятки из 4х дисков. И, если будет разница, самое главное - почему? Разве что СХД позволяет повесить отдельные массивы на свои отдельные процессоры?
В статье (точнее, в обсуждении статьи) по ссылке выше Рандел делает предположение, что дело в конкуренции при обращении к метаданным:
авторSo presumably the main advantage of having multiple files in a filegroup is to get a potential increase in throughput due to there being less latching contention on allocation bitmaps (PFS, GAM & SGAM) ?
...
Рейтинг: 0 / 0
21.04.2020, 23:10
    #39949755
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество файлов данных для пользовательской БД.
Я делал разнесение по разным файловым группам, размещенным на разных файлах, находящиеся в пределах одного тома в таких случаях:
1. Для данных из прошлых периодов создавал отдельную файловую группу, делал ее ридонли, и в дальнейшем - не бэкапил. Говорят, так можно делать даже для различных секций внутри одной таблицы, но это не мой случай, у меня были просто разные таблицы за разные годы.
На самом деле - геморроя много, и дает выигрыш только на действительно больших данных.
Но у меня старых данных было терабайт, а новых - меньше 100 Гб.
2. Кстати, отдельную файловую группу иметь очень удобно, чтобы создавать таблицы ридонли без триггеров. Хотя откатывающий изменения триггер, конечно проще написать, но я предпочитаю размещать неизменяемые таблицы в отдельной фг.
3. Для секционированных таблиц. Каждая секция в своем файле.
Если подумать, то больше резонов плодить более 1 файла данных на одном дисковом томе, скорее всего нет.
Ну, разве что - под будущий переезд. Т.е. пока все файлы на одном диске, а потом перетащить на другие?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Количество файлов данных для пользовательской БД. / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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