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

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


Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 125 (03 февраля 2007 г.)

SQL Exercises

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

Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.

Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 57-ти задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений.

Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов, которые пригодятся на третьем рейтинговом этапе.

Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.


Новости сайта

§ Усилил проверку задачи 60, благодаря сообщению 15th.

§ SolYUtor, преодолевший последний порог, отделявший его от третьего этапа - 138 задачу, дорешал добавленные задачи и отметился уже на третьем этапе (задача 139). В результате - 13 место.

§ Продвинулись в рейтинге:
Heromantor (задач 134, время 9.038)
IAS56 (136, 72.852)
Fencer (135, 196.348)
Damirishe (129, 7.172)
xlum (127, 8.509)
Aladdin (125, 14.527)
avk (120, 40.347)
cmalex (120, 53.171)
Fomichev (119, 10.173)
wasp (117, 44.847)

§ На этой неделе сертифицированы:
IAS56 (B07012849) [BK] (г.Артем, Россия)
gfhfaby (A07013910) [AR] (п.Пермь, Россия)
valkov (A07013897) [AR] (г.Ростов-на-Дону, Россия)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Агапов В. (KERBEROS) 141 141 20 333 89 6.183 1.262 11 20 Nov 2006 02 Feb 2007
2 Кувалкин К.С. (Cyrilus) 141 141 20 333 746 12.417 2.519 11 10 Dec 2006 02 Feb 2007
3 Карасёва Н.В. (vlksm) 141 141 20 333 196 27.850 2.710 11 18 Nov 2006 02 Feb 2007
4 Мурашкин И.В. (lepton) 141 141 20 333 240 14.865 4.724 11 18 Nov 2006 31 Jan 2007
5 Зверев Д.Л. (dimzv) 141 141 20 333 1141 9.324 4.938 11 19 Dec 2006 22 Dec 2006
6 Голубин Р.С. (Roman S. Golubin) 141 141 20 333 457 54.984 33.803 11 18 Nov 2006 31 Jan 2007
7 Войнов П.Е. (pаparome) 140 140 20 329 489 2.738 .049 7 26 Dec 2006 01 Feb 2007
8 Тарасов Д.Б. (Gavrila) 140 140 20 329 466 20.242 .513 7 05 Dec 2006 02 Feb 2007
9 Мальцев А.В. (Палкин) 140 141 20 329 145 27.557 7.373 7 09 Jan 2007 02 Feb 2007
10 Васьков Е.В. (Johan) 140 140 20 329 124 12.713 11.402 7 20 Nov 2006 20 Jan 2007
11 Валуев Д.И. (Fiolent) 139 140 20 326 1188 117.017 62.302 4 05 Dec 2006 02 Feb 2007
12 Юлдашев М.Р. (Snowbear) 139 139 20 325 546 4.113 .000 3 15 Jan 2007 02 Feb 2007
13 Солдатенков Ю.С. (SolYUtor) 139 139 20 325 259 14.842 .143 3 01 Feb 2007 02 Feb 2007
14 Держальцев В.А. (MadVet) 138 139 20 324 540 34.249 3.085 3 08 Oct 2006 19 Oct 2006
15 Палий С.А. (PS_Sergey) 139 139 20 325 212 15.756 4.188 3 01 Dec 2006 03 Dec 2006
16 Бородкина М.И. (marishkin) 138 138 20 322 67 15.105 .000 0 22 Jan 2007 26 Jan 2007
17 Утёнков М.Н. (=Maxim=) 138 138 20 322 200 24.998 .000 0 19 Nov 2006 31 Jan 2007
18 Slobodcicov A.N. (Testo) 136 138 20 319 337 7.171 .000 0 25 Aug 2006 10 Nov 2006
19 Иванов А.Н. (Goapsy) 136 138 20 319 270 18.911 .000 0 07 Aug 2006 18 Dec 2006
20 Абашин П.И. (Dizil) 137 137 20 318 453 3.966 .000 0 20 Nov 2006 25 Dec 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Филатов М.С. (MF) 60 60 110 32 142 466 01 Feb 2007
2 Ivanov I.I. (Aaaa) 65 66 122 9 131 379 02 Feb 2007
3 Креславский О.М. (Arcan) 47 47 85 32 117 800 01 Feb 2007
4 >K M.F. (Girl) 49 49 87 0 87 1396 02 Feb 2007
5 >Пыткин А.В. (aslin) 21 55 43 32 75 560 02 Feb 2007
6 >devdem (__devdem__) 39 39 71 0 71 1854 02 Feb 2007
7 Банад В.В. (Vitali_Banad) 28 41 54 16 70 1438 01 Feb 2007
8 Родионов М.В. (Rodman_spb) 36 36 57 5 62 2160 02 Feb 2007
9 >Sahoo P. (damu) 24 43 51 9 60 1440 02 Feb 2007
10 Бахус М.С. (Bahus78) 33 33 59 0 59 2305 31 Jan 2007
11 Расюк Е.А. (bsd) 33 33 59 0 59 2306 31 Jan 2007
12 >satchidanand S. (pandi) 33 33 58 1 59 2309 02 Feb 2007
13 Задворных Е.А. (Задворных Е.А.) 31 31 56 0 56 2468 02 Feb 2007
14 >buch S.M. (Spandan) 23 40 52 1 53 1689 02 Feb 2007
15 jan J.P. (janek) 28 33 53 0 53 2357 30 Jan 2007
16 Ганночка А.В. (Createur) 29 29 50 1 51 2734 01 Feb 2007
17 Doag (pudor) 28 28 49 0 49 2819 30 Jan 2007
18 >Klimenko A.V. (GreyJedi) 28 28 49 0 49 2833 02 Feb 2007
19 Halturin (marmot) 28 28 49 0 49 2841 01 Feb 2007
20 shura (sandy83) 28 28 49 0 49 2842 01 Feb 2007
21 >Lysenkov S. (LSA) 32 32 47 0 47 2964 02 Feb 2007
22 Горелов (gor) 33 33 46 0 46 2999 02 Feb 2007
23 Гладких Д.С. (ЗлобнЫЙ_ДобР) 16 29 38 7 45 2308 30 Jan 2007
24 >saxena S. (saurabh12) 22 30 44 0 44 2481 02 Feb 2007
25 >Трохин А.Г. (sobak) 25 25 41 3 44 3093 02 Feb 2007
26 kushnir (marisha) 17 57 42 0 42 956 02 Feb 2007
27 >Герасимов Е.И. (EvgeniyGerasimov) 30 30 41 0 41 3260 02 Feb 2007
28 Гришин А.А. (Человек за компом) 25 25 40 0 40 3297 30 Jan 2007
29 >Полеводов А. (Шyрик) 25 25 40 0 40 3309 02 Feb 2007

Изучаем SQL

Выйди из "пробки" в SQL Server при помощи DBCC

Arthur Fuller (оригинал: Get out of a jam by using SQL Server's DBCC)
Перевод Моисеенко С.И.

Артур Фаллер демонстрирует, почему Вам следует знать о проверке согласованности базы данных (DBCC). Он также объясняет, как управлять DBCC и как использовать пять его расширений.

В моменты бедствия проверка согласованности базы данных (DBCC), может оказаться вашим самый ценным другом. Здесь приводится краткий обзор того, что DBCC может сделать для Вас, в частности:

· Проверить целостность ваших таблиц и связанных с ними индексов.

· Проверить всю базу данных.

· Проверить целостность страниц базы данных.

· Восстановить индексы на заданной таблице.

Почему Вы должны дружить с DBCC

Если Вы задаетесь вопросом, почему использование DBCC является даже необходимым, то вот причины:

· Страницы базы данных (и таблиц и индексов) необходимо периодически разбиваются на несколько, что может привести к их плохому распределению.

· Индексы могут испортиться или просто стать неэффективными.

· Движок Сервера SQL может иногда неправильно понять ваши намерения.

· В ситуациях, когда нормой является большое число обновлений, можно обрасти (помните, что каждое обновление - это фактически удаление и вставка).

· Отдельные страницы, хотя все еще "звучат", могут потерять свое оптимальное место хранения.

Как использовать DBCC

Вы можете запустить DBCC двумя способами: от командной строки и из окна Query Analyzer. Вы можете выполнять эти операции по расписанию, если считаете это необходимым. (Я никогда не чувствовал в этом потребности, поскольку из всех продуктов Microsoft я более всего уверен в стабильности SQL Server. Я полагаю, что это самый замечательный продукт, который когда-либо появлялся из Редмонда. Но не всегда все идет так, как надо.)

Команда DBCC имеет следующие расширения:

· CheckDB: проверяет согласованность всей базы данных, и является основным методом для проверки поврежденности базы данных.

· CheckTable: проверяет заданную таблицу на наличие проблем.

· CheckAlloc: проверяет отдельные страницы данных в базе, занятые как таблицами, так и индексами.

· Reindex: восстанавливает индексы на указанной таблице.

· CacheStats: сообщает об объектах, в настоящее время находящихся в кэше памяти.

· DropCleanBuffers: Удаляет все данные, находящиеся в настоящее время в буфере, для того, чтобы Вы могли продолжить тестирование, не используя предыдущие результаты.

· Errorlog: стирает (усекает) текущий журнал. Вы могли бы задать расписание для выполнения джоба, содержащего эту команду, чтобы выполнять ее, например, один раз в неделю.

· FlushProcInDB: Очищает процедурный кэш для заданной базы данных (используйте ее dbid, а не имя). Вот так можно определить используемое id:

SELECT dbid FROM master.dbo.sysdatabases
WHERE name = '<имя БД>'

· IndexDefrag: уменьшает фрагментацию в индексах, не накладывая блокировок на файлы, так что пользователи могут продолжать работу с базой данных.

· CheckCatalog: проверяет указанную базу данных на согласованность в таблицах и между ними (последнее означает внешние ключи и т.д.).

Как использовать пять из этих расширений

DBCC сначала создает снимок вашей базы данных (за исключением определенных специфических обстоятельств, например, работы с Master, TempDB или базой данных только для чтения). Условие: Чтобы использовать DBCC, ваша база данных должна находиться в однопользовательском режиме.

Использование DBCC CheckDB

Эта команда гарантирует, что: · Страницы данных и индексов правильно связаны.
· Индексы отсортированы правильно и актуальны.
· Указатели согласованы.
· Данные на каждой странице актуальны.
· Смещения страниц актуальны.

Ниже три самых общих способа использоватния CheckDB:

DBCC CHECKDB ('AdventureWorks', REPAIR_FAST)

DBCC CHECKDB ('AdventureWorks', REPAIR_REBUILD)

DBCC CHECKDB ('AdventureWorks', REPAIR_ALLOW_DATA_LOSS)

Использование DBCC CheckTable

Любые проблемы, с которыми Вы сталкиваетесь, чаще всего будут связаны с одной или более таблицами базы данных, а не всей базы данных. В таких случаях, запускайте DBCC CheckTable. Сначала перейдите в требуемую базу данных, а затем выполните команду DBCC CheckTable. Вот два примера:

DBCC CheckTable ('Sales,SalesOrderHeader')

DBCC CheckTable ('Sales,SalesOrderHeader', REPAIR_REBUILD)

Использование DBCC CheckAlloc

Эта команда проверяет согласованность страниц данных и их индексов. Ниже два примера:

DBCC CHECKALLOC ('Sales.SalesOrderDetails')

DBCC CHECKALLOC ('Sales.SalesOrderDetails', REPAIR_REBUILD)

Использование DBCC CheckCatalog

Используйте эту команду для проверки согласованности системных таблиц базы данных. Вы задаете имя базы данных, которую требуется проверить и необязательный аргумент WITH NO_INFOMSGS. Например:

DBCC CHECKCATALOG ('AdventureWorks')

Использование DBCC ReIndex

Эта команда вызывает перестройку одного или более индексов на заданной таблице или представлении. Вы можете также задать имя конкретного индекса, а также коэффициент заполнения (fill factor). Ниже два примера.

DBCC REINDEX ('AdventureWorks.Sales.SalesOrderHeader', PK_SalesOrderHeader_SalesOrderID'

DBCC REINDEX ('AdventureWorks.Sales.SalesOrderHeader', PK_SalesOrderHeader_SalesOrderID', 90)

Третий аргумент указывает, что я хочу получить коэффициент заполнения 90 % на перестроенном индексе.

Дополнительная информация Теперь, когда Вы знаете самые общие примеры использования DBCC, обратитесь к Books Online за информацией о дополнительных аргументах и опциях для каждого варианта команды.

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

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

§ В продаже еще имеется книга SQL. Задачи и решения, посвященная анализу ошибок, допускаемых при решении задач первого этапа. На сайте издательства Питер можно сделать заказ и познакомиться с содержанием.

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

Контакты

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

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

В избранное