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

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


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

http://www.sql-ex.ru

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

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

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

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

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


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

§ Опубликованная ранее в рассылке справка по строковым функциям в T-SQL включена в основную справку на сайте и доступна также в английской версии.

§ Некоторые задачи на втором этапе тестирования рассчитаны на поиск оптимального решения, позволяющего уложиться в таймаут. Попытка выполнить неоптимизированные решения вызывает перегрузку сервера и нарушает нормальную работу сайта.
Просьба оптимизировать такие "проблемные" решения прежде, чем выполнять их на сайте.
Замечу, что ни одно тестовое (авторское) решение не выполняется дольше нескольких секунд на моей старенькой машине с 350МГц процессором.

§ Добрался до 138 задачи niko2 (задач 137, время 8.472)

 

§ В сотне появились новые участники:
Donald (96, 2.258)
R00T (95, 1.799)

 

§ Сохранил шансы на попадание в десятку:
OlegE (122, 3.736)
lepton (119, 4.624)

§ Продолжили свое восхождение к вершине:
MadVet(135, 18.469)
User_Name (135, 25.809)
xax (124, 81.474)
Weed (124, 84.974)
f.nietzsche (115, 20.448)
Eugeniе (109, 29.691)
gps (109, 144.200)
arm (108, 16.020)
Gosha (97, 8.029)
GoshaS_29 (97, 16.618)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Кувалкин К.С. (Cyrilus) 138 138 20 320 484 5.460 23 Mar 2006 07 Apr 2006
2 Kamaev V.M. (Heromantor) 138 138 20 320 128 9.066 14 Mar 2006 25 Mar 2006
3 Бураков С.Г. (burakov58) 138 138 20 320 419 17.395 24 Mar 2006 07 Apr 2006
4 Тарасов Д.Б. (Gavrila) 138 138 20 320 208 19.424 22 Mar 2006 07 Apr 2006
5 Голубин Р.С. (Roman S. Golubin) 138 138 20 320 210 20.835 16 Mar 2006 06 Apr 2006
6 Валуев Д.И. (Fiolent) 137 138 20 318 925 47.930 17 Mar 2006 07 Apr 2006
7 Войнов П.Е. (pаparome) 137 137 20 316 203 1.769 15 Mar 2006 07 Apr 2006
8 Зверев Д.Л. (dimzv) 137 137 20 316 869 3.278 22 Mar 2006 04 Apr 2006
9 Юлдашев М.Р. (Snowbear) 137 137 20 316 239 3.448 14 Mar 2006 07 Apr 2006
10 Абашин П.И. (Dizil) 137 137 20 316 203 3.776 15 Mar 2006 07 Apr 2006
11 Самохвалов В. (ValdemarES) 137 137 20 316 117 7.788 14 Mar 2006 07 Apr 2006
12 Носков Н.В. (niko2) 137 113 20 316 274 8.472 06 Apr 2006 06 Apr 2006
13 Крижевич С.А. (yaff) 137 137 20 316 259 14.801 16 Mar 2006 22 Mar 2006
14 Иванов А.Н. (Goapsy) 137 137 20 316 128 16.076 18 Mar 2006 25 Mar 2006
15 Зырин В.Е. (Vezyr) 137 137 20 316 63 20.618 17 Mar 2006 28 Mar 2006
16 Страшников А.С. (EffEct) 137 137 20 316 305 59.972 16 Mar 2006 03 Apr 2006
17 Матвеева Ю.Б. (Julia_M) 137 137 20 316 137 68.931 24 Mar 2006 03 Apr 2006
18 Духин А. (Shark) 135 137 20 311 249 2.785 17 Mar 2006 03 Apr 2006
19 Держальцев В.А. (MadVet) 135 52 20 311 355 18.469 06 Apr 2006 06 Apr 2006
20 Леденев С.А. (Shurgenz) 134 137 20 309 573 11.574 14 Mar 2006 07 Apr 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Maskovich (Strider5) 49 92 107 0 107 118 07 Apr 2006
2 >Афанасьев А.В. (alaf) 55 55 101 0 101 683 07 Apr 2006
3 frenkental (a2010) 47 48 84 0 84 882 07 Apr 2006
4 Борковой А. (Andrey_b) 47 47 82 0 82 934 06 Apr 2006
5 >Карпова (Eau Rouge) 35 56 78 3 81 572 07 Apr 2006
6 >Мавлюкеев (Radiohead) 39 39 66 8 74 1068 07 Apr 2006
7 >Zamolxis (CSD) 40 40 67 6 73 1084 07 Apr 2006
8 >Косолапов В.Е. (Вофка) 35 52 71 0 71 821 07 Apr 2006
9 >Арсентьева Н.Ю. (bingo) 37 37 58 9 67 1203 07 Apr 2006
10 >Shestakov P.I. (Bulsara) 33 33 58 9 67 1206 07 Apr 2006
11 Градусов П.Н. (-paskha-) 35 35 62 3 65 1243 04 Apr 2006
12 Domashov (olegd) 34 34 60 0 60 1380 03 Apr 2006
13 >Мурашкин (lepton) 24 119 59 0 59 45 07 Apr 2006
14 >John (sqlbeginner) 33 33 57 0 57 1483 07 Apr 2006
15 Понимаш А.В. (Led) 30 30 53 3 56 1504 06 Apr 2006
16 >Саканцева Н.С. (nsnt) 28 58 52 3 55 532 07 Apr 2006
17 >букирева Е. (vredina) 29 38 53 1 54 1298 07 Apr 2006
18 Федоров П. (PavelDM) 28 28 49 5 54 1560 06 Apr 2006
19 Chumakov D.V. (Dennis) 11 58 25 28 53 301 07 Apr 2006
20 Ершов В. (Basil2006) 29 29 52 0 52 1602 05 Apr 2006
21 Павлов (Doktor) 20 20 27 23 50 1659 07 Apr 2006
22 >Усачев (maar) 16 56 31 16 47 409 07 Apr 2006
23 >wwer (qwerty) 19 34 43 0 43 1014 07 Apr 2006
24 Егорычев М. (Егорычев Максим) 26 26 40 2 42 1905 06 Apr 2006
25 Нефедов (ambeon) 28 28 39 3 42 1913 06 Apr 2006
26 Маркин (/\/0!$e) 25 25 40 0 40 1980 06 Apr 2006
27 Lapshina (lsvetlsns) 29 29 40 0 40 1987 05 Apr 2006

Изучаем SQL

Отслеживание роста базы данных tempdb

Brian Moran (оригинал: Tracking tempdb growth)
Перевод Моисеенко С.И.

Читатели часто обращаются ко мне с историями безудержного роста tempdb. Один администратор баз данных недавно устанавливал более новую версию приложения и заметил, что база данных tempdb, изначально установленная на 80 МБ, внезапно резко выросла до 8GB и более. Вопрос: как отследить рост tempdb и связать этот рост с выполнением конкретных командам?

Ниже приводятся три эффективных способа отслеживания роста tempdb. Во-первых, Вы можете использовать счетчик Data File(s) Size (KB) (Размер файла данных) Монитора производительности (Performance Monitor), связанный с экземпляром tempdb для объекта производительности базы данных. Использование этого счетчика - хороший способ узнать, когда файл tempdb начинает расти. Вы можете также получить доступ к этим данным непосредственно из SQL Server, выполнив запрос к таблице master..sysperfinfo, которая материализует все счетчики монитора производительности, экспортируемые SQL Server. Во-вторых, Вы можете периодически проверять вывод sp_spaceused на tempdb. И, наконец, Вы можете использовать функцию fn_virtualfilestats (), чтобы отследить ввод/вывод, который SQL Server записывает в файлы базы данных, которые использует tempdb. Если tempdb растет, вероятной причиной является физический ввод/вывод, связанный с определенными запросами. В этом случае контроль данных fn_virtualfilestats поможет уменьшить список "подозрительных" запросов, вызывающих рост tempdb. Любой из этих методов позволяет отслеживать рост tempdb в течение конкретного периода времени.

Чтобы найти связь роста tempdb с запросами его вызывающими, Вы можете запустить трассу SQL Server Profiler в процессе слежения за ростом tempdb. Нет никакого непосредственного способа узнать, какой именно запрос вызывает тот или иной прирост tempdb, но Вы можете сделать некоторые предположения, которые помогут Вам отыскать запросы, потенциально являющиеся виновниками этого роста. Основное предположение состоит в том, что любой запрос, который может заставить tempdb расти большими объемами, например, такими, о которых сообщал выше администратор баз данных, будет выполняться значительно дольше по сравнению с типичными запросами к данной базе. Эти запросы, вероятно, покажут также относительно высокое значение в столбце данных WRITES трассы в Profiler. Обнаружение операторов SPOOL в плане выполнения запроса является еще одним признаком того, что SQL Server выполняет большое количество операций записи в tempdb. Оператор SPOOL означает, что SQL Server записывает промежуточный результирующий набор во вторичную память (tempdb), чтобы впоследствии воспользоваться этими данными для реализации плана.

Если Вы получили данные, которые помогли выяснить, когда файлы tempdb росли или наблюдался интенсивный ввод/вывод, а также Вы получили список запросов, выполняемых в тот же самый период времени, Вам следует проанализировать запросы из этого списка. Ищите запросы, время начала или окончания которых согласуется с периодом высокого роста, ограничиваясь далее теми запросами, которые потребляли много времени при исполнении (по крайней мере, несколько сотен миллисекунд) и демонстрировали относительно высокое количество операций ввода/вывода (по сравнению с другими запросами, выполнявшимися в то же время). Этот анализ даст Вам короткий список запросов, которые могли вызывать чрезмерный рост tempdb.

Есть еще одна идея. Мой опыт подсказывает, что полное или частичное декартово произведение может вызвать интенсивный рост tempdb - и не забывайте искать для его обнаружения операторы SPOOL! Profiler имеет событие, называемое "пропавший предикат соединения" (Missing Join Predicate), в классе событий ошибок и предупреждений, которое отлавливает ситуации, в которых SQL Server думает, что предикат соединения отсутствует. Я никогда не проверял логику, которую использует SQL Server, чтобы решить, что предикат отсутствует, поэтому не могу утверждать, что он всегда обнаруживает пропущенный предикат в JOIN. Но я включаю это событие в мой стандартный анализ трассы, и неоднократно успешно идентифицировал много декартовых произведений (которые не были ранее обнаружены различными командами разработчиков приложений, которых я консультировал), просматривая экземпляры этого события.

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

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

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

Контакты

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

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

В избранное