Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru) 192
Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 192 (31 мая 2008 г.)
Новым посетителям сайта
Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения
состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.
Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 57-ти задач первого этапа. При подсчете рейтинга каждого участника
отбрасывается один самый худший показатель среди всех решенных им упражнений.
Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов, которые пригодятся на третьем рейтинговом этапе, который начинается после 138 задачи.
Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.
Новости сайта
§ Появился сервис для голосования по упражнениям, идея которого принадлежит $erges. Вы можете оценить любую решенную задачу второго/третьего этапа по 10-бальной шкале. Возможно, эта оценка будет в дальнейшем использована для других рейтингов, а также выбора кандидатов на замену.
§ Обещанное обновление задач ненадолго откладывается. Усилиями vlksm готовится обновление справочной информации, которая сможет помочь при решении некоторых новых задач. Ну, и предполагаемое количество новых задач возрастет, т.к. авторы демонстрируют завидную активность перед отпусками :-).
§ Время простоя, связанное с недоступностью учебной базы данных, компенсирую, когда работа сайта полностью восстановится.
§ Изменения среди лидеров (решенные за неделю задачи третьего этапа): 2. vlksm (147) 13. CepbIu (139, 140, 141, 142)
§ Новые лица в ТОР 100 и вернувшиеся туда: 84. shock (задач 128, время 16.344)
§ Продвинулись в рейтинге: 47. wasp (136, 125.051) 50. nebiros (135, 94.070) 79. DeadLock5 (129, 108.611)
Ищете возможность оптимизировать производительность вашей базы данных на SQL Server? Если ваша база данных содержит очень большие таблицы, Вы можете извлечь выгоду из разделения (partition) этих таблиц на отдельные фрагменты и разнесения их по разным файловым группам. Эта технология, введенная в SQL Server 2005, позволяет Вам разносить данные по различным физическим дискам, используя параллельную обработку на этих дисках с целью оптимизации производительности запросов.
Фрагментация таблицы базы данных SQL Server является трехшаговым процессом:
1. Создать функцию фрагментации
2. Создать схему фрагментации
3. Разделить таблицу
Ниже мы рассмотрим каждый из этих шагов подробно.
Шаг 1: Создание функции фрагментации
Функция фрагментации определяет то, как SQL Server будет разделять данные. На этом шаге нас не интересуют конкретные таблицы, мы лишь определяем общий метод расщепления данных.
Мы определяем фрагменты, задавая границы каждого фрагмента. Например, предположим, что у нас есть таблица клиентов (Customers), которая содержит информацию обо всех наших клиентах, идентифицированных уникальным номером клиента в диапазоне от 1 до 1 000 000. Мы можем принять решение о разбиении этой таблицы на четыре равных фрагмента, используя следующую функцию фрагментации (я назову ее customer_partfunc):
CREATE PARTITION FUNCTION customer_partfunc (int)
AS RANGE RIGHT
FOR VALUES (250000, 500000, 750000)
Эти границы определяют четыре фрагмента. Первый фрагмент содержит все значения, меньшие 250 000. Второй - содержит значения между 250 000 и 499 999. Третий - содержит значения между 500 000 и 749 999. Все значения, большие чем или равные 750 000 входят в четвертый фрагмент.
Обратите внимание, что я использовал в этом примере предложение "RANGE RIGHT". Это означает, что сама граничная точка должна войти во фрагмент справа. Если бы я использовал "RANGE LEFT", то первый фрагмент включал бы все значения, меньшие или равные 250 000; второй фрагмент включил бы значения между 250 001 и 500 000, и так далее.
Шаг 2: Создание схемы фрагментации
Имея функцию разделения, описывающую, как Вы хотите фрагментировать ваши данные, теперь Вы должны создать схему фрагментации, определяющую, где Вы хотите сделать это разделение. Это непосредственный процесс, который связывает фрагменты с файловыми группами. Например, если бы я имел четыре файловые группы с именами "fg1" - "fg4", то следующая схема разделения была бы уместна:
CREATE PARTITION SCHEME customer_partscheme
AS PARTITION customer_partfunc
TO (fg1, fg2, fg3, fg4)
Обратите внимание, что мы теперь связываем функцию фрагментации со схемой фрагментации, но мы пока еще не связывали схему фрагментации с какой-либо определенной таблицей базы данных. Здесь начинает играть роль повторное использование кода. Мы могли бы использовать эту схему фрагментации (или только функция фрагментации, если бы того пожелали) для любых таблиц базы данных.
Шаг 3: Разделение таблицы
После определения схемы фрагментации, мы готовы создать разделенную таблицу. Это самый простой шаг процесса. Вы просто добавляете предложение "ON" в операторе создания таблицы, определяя схему фрагментации и столбец таблицы, к которому это применяется. Вам не требуется определять функцию фрагментации, потому что схема фрагментации уже задает ее.
Например, если бы мы хотели создать таблицу клиентов, используя нашу схему фрагментации, то использовали бы следующий оператор Transact-SQL:
Это все, что Вы должны знать о разделении таблиц в Microsoft SQL Server! Не забудьте использовать мощь повторного использования кода при написании общих функций и схем фрагментации, которые могли бы применяться к множеству таблиц!
Полезная информация
§ Онлайновый выпуск рассылки можно почитать на сайте.
§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.
По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77[@]yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.