Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru) 192


Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 192 (31 мая 2008 г.)

Новым посетителям сайта

SQL Exercises Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (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)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
101. lexaNRJ (125, 80.969)
127. Sergey79 (121, 218.111)
130. denzel (120, 104.057)
143. Toxa Moskit (133, 55.117)
157. Leshich (114, 99.020)
171. Dmitry Faleleev (110, 2.195)

§ На этой неделе сертифицированы:
CepbIu (B08032150) [AR]) - г.Москва, Россия
nadush (B08014511) [AR]) - г.Лион, Франция

§ Число подписчиков - 3759

Число участников рейтинга - 16763

Число участников второго этапа - 1368

Число участников третьего этапа - 32

Сертифицировано на сайте - 278

Лучшие результаты (ТОР 20)

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Сальников С.А. ($erges) 147 147 21 359 81 2.751 3.359 31 17 May 2008 30 May 2008
2 Карасёва Н.В. (vlksm) 147 147 21 359 750 72.877 46.383 31 25 May 2008 30 May 2008
3 Печатнов В.В. (pvv) 145 146 21 354 190 19.151 6.326 28 26 Apr 2008 30 May 2008
4 Креславский О.М. (Arcan) 146 81 21 356 466 22.488 12.553 28 10 May 2008 30 May 2008
5 Держальцев В.А. (MadVet) 146 146 21 356 1128 60.815 28.482 28 18 May 2008 20 May 2008
6 Любченко В.А. (IAS56) 146 81 21 356 615 403.439 373.617 28 11 May 2008 29 May 2008
7 Голубин Р.С. (Roman S. Golubin) 145 81 21 353 997 92.927 58.822 25 11 May 2008 30 May 2008
8 Мурашкин И.В. (lepton) 143 146 21 347 767 37.107 26.815 21 28 Apr 2008 12 May 2008
9 Белогурова К. (Katy_Ekb) 142 44 21 344 361 10.714 4.673 18 20 May 2008 27 May 2008
10 Войнов П.Е. (pаparome) 143 81 21 345 992 3.045 .213 17 12 May 2008 30 May 2008
11 Северюхин Ю.А. (Venser) 138 142 21 335 335 4.925 .655 14 01 Feb 2008 04 Feb 2008
12 Борисенков Д.В. (xuser) 141 142 21 340 92 3.217 .926 14 02 May 2008 30 May 2008
13 Мишин С.А. (CepbIu) 142 141 21 342 40 9.754 2.148 14 28 May 2008 30 May 2008
14 Тарасов Д.Б. (Gavrila) 141 81 21 339 998 23.531 2.501 14 20 May 2008 30 May 2008
15 Солдатенков Ю.С. (SolYUtor) 139 142 21 336 703 17.844 2.695 14 20 Apr 2008 30 May 2008
16 Кувалкин К.С. (Cyrilus) 139 142 21 336 1207 13.037 2.782 14 15 Mar 2008 29 May 2008
17 Шептунов П.П. (Dzen) 137 142 21 334 279 8.120 3.499 14 02 Oct 2007 15 Nov 2007
18 Селезнёв А.С. (Артём С.) 140 142 21 339 127 15.589 4.279 14 14 Mar 2008 31 Mar 2008
19 iglbeat (iglbeat) 142 81 21 342 281 27.442 6.641 14 21 May 2008 21 May 2008
20 Мальцев А.В. (Палкин) 137 142 21 334 422 48.779 7.690 14 13 Oct 2007 20 Jan 2008

Лучшие результаты за неделю

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Орёл А. (oryol) 38 38 72 0 72 2703 28 May 2008
2 >Яковлев В.И. (monk) 37 38 71 0 71 2745 30 May 2008
3 >Дроздков А.Н. (anddros) 35 35 66 0 66 3050 30 May 2008
4 >Клёпов А.Г. (XelaVopelk) 32 71 63 0 63 886 30 May 2008
5 Абалмасов В.А. (Valentinus) 25 25 44 19 63 3246 27 May 2008
6 >Binko S.Y. (stas_) 34 34 63 0 63 3248 30 May 2008
7 >Поташный А.О. (Artem-dragon) 16 43 31 31 62 1327 30 May 2008
8 Lyuty E. (Kenny McCormick) 28 55 54 6 60 1440 30 May 2008
9 >Melnikau M. (max_posedon) 32 32 60 0 60 3456 30 May 2008
10 Моисеева Ю. (jul222) 30 30 56 0 56 3781 27 May 2008
11 >Скобликов А. (Skobl) 24 36 55 0 55 2963 30 May 2008
12 >Фурсин А.Н. (Vendigo) 18 56 35 17 52 816 30 May 2008
13 >Lyulina Е.И. (elena3188) 23 35 52 0 52 3130 30 May 2008
14 Sklyar A. (AlexS_83) 28 28 52 0 52 4177 28 May 2008
15 >Жердель А. (Abrikosa) 28 28 50 0 50 4395 30 May 2008
16 >Серёгин А. (Сан Саныч) 27 27 49 1 50 4397 30 May 2008
17 Empty (Kvetka) 30 30 46 2 48 4614 28 May 2008
18 >krishna C.K. (chaitu) 20 31 47 0 47 3553 30 May 2008
19 >Мартынов Р.В. (comp) 20 64 38 8 46 710 30 May 2008
20 Ларионова И.И. (Pooops) 29 29 45 0 45 4992 28 May 2008
21 Kadziela J. (k47) 24 24 44 0 44 5044 27 May 2008
22 Черник Н.В. (chernik) 28 28 43 0 43 5128 29 May 2008
23 >Ключникова А.И. (Anna_08) 23 23 33 9 42 5252 30 May 2008
24 >Карахтанов Р.С. (KRS544) 18 39 41 0 41 2545 30 May 2008
25 >Кожушко А.А. (Stasca) 17 83 40 0 40 316 30 May 2008

Изучаем SQL

Разделение таблиц баз данных в SQL Server

Mike Chapple (оригинал: Partitioning a SQL Server Database Table )
Перевод Моисеенко С.И.

Ищете возможность оптимизировать производительность вашей базы данных на 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:

CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40),
CustomerNumber int)
ON customer_partscheme (CustomerNumber)

Это все, что Вы должны знать о разделении таблиц в Microsoft SQL Server! Не забудьте использовать мощь повторного использования кода при написании общих функций и схем фрагментации, которые могли бы применяться к множеству таблиц!

Полезная информация

§ Онлайновый выпуск рассылки можно почитать на сайте.

§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.

§ Желающих поспособствовать популяризации сайта прошу проголосовать/поставить закладку в социальных сетях:
del.icio.us
dzone.com
Digg.com
stumbleupon.com

Контакты

По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77[@]yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.

Подписка Subscribe.Ru
Новости сайта "Упражнения по SQL"

В избранное