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

Откуда:
Сообщений: 78
Есть база 200 Гбайт под управлением SQL Server 2005 Standard Edition на Windows Server 2003.
В сервере один логический диск в виде дискового массива RAID-5 из шести SAS дисков.

Я читал в документации, что разбиение базы на разные файлы и по разным физическим дискам даёт выигрыш в производительности за счёт распараллеливания доступа к дискам.
А как быть в моей ситуации, когда логический диск один?
Можно ли ускорить доступ к базе за счёт выноса крупных таблиц и индексов в отдельные файловые группы?
Или в моём случае SQL серверу всё равно: один большой файл или много маленьких?

Сейчас база разбита на 3 файла: для данных, для обычных индексов, для полнотекстовых индексов. Плюс журнал транзакций в одном файле.
Когда-то давно при разбиении на файлы я не преследовал цель увеличить производительность, просто так было удобнее наблюдать за ростом базы.
20 ноя 15, 11:58    [18446304]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Oleg F
А как быть в моей ситуации, когда логический диск один?

А процессоров/ядер сколько ?

Oleg F
Можно ли ускорить доступ к базе за счёт выноса крупных таблиц и индексов в отдельные файловые группы?

Что такое "доступ к базе" ?
20 ноя 15, 12:07    [18446401]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Oleg F
Member

Откуда:
Сообщений: 78
Glory, уточню параметры сервера.
Два процессора Intel Xeon Quad core 3.0 ГГц, т.е. 8 ядер.
SQL Server сервер показывает 8 процессоров.

16 Гб ОЗУ.
Windows Server и SQL Server 32-разрядные.
Используется AWE для выделения памяти.

Под "доступом к базе" я имел ввиду SQL-запросы.
В первую очередь нужно ускорить запросы SELECT.
20 ноя 15, 16:50    [18448762]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
Oleg F
Или в моём случае SQL серверу всё равно: один большой файл или много маленьких?
Всё равно.
Если не преследуются какие то специальные цели, типа, вынести интенсивно меняющиеся данные в отдельный файл, что бы не было фрагментации остальных данных, или делать отдельные файлы для секций таблиц.
20 ноя 15, 17:04    [18448861]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Oleg F
Member

Откуда:
Сообщений: 78
alexeyvg, насчёт дефргаментации - это хорошая мысль. Я вынесу интенсивно меняющиеся данные в отдельный файл.
Секций таблиц у меня нет, но есть две большие таблицы, которые соединяются с помощью JOIN в запросе SELECT. Если эти две таблицы будут в разных файлах, то они быстрее будут соединяться или нет?
Одна таблица весит 100 Гбайт, вторая 40 Гбайт.
Или другой пример, если я буду держать таблицу 100 Гбайт в одном файле, а индексы к ней (более 20 Гбайт) в другом файле, то у меня быстрее будут запросы SELECT к этой таблице? При условии, что SELECT ищет строки по индексам и затем возвращает найденные строки из таблицы.
20 ноя 15, 17:51    [18449142]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Oleg F
16 Гб ОЗУ.
Oleg F
Одна таблица весит 100 Гбайт, вторая 40 Гбайт.
Oleg F
индексы к ней (более 20 Гбайт)

Не туда смотрите. Вероятнее всего, банально не хватает ОП. В следствии чего высокий физический IO.
20 ноя 15, 18:23    [18449319]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Oleg F
Member

Откуда:
Сообщений: 78
invm, спасибо,
я и раньше догадывался, что размер оперативной памяти влияет на производительность сервера :)
Однако здесь я задал другой вопрос: влияет ли на производительность разбиение базы на множество файлов? При условии, что логический диск один. Разумеется, под одним логически диском спрятаны 6 физических в RAID-5 массиве, т.е. на аппаратном уровне некоторое распараллеливание операций ввода/вывода происходит. Вопрос в том, можно ли улучшить распараллеливание SQL сервера на программном уровне?
20 ноя 15, 18:37    [18449411]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
Oleg F
invm, спасибо,
я и раньше догадывался, что размер оперативной памяти влияет на производительность сервера :)
Однако здесь я задал другой вопрос: влияет ли на производительность разбиение базы на множество файлов? При условии, что логический диск один. Разумеется, под одним логически диском спрятаны 6 физических в RAID-5 массиве, т.е. на аппаратном уровне некоторое распараллеливание операций ввода/вывода происходит. Вопрос в том, можно ли улучшить распараллеливание SQL сервера на программном уровне?
Пересбор пятого рейда в десятый даст более заметный эффект.

Что касается вашего вопроса в целом, то при таком кол-ве ядер имеет смысл сделать 8 файлов на ФГ (по кол-ву ядер).
20 ноя 15, 18:58    [18449505]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Любопытный гость
Guest
Гавриленко Сергей Алексеевич
Что касается вашего вопроса в целом, то при таком кол-ве ядер имеет смысл сделать 8 файлов на ФГ (по кол-ву ядер).
Объясните пожалуйста какой профит от этого ведь физически диск один?
20 ноя 15, 19:44    [18449755]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Еще один любопытный гость
Guest
Гавриленко Сергей Алексеевич
Что касается вашего вопроса в целом, то при таком кол-ве ядер имеет смысл сделать 8 файлов на ФГ (по кол-ву ядер).

И мне тоже интересно...
20 ноя 15, 20:48    [18450055]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
Oleg F
есть две большие таблицы, которые соединяются с помощью JOIN в запросе SELECT. Если эти две таблицы будут в разных файлах, то они быстрее будут соединяться или нет?
Нет.
Гавриленко Сергей Алексеевич
Что касается вашего вопроса в целом, то при таком кол-ве ядер имеет смысл сделать 8 файлов на ФГ (по кол-ву ядер).
По моему, это имеет смысл только для tempdb, из за специфических способов работы с ней. И это связано не с распараллеливанием операций, а с какими то тонкостями блокировок областей метаданных в файле.
Может, я ошибаюсь, но вот вроде так.

Другое дело, если RAID5 (RAID10) пересобрать в несколько зеркал. Но даже в этом случае как правило нужно не класть одну таблицу на одно зеркало, вторую на другой и т.д., а сделать файлгруппу с файлами, разложенными по этим зеркалам. Или разделать таблицы по файлгруппам (для специальных целей, см выше), и тоже в каждой файлгруппе сделать по одному файлу для каждого зеркала.
Но, понятно, это всё извращения, для маленькой базы, слабого сервера это излишество.
20 ноя 15, 22:36    [18450614]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
alexeyvg
Гавриленко Сергей Алексеевич
Что касается вашего вопроса в целом, то при таком кол-ве ядер имеет смысл сделать 8 файлов на ФГ (по кол-ву ядер).
По моему, это имеет смысл только для tempdb, из за специфических способов работы с ней. И это связано не с распараллеливанием операций, а с какими то тонкостями блокировок областей метаданных в файле.
Нафик не нужно там 8 файлов. Да и в tempdb тоже далеко не всегда нужно по файлу на каждое ядро. Про это уже 200 раз писали. Мало того, негативный эффект тоже может быть от слишком большого количества файлов в tempdb.
21 ноя 15, 00:14    [18451143]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
Mind
alexeyvg
пропущено...
По моему, это имеет смысл только для tempdb, из за специфических способов работы с ней. И это связано не с распараллеливанием операций, а с какими то тонкостями блокировок областей метаданных в файле.
Нафик не нужно там 8 файлов. Да и в tempdb тоже далеко не всегда нужно по файлу на каждое ядро. Про это уже 200 раз писали. Мало того, негативный эффект тоже может быть от слишком большого количества файлов в tempdb.
Я придерживаюсь мнения, что файлов должно быть по кол-ву ядер в одной нума-ноде. Если ядер 8 и меньше, то по кол-ву ядер. Больше восьми смысл делать есть в не совсем стандартных случаях: я, в принципе, режу по 12 файлов, потому что такое количество делится на два, три или четыре массива -- можно масштабировать файловую группу без добавления новых файлов (и полного ее ребилда для выравнивания нагрузки). Даже есть одна группа из 30 файлов (издержки былого пиления всех дисков на зеркала).

Сообщение было отредактировано: 21 ноя 15, 00:37
21 ноя 15, 00:21    [18451182]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
если на одном диске, то тока если SSD и поддерживается паралельный доступ
21 ноя 15, 04:30    [18451619]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
Гавриленко Сергей Алексеевич
можно масштабировать файловую группу без добавления новых файлов (и полного ее ребилда для выравнивания нагрузки).
Да, вот это хороший аргумент за разбиение, что бы можно было легко добавлять устройства хранения.
21 ноя 15, 13:05    [18451905]     Ответить | Цитировать Сообщить модератору
 Re: Разбиение базы на файловые группы: будет ли выигрыш если диск только один?  [new]
Oleg F
Member

Откуда:
Сообщений: 78
Гавриленко Сергей Алексеевич
Mind
пропущено...
Нафик не нужно там 8 файлов. Да и в tempdb тоже далеко не всегда нужно по файлу на каждое ядро. Про это уже 200 раз писали. Мало того, негативный эффект тоже может быть от слишком большого количества файлов в tempdb.
Я придерживаюсь мнения, что файлов должно быть по кол-ву ядер в одной нума-ноде. Если ядер 8 и меньше, то по кол-ву ядер. Больше восьми смысл делать есть в не совсем стандартных случаях: я, в принципе, режу по 12 файлов, потому что такое количество делится на два, три или четыре массива -- можно масштабировать файловую группу без добавления новых файлов (и полного ее ребилда для выравнивания нагрузки). Даже есть одна группа из 30 файлов (издержки былого пиления всех дисков на зеркала).


Сергей Алексеевич, я всё-таки не понял, Вы придерживаетесь такого мнения только в отношении базы tempdb или любой базы?
И что такое "нума-нода"? Я в аппаратной части не силён. Сколько у меня ядер в одной "нума-ноде", четыре или восемь? Напомню, что у меня в сервере два процессора, в каждом 4 ядра. Где-то прочитал это:
За каждым четырёхядерным процессором закреплен определенный объем физической памяти, с которым он общается через интегрированный контроллер памяти и шину данных. Такая связка процессор + память называется узел или нода (node).
Похоже, что меня 4 ядра в одной нума-ноде, т.е. файловую группу нужно разбивать на 4 файла одинакового размера. Остается вопрос, относится это к файловой группе базы tempdb или к любой базе?
Допустим, я создам новую файловую группу из 4-х файлов и перенесу туда несколько индексов из пользовательской базы. Вправе ли я надеяться, что SQL Server быстрее будет читать эти индексы?
21 ноя 15, 22:27    [18453427]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить