(Возврат на основную страницу)

 

Содержание номера за Июнь 2008 год

SQL Server

Июнь 2008
№ 6 (90)

 

Editorial

Нейл Давидсон

Парадокс посредника

 

Programming

Кевин Кляйн

Как использует пространство TempDB

Эрланд Соммарског

Условия динамического поиска в T-SQL. Часть 2

Кален Делани

Оптимальное использование автоматического обновления статистических данных 16

 

DB Design & Warehousing

Кален Делани

Расширяя предельно допустимые для строки 8K

 

Парадокс посредника

Нейл Давидсон (Neil Davidson)

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

За те два месяца, что он был доступен на сайте, свыше миллиона человек скачали альбом In Rainbows группы Radiohead. В 2000 году, когда Стивен Кинг выложил роман Riding the Bullet на своем сайте, серверы рухнули под нагрузкой. Сет Годин (Seth Godin) оценивает, что свыше 2 миллионов человек скачали Unleashing the Ideavirus, когда он выпустил эту книгу в электронном формате в свободный доступ. Эти примеры демонстрируют, как успешно Интернет позволяет нам избавиться от посредника. У процесса даже есть (довольно некрасивое) название: Disintermediation. По крайней мере так говорит здравый смысл. А вот я не уверен, что это так. Полагаю, нужда в посреднике не исчезнет, в посреднике, который лучше, умнее, просто в другом посреднике. Несомненно, традиционные агенты по продаже туристических путевок, книжные магазины и музыкальные компании исчезнут, но это только первая стадия в цикле созидательного разрушения.

Вот пример того, как убийца посредника старого типа выступает повивальной бабкой нового. Положим, вы покупаете автомобиль. Подержанный. Вы можете купить у дилера, а можете у владельца машины. В прошлом, если вы покупали у дилера, ваш выбор был богаче. На демонстрационной площадке стоит множество машин. Точно также продать машину проще дилеру, чем конкретному человеку. Все изменилось с появлением eBay: вы минуете посредника и покупаете напрямую у продавца, причем выбор гораздо больше, чем может предложить любой дилер.

Однако возникает необходимость в посреднике нового типа. Рынок подержанных машин хорошо известен проблемой качества. Покупатель знает про выставленные машины гораздо меньше дилера. Соответственно, он предполагает определенное качество и готов платить только в определенных пределах суммы. Если цена подержанных автомобилей держится на определенном уровне в зависимости от качества, продавцу нет необходимости продавать качественные машины. Все равно покупатель приходит с определенным предубеждением относительно качества. В результате некачественные автомобили вытесняют хорошие. Следует понимать, что описанная ситуация основана на диспропорции информации у продавца и покупателя. Если покупатель владеет тем же объемом информации, что и продавец, проблема исчезает. Это идеальная роль для посредника. И речь не идет об реинкарнации Артура Дали (Arthur Daley — персонаж сериала, беспринципный и жуликоватый торговец. — Прим. пер.), но о ком­то, кто продает информацию и чей товар хорош и достоин доверия. Вы готовы заплатить посреднику за поиск подержанного автомобиля, проверку качества и предоставление гарантий? Я — да.

Второй пример — наем на работу. В попытке избавиться от посредника сайты типа Monster выродились в мясной рынок нанимателей и кандидатов. К сожалению, в этом случае закон Старджина (Sturgeons law), гласящий, что 90 % любого предложения — мусор, работает безукоризненно. Этот принцип распространяется в обе стороны: 90 % кандидатов и 90 % предлагаемых позиций — мусор. Если рассматривать Monster в качестве единственного примера — это 100 миллионов негодных кандидатов и 50 миллионов никому не нужных предложений. Но в этом мусоре зарыты бриллианты и просеивание мусора — ценнейший дар. Иными словами, рекрутеры, хорошие рекрутеры, в наше время важны как никогда.

Все это касается не только физически реальных товаров, для которых нужен хороший посредник. С виртуальными та же самая ситуация. Интернет предлагает легкие пути связи писателей с читателями, музыкантов со слушателями и актеров со зрителями, что позволяет обойтись без традиционных посредников, таких как журналы, книги и газеты. Но бесконечно нарастающий объем информации сталкивается с нашими конечными возможностями эту информацию потреблять. У нас нет возможности фильтровать бесконечный поток данных, приводя его к конечному объему. В результате, люди, посредники, способные выполнить это за нас, становятся все более ценны. Меня очень привлекают неожиданные подходы, которые реализует BBC, Slashdot или Boing, применительно к информационному хаосу, по сравнению с тем, что предлагает нивелирующая до низшего уровня «мудрость масс» или холодная логика алгоритмов Google.

И я не думаю, что эти примеры изолированы. По мере того как Интернет снимает потребность в «тупых» посредниках, он создает потребность в интеллектуальных посредниках. По мере того как нас захлестывает информационная волна, нам все больше нужна помощь в фильтрации данных. Чем старательнее мы избавляемся от посредника, тем больше мы в нем нуждаемся…

Посредник мертв. Да здравствует посредник!

Как использует пространство TempDB

Кевин Кляйн (Kevin Kline)

Aaron Bertrand, ведущий блог на SQLBlog.com и работающий в команде поддержки сайта http://www.aspfaq.com/, является одним из SQL Server MVP, материалы которых в моем списке обязательных для чтения. Он разработал действительно полезный запрос для определения пространства, занимаемого объектами из TempDB:

SELECT
 SPID = s.session_id,
 s.[host_name],
 s.[program_name],
 s.status,
 s.memory_usage,
 granted_memory = CONVERT(INT, r.granted_query_memory*8.00),
 t.text, 
 sourcedb = DB_NAME(r.database_id),
 workdb = DB_NAME(dt.database_id),
 mg.*,
 su.*
FROM sys.dm_exec_sessions s
INNER JOIN sys.dm_db_session_space_usage su
   ON s.session_id = su.session_id
   AND su.database_id = DB_ID('tempdb')
INNER JOIN sys.dm_exec_connections c
   ON s.session_id = c.most_recent_session_id
LEFT OUTER JOIN sys.dm_exec_requests r
   ON r.session_id = s.session_id
LEFT OUTER JOIN (
   SELECT
    session_id,
    database_id
   FROM sys.dm_tran_session_transactions t
   INNER JOIN sys.dm_tran_database_transactions dt
      ON t.transaction_id = dt.transaction_id
   WHERE dt.database_id = DB_ID('tempdb')
   GROUP BY  session_id,  database_id
   ) dt
   ON s.session_id = dt.session_id
 CROSS APPLY sys.dm_exec_sql_text(COALESCE(r.sql_handle,
 c.most_recent_sql_handle)) t
 LEFT OUTER JOIN sys.dm_exec_query_memory_grants mg
   ON s.session_id = mg.session_id
 WHERE (r.database_id = DB_ID('tempdb')
   OR dt.database_id = DB_ID('tempdb'))
  AND s.status = 'running'
 ORDER BY SPID;

Вы можете посчитать нужным написать свой запрос, основанный на dm_db_session_space_usage, но этот работает действительно хорошо. Спасибо, Aaron, что поделился!

Условия динамического поиска в T-SQL. Часть 2*

Эрланд Соммарског (Erland Sommarskog)

* См. Эрланд Соммарског. Условия динамического поиска в T-SQL. Часть 1 // SQL Server для профессионалов. 2008. №5.

DOWNLOAD

Оптимальное использование автоматического обновления статистических данных

Настройте производительность, используя UPDATE STATISTICS и флаги трассировки для улучшения индексных статистических данных

Кален Делани (Kalen Delaney)

DOWNLOAD

Microsoft SQL Server 2005 обладает возможностью автоматического обновления данных статистики, для помощи в обеспечения оптимального выполнения SQL Server-запросов. В дальнейшем вы сможете улучшить качество индексных статистических данных SQL Server — для настройки производительности запросов — используя UPDATE STATISTICS и два новых в Microsoft SQL Server 2005 SP1 флагов трассировки.

Если вы когда­нибудь занимались настройкой производительности, вы хорошо осведомлены, что правильное индексирование, наверное основное средство, с помощью которого вы пытаетесь повлиять на производительность. Для хорошей производительности нужны хорошие индексы, но чтобы оптимизатор SQL Server распознал бесполезность индекса, вам потребуются высококачественные статистические данные. Начиная с версии SQL Server 7.0, SQL Server обновляет индексные статистические данные автоматически, что увеличивает вероятность того, что ваши данные будут актуальными. До версии 7.0 статистические данные можно было обновлять только вручную; таким образом, первой задачей в списке условий повышения производительности было обновление статистических данных для всех таблиц, используемых проблемными запросами.

Возможность автоматического обновления ваших индексных статистических данных — это великолепная возможность, но и она несовершенна. Посмотрим, как SQL Server­оптимизатор определяет необходимость обновления статистических данных, а затем узнаем кое­что о новых флагах трассировки в SQL Server 2005 SP1, это поможет вам контролировать функцию автоматического обновления статистических данных.

Расширяя предельно допустимые для строки 8K

Узнайте, как SQL Server 2005 хранит данные, превышающие размер строки

Кален Делани (Kalen Delaney)

DOWNLOAD

В течение нескольких последних месяцев я обсуждала, как SQL Server 2005 отслеживает пространство, занимаемое таблицами и индексами, говорила о том, что новые структуры метаданных немного сложнее по сравнению с SQL Server 2000, но они и гораздо более гибкие. В «Управлении пространством данных» я объяснила, что каждая таблица (или индекс) может хранить данные трех видов: обычные данные (IN_ROW), большие объекты (LOB) и данные, превышающие размер строки (ROW_OVERFLOW) — это новинка в SQL Server 2005.Особенно вам может пригодиться возможность превышения размера строки, если в ваших таблицах много столбцов разной длины, общий размер которых обычно умещается в максимальный размер строки, равный 8060 байтам, но может случайно оказаться и больше. Давайте рассмотрим, как SQL Server работает с новыми данными, переполняющими строку.

 (Возврат на основную страницу)

Hosted by uCoz