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

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


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

http://www.sql-ex.ru

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

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

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

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

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


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

§ Продолжил обновление английских формулировок, исправленных mikew.
По моему недосмотру иностранцы уже разыскивают головные корабли, где ни попадя :-). madboy заставил меня привести английскую формулировку задачи 40 в соответствие с русской.

§ Заключили договор с Яндексом на использование их формы оплаты в системе Яндекс.Деньги. Теперь оплата за сертификаты в этой системе станет проще.

§ Дорешав пропущенные задачи, вернулся в двадцатку yaff (задач 137, время 14.998).
На подходе EffEct (136, 87.081) и =Maxim= (136, 19.832).

§ Продолжили свое восхождение к вершине:
Galya (116, 29.771)
Fencer (110, 107.992)
Goga_3040 (121, 41.914)
Дайнин (107, 70.621)

§ На этой неделе сертифицированы:
Damirishe (A06013325) [BK] (г.Челябинск, Россия)

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

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

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

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

Лучшие результаты (ТОР 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) 140 140 20 329 52 5.819 .907 7 14 Oct 2006 27 Oct 2006
2 Карасёва Н.В. (vlksm) 140 140 20 329 151 27.838 2.709 7 04 Oct 2006 27 Oct 2006
3 Мурашкин И.В. (lepton) 140 140 20 329 199 13.712 3.581 7 08 Oct 2006 27 Oct 2006
4 Васьков Е.В. (Johan) 140 140 20 329 85 12.705 11.402 7 12 Oct 2006 27 Oct 2006
5 Голубин Р.С. (Roman S. Golubin) 140 139 20 329 425 44.826 23.652 7 17 Oct 2006 27 Oct 2006
6 Войнов П.Е. (pаparome) 139 140 20 326 407 2.687 .000 4 05 Oct 2006 27 Oct 2006
7 Юлдашев М.Р. (Snowbear) 139 139 20 325 441 4.106 .000 3 02 Oct 2006 24 Oct 2006
8 Держальцев В.А. (MadVet) 139 139 20 325 540 34.249 3.085 3 08 Oct 2006 19 Oct 2006
9 Кувалкин К.С. (Cyrilus) 138 107 20 322 691 9.892 .000 0 16 Oct 2006 27 Oct 2006
10 Валуев Д.И. (Fiolent) 138 138 20 322 1125 54.696 .000 0 03 Oct 2006 27 Oct 2006
11 Slobodcicov A.N. (Testo) 137 138 20 320 337 7.171 .000 0 25 Aug 2006 23 Oct 2006
12 Иванов А.Н. (Goapsy) 137 138 20 320 270 18.911 .000 0 07 Aug 2006 09 Oct 2006
13 Зверев Д.Л. (dimzv) 137 137 20 318 1070 3.663 .000 0 09 Oct 2006 09 Oct 2006
14 Абашин П.И. (Dizil) 137 107 20 318 420 3.961 .000 0 18 Oct 2006 18 Oct 2006
15 Палий С.А. (PS_Sergey) 137 137 20 318 166 10.215 .000 0 16 Oct 2006 23 Oct 2006
16 Крижевич С.А. (yaff) 137 107 20 318 481 14.998 .000 0 24 Oct 2006 25 Oct 2006
17 Мальцев А.В. (Палкин) 137 137 20 318 56 15.229 .000 0 12 Oct 2006 23 Oct 2006
18 Вязовецков А.С. (alex_v) 137 137 20 318 141 22.788 .000 0 20 Oct 2006 20 Oct 2006
19 Тарасов Д.Б. (Gavrila) 136 138 20 317 402 19.425 .000 0 02 Oct 2006 27 Oct 2006
20 Самохвалов В. (ValdemarES) 136 137 20 316 273 7.848 .000 0 17 Aug 2006 13 Oct 2006

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Василенко А.А. (Nike_) 55 55 102 3 105 837 27 Oct 2006
2 >Сафина Д.Б. (dina) 55 55 102 0 102 918 27 Oct 2006
3 Нурлыкаев И.М. (nocTopoHHuM_nO) 48 48 87 9 96 1053 27 Oct 2006
4 Babayan S. (Atoll) 44 48 83 9 92 1055 27 Oct 2006
5 >Rozhok Y.V. (yuriy.rozhok) 26 59 51 32 83 404 27 Oct 2006
6 Stelmakh O. (Oleksa Stelmakh) 45 45 78 1 79 1363 26 Oct 2006
7 >Barabanov A. (AlBa) 34 34 60 17 77 1424 27 Oct 2006
8 Кротов (aek) 40 40 73 0 73 1543 25 Oct 2006
9 Kostikov (th0m) 40 40 73 0 73 1547 25 Oct 2006
10 >Стымковский Н.С. (Solnake_) 33 33 58 9 67 1707 27 Oct 2006
11 >Князев С.В. (KSerg) 26 48 54 12 66 991 27 Oct 2006
12 Недоросткова Я.Н. (Yana_Ned) 37 37 60 6 66 1658 27 Oct 2006
13 Прошутя Р.А. (klyg) 24 58 48 15 63 624 24 Oct 2006
14 >Мискевич П.С. (Павлик) 29 29 48 15 63 1826 27 Oct 2006
15 Ищенко (Arche) 26 59 51 9 60 670 26 Oct 2006
16 Першин М.Р. (Max Pershin) 15 51 27 32 59 622 27 Oct 2006
17 >Абрамов И.И. (Lite) 24 40 54 5 59 1419 27 Oct 2006
18 Бобок А.С. (Nemo20000) 29 29 50 9 59 1992 27 Oct 2006
19 >Piriyeva A.Z. (Alfiya) 37 37 59 0 59 1993 27 Oct 2006
20 zeleboba (zelebobka) 31 31 56 0 56 2126 26 Oct 2006
21 >Мифтахов Р.Ф. (romai) 32 32 56 0 56 2131 27 Oct 2006
22 Elbanov (m@rio) 27 48 53 0 53 1290 27 Oct 2006
23 Самылкин А.Н. (Sam Andrews) 12 59 29 23 52 405 26 Oct 2006
24 >Литвиненко Н.Ю. (litvinenko) 30 30 52 0 52 2274 27 Oct 2006
25 >Дорогой Д.С. (Dorogoj) 29 29 52 0 52 2284 27 Oct 2006

Изучаем SQL

Настройка производительности Microsoft T-SQL. Часть 1: Анализ и оптимизация производительности запросов T-SQL, используя SET и DBCC
(окончание, начало в вып.109)

Kevin Kline, Quest Software, Inc. (оригинал: Microsoft T-SQL Performance Tuning. Part 1: Analyzing and Optimizing T-SQL Query Performance on Microsoft SQL Server using SET and DBCC)
Перевод Живенко Н.

DBCC SQLPERF

DBCC SQLPERF может использоваться для получения общих статистических данных относительно производительности SQL Server. В SQL Server 2000 официально поддерживается и документирован только DBCC SQLPERF LOGSPACE . Однако дополнительные ключевые слова, разрешенные в ранних версиях SQL Server, продолжают функционировать. Эти же параметры могут также отслеживаться в режиме реального времени с помощью SQL Server Performance Monitor. Синтаксис команды:

DBCC SQLPERF ( {IOSTATS | LRUSTATS | NETSTATS | RASTATS [, CLEAR]} | {THREADS}
| {LOGSPACE} )

Опции SQLPERF и результаты их использования объяснены ниже:

IOSTATS

Выводит использование операций ввода/вывода от начала работы сервера с момента очистки статистических данных. Чем ближе эти значения к нулю, тем лучше. Результаты примера:

Statistic                     Value
-----------------------------------
Reads Outstanding     0.0
Writes Outstanding     1.0

LRUSTATS

Выводит информацию об использовании кэша от начала работы сервера или после очистки статистических данных. Аббревиатура LRU (Least Recently Used) означает последний использованный. Коэффициент удачных обращений в кэш (Cache Hit Ratio) является единственным наиболее важным значением производительности в этой группе и наилучший результат характеризуется близостью этого показателя к 100 (Смотрите DBCC PROCCACHE ниже для аналогичной команды). Результаты примера:

Statistic                     Value
-------------------------------
Cache Hit Ratio 99.875603
Cache Flushes 0.0
Free Page Scan (Avg) 0.0
Free Page Scan (Max) 0.0
Min Free Buffers 331.0
Cache Size 4362.0
Free Buffers 22.0

NETSTATS

Выводит данные использования сети. Результаты примера:

Statistic                     Value
-----------------------------------
Network Reads 243.0
Network Writes 244.0
Network Bytes Read 38328.0
Network Bytes Written 88446.0
Command Queue Length 0.0
Max Command Queue Length 0.0
Worker Threads 0.0
Max Worker Threads 0.0
Network Threads 0.0
Max Network Threads 0.0

RASTATS

Выводит данные использования опережающего чтения. Результаты примера:

Statistic                     Value
-----------------------------------
RA Pages Found in Cache 0.0
RA Pages Placed in Cache 0.0
RA Physical IO 0.0
Used Slots 0.0

CLEAR

Эта опция используется вместе с одной из обсуждаемых выше. Очищает указанные статистические данные и генерирует новые. Эта опция не дает никаких выходных данных.

THREADS

Отображает идентификатор потока системы Windows NT на SQL Server spid. Выходные данные очень похожи на те, которые генерирует хранимая процедура SP_WHO, и содержат логин, физическую и логическую (в показателях центрального процессора) активность ввода-вывода и статистические данные об использовании памяти. Результаты примера:

Spid Thread ID Status LoginName IO CPU MemUsage
---- -------- ------ --------- -- --- -----------
1 NULL background NULL 0 0 0
2 NULL sleeping NULL 0 0 0
3 NULL background NULL 0 0 5
4 NULL background NULL 0 0 -6
5 0 background sa 6 0 2
6 0 background sa 0 0 2
7 NULL sleeping NULL 0 0 0
8 0 background sa 0 0 2
9 0 background sa 0 0 2
10 0 background sa 0 0 2
11 0 background sa 0 0 2
12 0 background sa 0 0 2
51 0 sleeping CORPORATE\ 116 40 124
52 2828 runnable CORPORATE\ 276 220 68
53 0 sleeping CORPORATE\ 48 200 102

LOGSPACE

Выводит процент используемого пространства журналом транзакций. Эта опция может использоваться только, если журнал транзакций расположен на своем собственном сегменте базы данных. Результаты примера:

Database Name Log Size (MB) Log Space Used (%) Status
------------- ------------- ------------------ -------
master 0.4921875 64.186508 0
tempdb 0.4921875 51.578388 0
model 0.4921875 45.436508 0
msdb 2.2421875 31.685539 0
pubs 1.7421875 43.049328 0
Northwind 0.9921875 41.235928 0

В большинстве случаев, мы рекомендуем использовать SQL Performance Monitor для сбора этой информации. Проще подключиться к файлу и обеспечить визуальное сравнение результатов выполнения в течение длительного времени. SQL Performance Monitor также дает пояснение каждого показателя монитора производительности. Однако если вас интересует моментальный снимок конкретной проблемы производительности, то DBCC SQLPERF может оказаться весьма удобным средством.

DBCC PROCCACHE

В более ранних версиях SQL Server кэш данных и процедурный кэш могли настраиваться независимо. Кэш данных представлял собой область кэша памяти, где сохранялись страницы данных для быстрого доступа, в то время как процедурный кэш использовался для хранения планов выполнения запроса и откомпилированных планов выполнения хранимых процедур. В SQL Server 2000 нельзя настроить эти области кэш-памяти отдельно, так как SQL Server теперь обрабатывает все эти вещи автоматически. Однако, Вы можете проверить состояние дел в процедурном кэше, используя команду DBCC PROCCACHE.

Синтаксис:

DBCC PROCCACHE

Результаты возвращаются в виде длинной строки со значениями, которые объясняются в таблице ниже:

ИМЯ СТОЛБЦА ОПИСАНИЕ
num proc buffs Число хранимых процедур, которые возможно находятся в процедурном кэше.
num proc buffs used Число слотов в кэше, занимаемых хранимыми процедурами
num proc buffs active Число слотов в кэше, занимаемых выполняемыми хранимыми процедурами.
proc cache size Полный объем процедурного кэша.
proc cache used Размер процедурного кэша, занимаемого хранимыми процедурами
proc cache active Размер процедурного кэша, занимаемого выполняемыми хранимыми процедурами.

Если вы стремитесь найти самую последнюю информацию о производительности сервера, SQL Server 2000 все же вернет достоверные данные с помощью команды DBCC MEMUSAGE, несмотря на утверждение, что эта команда больше не поддерживается.

Эта команда выводит 20 наиболее потребляющих память объектов в кэше. Конечно, весьма желательно не кодировать никакие решения на основе DBCC MEMUSAGE, т.к. они могут отказать завтра, но может быть вам будет интересно поиграть с этой командой.

DBCC PINTABLE

Поиск данных в кэше значительно увеличивает производительность по сравнению с поиском данных на диске. Скорость ввода-вывода в кэше памяти определяется скоростью движения электронов, в то время как скорость считывания с диска ограничена фактическим движением механизмов и электродвигателей. Существует опция, заставляющая SQL Server держать таблицу в памяти, гарантируя, что ее страницы не будут перенесены из памяти на диск. Синтаксис:

DBCC PINTABLE (database_id, table_id)

Синтаксис команды предполагает использование идентификаторов базы данных и таблицы. Случается, что вы не знаете идентификаторы базы данных и/или таблицы (я редко их помню). В этом случае можно использовать в запросе функцию DB_ID и функцию OBJECT_ID, соответственно, чтобы узнать эти значения.

Ниже представлен пример, иллюстрирующий сказанное:

DECLARE @db INT, @obj INT
SELECT @db = DB_ID('northwind'),
@obj = OBJECT_ID('northwind..employees')
DBCC PINTABLE (@db, @obj)

Эта команда не должна использоваться бездумно, о чем говорит выводимое ей предупреждение:

Warning: Pinning tables should be carefully considered. If a pinned table is larger, or grows larger, than the available data cache, the server may need to be restarted and the table unpinned.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Фактически эта команда не считывает таблицу в кэш памяти. Вместо этого она гарантирует, что страницы таблицы будут сохранены в кэше, после того, как будут востребованы. (Вы можете объединить эту команду с оператором SELECT, чтобы сразу считать таблицу непосредственно в память.) Эта команда имеет и обратную сторону - она не сбрасывает на диск страницы помещенной таким образом в память таблицы, даже когда кэш очень нуждается в свободном пространстве. Это особенно плохо, если загружаемая таблица является очень большой. Следовательно, эта команда должна использоваться только для маленьких, часто используемых таблиц, например, справочников. Используйте команду DBCC UNPINTABLE для выгрузки страниц из кэша памяти.

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

§ В очередной Премии Рунета каждый посетитель может проголосовать за 12 понравившихся ему ресурсов.
Если вы решитесь принять участие в голосовании, надеюсь, что среди 12 ваших предпочтений найдется место и нашему сайту :-).

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

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

Контакты

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

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

В избранное