Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование разных физических дисков / 6 сообщений из 6, страница 1 из 1
24.03.2001, 23:45
    #32003478
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование разных физических дисков
Уважаемые дамы и господа!
Возникла тут пара вопросов. Если в файловой группе имеются несколько файлов на разных физических дисках и создаем таблицу в этой файловой группе, то она (если достаточно большая) более-менее равномерно распределится по этим дискам.
1)Если теперь делаем выборку из нее, то будет ли чтение с дисков проводится параллельно?
2)Как будут располагаться данные в случае наличия кластерного индекса в этой таблице? Внутри страниц – понятно в соответствии с этим индексом. А вот как соотносятся страницы. Будут ли соседние страницы в одном файле или нет?
3)Если разные таблицы находятся на разных физических дисках, то при их объединении будет ли возможность проведения параллельного чтения?
4)Для проведения объединения существует несколько способов. В зависимости от распределения данных, наличия индексов на столбцы объединения и ограничения эффективности предиката ограничения и т.п. более дешевым будет тот или иной способ, который и выбирается. Будет ли учитываться при расчете стоимости объединения возможность параллельного чтения c дисков?
5)Кстати, если смотреть план запроса, то видно только операция объединения, которая дальше не разбивается. Соответственно вопрос – SQL Server вообще проводит анализ для выбора того или иного метода объединения?

Или же размещение на разных дисках скажется только при параллельном выполнении разных запросов, обращающихся к разным таблицам, хранящимся на разных дисках?
Также понятно, что в первую очередь следует на разных дисках размещать журналы транзакций, и, желательно системные базы.
К сожалению, сейчас проверить сам всего этого не могу, за отсутствием нескольких физических дисков, но очень интересно.
...
Рейтинг: 0 / 0
26.03.2001, 18:33
    #32003520
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование разных физических дисков
Для полного понимания механизма работы сервера баз данных, ОС и ПО RAID или SCSI контроллера, объёма топика конфиренции не хватит. Но, множество Ваших вопросов отпадёт само по себе, когда Вы вспомните, что данные сервером кэшируются. Режим чтения разных дисков асинхронный и вполне допускает параллельное чтение - запись с разных устройств. Это обеспечивает многозадачность и многопоточность, как операционки, так и сервера БД. Нужно только помнить, что эти диски могут висеть на единственной шине SCSI и далее PCI, что повышает на неё нагрузку. Много дисков могут шину полностью утилизировать. Да и тип/возможности контроллеров тоже влияют на общую производительность.
С точки зрения выигрыша в производительности, самый существенный эффект даёт распараллеливание дисковых операций чтения/записи. Поскольку это самые медленные операции. Следовательно, чем больше у Вас дисков (желательно на разных каналах и шинах), и чем больше у Вас по этим дискам разбросано файлов БД, тем лучше.
Многие аспекты комплексного тюнинга сервера баз данных рассматривались в рассылке. Можете полистать её выпуски, ссылка справа, вверху...
...
Рейтинг: 0 / 0
26.03.2001, 20:09
    #32003528
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование разных физических дисков
Спасибо. Рассылку обязательно посмотрю. Но все же меня сейчас больше интересует скорее теория. Достаточно ли SQL Server "умен", чтобы учитывать возможность параллельного чтения при построении ПЛАНА или же все дается на откуп ОС и выигрыш получается только за счет простого ускорения при чтении?
Иногда данные нужно считывать в соответствии с их физической упорядоченностью в таблице (для формирования на выходе также упорядоченного набора). Насчет кэширования - значит ли это, что данные будут считываться даже если конкретно сейчас они не нужны (до их обработки еще не дошла очередь, сначала надо отработать те что в соответствии с порядком находятся раньше) в кэш для последующего использования?
Да и на 2) и 5) вопрос пока ответа нет...
...
Рейтинг: 0 / 0
28.03.2001, 13:20
    #32003632
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование разных физических дисков
2) Не обязательно. Файлы заполняются пропорционально свободному месту в них. Если File1 в 2 раза больше File2, то из каждых 3-x страниц 2 лягут на File1, 1 на File2, независимо от того на одном они диске или на разных.
5) Да, SQL Server проводит анализ для выбора той или иной стратегии связывания (я полагаю, что под объединением таблиц имелся в виду не union, а join). При этом, как известно, целевой функцией выступает минимизация стоимости запроса. Для расчета стоимости процессор запросов учитывает две основные сущности - память и CPU (кол-во, процент загрузки и т.д.) Вы сами можете в этом легко убедиться - достаточно посмотреть, как будет меняться план запроса в зависимости от того, чем в данный момент занимается Ваш сервер. Следствие: оптимизатор не рассматривает выигрыш во времени за счет расположения связываемых таблиц на параллельных дисках в качестве стоимостного фактора (хотя параллельное чтение в процессе выполнения запроса, разумеется, будет использоваться, но это уже фича ОС, а не СУБД).

Мое мнение. Проще (в плане балансировки дискового I/O, не принимая сейчас во внимание вопросы администр-я, backup/restore, ...) держать БД на одном файле, положенном на striped set. Filegroups - это инструмент, к-й создавался для несколько других задач, по полной он будет задействован в след.версии SQL Server.
...
Рейтинг: 0 / 0
29.03.2001, 03:11
    #32003673
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование разных физических дисков
"достаточно посмотреть, как будет меняться план запроса в зависимости от того, чем в данный момент занимается Ваш сервер"
Опа... А как же быть когда делаем SP? Это что ж, выходит та или иная нагрузка на сервер в момент компиляции отразится на составлении плана, хотя и ежу понятно, что в момент выпонения этой SP нагрузка будет совсем другой (ну или во всяком случае существует большая вероятность этого).
-------------------------------
"Для расчета стоимости процессор запросов учитывает две основные сущности - память и CPU "
Чего то теперь я совсем запутался
Мне всегда казалось, что основная (если уж не единственная) задача - минимизация времени (сейчас речь не о разных дисках). Ваша фраза относится к разным физическим дискам, выбору стратегии выполнения Join-ов вообще или же вообще глобально к оптимизации?
5) вопрос относился к Join-у вообще (не применительно к разным дискам). (зато Вы ответили на 4)
)
...
Рейтинг: 0 / 0
29.03.2001, 12:19
    #32003695
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование разных физических дисков
Конечно. Скажу больше, для хранимой процедуры оптимальный план генерируется на основе параметров, переданных ей в момент вызова. Вы сами можете в этом легко убедиться, посмотрев, что план появляется в кэше не после создания, а в момент первого выполнения. Отсюда следует, что для других параметров или других данных в таблицах этот план легко может быть вообще неоптимальным. SQL Server следит за этим сам и по мере необходимости производит перекомпиляцию. Если Вам кажется, что уже стоило бы перекомпилировать, а SQL Server так не считает, то скажите EXEC ... WITH RECOMPILE. В особо клинических случаях проще создать процедуру с опцией WITH RECOMPILE. Тогда план будет строиться при каждом вызове и в кэш вообще не попадет.

Я имел в виду Стоимость = f(RAM, CPU). Кол-во дисков и способы положения на них файлов БД не оказывают существенного влияния на стоимость запроса.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование разных физических дисков / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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