|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Всем привет! Напомните пожалуйста какое количество файлов для пользовательской БД лучше сделать? Все файлы будут лежать на одном диске. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 16:10 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Mandarin, один обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 16:33 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Владислав Колосов, Количество файлов по количеству процессоров, это только для tempDB рекомендация? Для пользовательских БД не будет прироста скорости, если сделать несколько файлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 16:38 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Mandarin Количество файлов по количеству процессоров, это только для tempDB рекомендация? Для пользовательских БД не будет прироста скорости, если сделать несколько файлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 17:57 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2020, 18:56 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
alexeyvg Mandarin Количество файлов по количеству процессоров, это только для tempDB рекомендация? Для пользовательских БД не будет прироста скорости, если сделать несколько файлов? Это не так. Рекомендации несколько отличаются от всем известных по ТемпДБ но утверждать что не будет прироста это уж слишком. Рекомендации можно найто вот тут: https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver15 Если коротко, то для простенькой базы особого смысла добавлять дополнительные файлы не имеет. Однако для высоконагруженных баз есть смысл вынести данные за пределы основной файловой группы, оставив таким образом там только системные объекты и системные же таблицы, данные же рекомендовано вынести в отдельные файловые группы разделив по уровню загруженности, количеству данных и особенностей гоняемых на базе скриптов. (грубо говоря 2 таблицу из одного джоина разумнее хранить в разных файлофых группах) В отдельных случаях есть смысл сохранять индексы в отдельных файловых группах, это может сильно сократить физическую фрагментация основаной файловой группы данных, сократив тем самым время проведения обслуживания, кроме того таким образом можно распределить нагрузку на дисковую по разным шпинделям, как пример уникальный индекс который ничего кроме уникальности не делает никогда лучша всего вынести за "периметр". Ну и "изюминка" на торт это партишенинг, уж чего а дополнительных файлов эта технология предпологоает на одну базу ой как много. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 00:02 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
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 таблицу из одного джоина разумнее хранить в разных файлофых группах) Там есть некоторые рекомендации про разделению на диски (тоже устаревшие и неправильные), но мы то, повторю, говорим про один диск. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 01:11 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
alexeyvg Там есть некоторые рекомендации про разделению на диски (тоже устаревшие и неправильные), но мы то, повторю, говорим про один диск. Оба утверждения в этом предложении ложны. С виртуализацией ничего не изменилось в принципах разделения файлов и их типов по отношения к SQL серверу. Более того, добавились рекомендации от вендоров виртуализации, лень искать, думаю легко найдете рекомендации того-же вмваре по необходимости разделять данные и их типы на разные SCSI цонтроллеры, диски в таком случает тоже будут разными как понятно. Теперь о единственном диске. Лень делать тесты самому используйте чужие неработки. Вот пример нужного теста от Рандела: https://www.sqlskills.com/blogs/paul/benchmarking-do-multiple-data-files-make-a-difference/ Где четко видно что 2 файла приводят к деградации, а вот 4-8 улучшают перфоменс, соответственно 16 файлов в одной файловой группе уже хуже 8. П.С. Объективно можно опираться только на результат собственных тестов, в моем случае результат совпал с тестом Рандела. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 04:47 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 09:59 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
imho, "Смешались в кучу кони, люди," рекоменцация делить tempdb на несколько файлов появилась не как серебряная пуля для повышения дисковой производительности , а как решение конкретной проблемы при сильно нагруженной tempdb, To improve the concurrency of tempdb, try the following methods: если вы сталкиваетесь с такой же проблемой на пользовательской базе, то разделение её на несколько файлов решит эту проблему (не важно физическое расположение этих файлов, тут не про скорость доступа к диску, а про конкурентность) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 11:16 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Рекомендация разделения, насколько мне известно, основаны на особенностях не SQL, а операционной системы и организации потоков данных при работе с tempdb. В общем случае, для темдб были проведены, насколько я помню, оптимизации типа таблица-поток именно связанные с её спецификой работы, т.е. интенсивному созданию, удалению таблиц и, возможно, сбора мусора. В пользовательских базах такого рода деятельность не происходит и такая оптимизация там была бы избыточной. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 12:23 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Зависит от многих факторов. Например от СХД. На некоторых выгоднее делать несколько массивов, а не один большой. Отсюда, чтобы иметь возможность при необходимости утилизировать всю СХД сразу, лучше иметь файловую группу заранее попиленную по файлам, чтобы данные между ними были распределены равномерно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 12:39 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Зависит от многих факторов. Например от СХД. На некоторых выгоднее делать несколько массивов, а не один большой. Отсюда, чтобы иметь возможность при необходимости утилизировать всю СХД сразу, лучше иметь файловую группу заранее попиленную по файлам, чтобы данные между ними были распределены равномерно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 13:28 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
alexeyvg, Гораздо индереснее, если сравнивать raid 10 из условно 8 дисков и две десятки из 4х дисков. И, если будет разница, самое главное - почему? Разве что СХД позволяет повесить отдельные массивы на свои отдельные процессоры? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 13:44 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Разбиение ещё может преследовать цели оптимизации наполнения данными. Чтение и без того кешируется и по типовой базе чтение/запись от 4 к 1 до 10 к 1. Там нет смысла усложнять обслуживание из-за небольшой выгоды. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2020, 15:58 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Критик 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) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2020, 08:43 |
|
Количество файлов данных для пользовательской БД.
|
|||
---|---|---|---|
#18+
Я делал разнесение по разным файловым группам, размещенным на разных файлах, находящиеся в пределах одного тома в таких случаях: 1. Для данных из прошлых периодов создавал отдельную файловую группу, делал ее ридонли, и в дальнейшем - не бэкапил. Говорят, так можно делать даже для различных секций внутри одной таблицы, но это не мой случай, у меня были просто разные таблицы за разные годы. На самом деле - геморроя много, и дает выигрыш только на действительно больших данных. Но у меня старых данных было терабайт, а новых - меньше 100 Гб. 2. Кстати, отдельную файловую группу иметь очень удобно, чтобы создавать таблицы ридонли без триггеров. Хотя откатывающий изменения триггер, конечно проще написать, но я предпочитаю размещать неизменяемые таблицы в отдельной фг. 3. Для секционированных таблиц. Каждая секция в своем файле. Если подумать, то больше резонов плодить более 1 файла данных на одном дисковом томе, скорее всего нет. Ну, разве что - под будущий переезд. Т.е. пока все файлы на одном диске, а потом перетащить на другие? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2020, 23:10 |
|
|
start [/forum/topic.php?fid=46&msg=39948861&tid=1686204]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 161ms |
0 / 0 |