sqlCmd Blog


Теоретические основы конкурентного доступа к данным.

Первая статья цикла посвященного организации параллельного доступа к данным на платформе SQL Server. Рассматриваются теоретические основы такого доступа, равно применимые к абсолютно любой СУБД, и поясняется, почему многопользовательские системы в этом аспекте на порядок, а то и несколько, сложнее систем однопользовательских. Подробно разбираются артефакты конкурентного доступа, причины их вызывающие и потенциальный ущерб, наносимый ими целостности данных системы. Так же статья подробно разбирает все предлагаемые той же платформой уровни изоляций транзакций. Поясняется их роль в борьбе с артефактами и разбирается вопрос какой именно уровень какому артефакту противостоит. Освещается вопрос существования «парных» уровней обеспечивающих одну и ту же целостность данных и поясняется, зачем такая избыточность существует, для чего дается определение и толкование пессимистическим и оптимистическим методологиям контролями конкурентного доступа. Наконец, разбирается вопрос, почему сервер (любой, не обязательно SQL Server) не способен самостоятельно справиться с абсолютно всеми возможными артефактами и зачем ему, как минимум в одном из сценариев параллельного доступа, непременно требуется помощь со стороны клиентского кода. Уровень материала – 300.

Перейти к статье.
добавлено: 10 янв 13 просмотры: 1587, комментарии: 0



Параметризация запросов. Ваш злейший враг?

Вторая статья из цикла о параметризации запросов описывающая, соответственно, "проблемные места" данной технологии. Подробно разбираются сценарии и условия в которых параметризация наносит совершенно реальный и ощутимый вред системе вместо того, что бы быть нашим помощником в вопросах оптимизации запросов. Объясняется, почему в общем случае избежать подобных условий у нас не получится и приводятся четыре варианта по смягчению негативного влияния параметризации. Разбираются некоторые нюансы работы оптимизатора запросов и его взаимодействие с исполнителем запросов. Анализируется влияние такого взаимодействия на итоговый результат параметризации в тех или иных обстоятельствах, объясняются далеко не очевидные (а подчас и просто парадоксальные) побочные явления вытекающие из совместной работы двух указанных компонентов SQL Server. Уровень материала - 300.


Перейти к статье.
добавлено: 28 окт 12 просмотры: 1714, комментарии: 3



To NULL or NOT to NULL? К вопросу о троичной логике.

Статья фактически является кратким справочником по вопросам поведения и интерпретации NULL-значений различными конструкциями языка T-SQL. Разбираются причины непоследовательности в такой интерпретации, даются максимально короткие примеры кода для самостоятельных тестов/проверок. Так же подробно рассматриваются сами NULL-значения, те проблемы которые вызывает их наличие (или, как минимум, факт допустимости таких значений), а так же приводится теоретическая база, описывающая "идеальное" поведение таких значений в составе логических выражений. Освещаются многочисленные заблуждения и причины недостаточного понимания работы T-SQL кода, связанные с троичной (а не двоичной) логикой этого языка программирования. Уровень материала - 200.

Перейти к статье.
добавлено: 30 сен 12 просмотры: 1509, комментарии: 0



Параметризация запросов. Ваш лучший друг?

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

Перейти к статье.
добавлено: 26 авг 12 просмотры: 2908, комментарии: 18



Нужен ли нам сервис SQL Server Browser?

Статья тщательно и всесторонне изучает такой вспомогательный сервис как обозреватель SQL Server (SQL Server Browser). Рассматриваются причины его возникновения и изначальная идея, заложенная в данный инструмент. С помощью специального тестового клиента (C#) оценивается помощь указанного сервиса в подключении клиентов сначала к экземпляру по умолчанию, а затем к именованному экземпляру. Выявляется связь между портами прослушиваемыми именованными экземплярами и названиями этих экземпляров. Так же рассматриваются побочные вопросы: форматы строк подключений различных клиентов, опция Listen All свойств протокола TCP/IP и ее влияние на допустимые IP-адреса сервера, опции Active/Enabled того же протокола и почему для включения/выключения отдельного IP-адреса сервера потребовалось две опции, а не одна. Завершается материал рассмотрением вопросов безопасности связанных с сервисом SQL Server Browser, а так же практическими выводами по вопросу какое состояние обсуждаемого сервиса является наиболее приемлемым для типичной SQL-системы. Уровень материала - 100.


Перейти к статье.
добавлено: 01 авг 12 просмотры: 3305, комментарии: 0



Механика индексных представлений.

Предлагаемый материал подробно разбирает структуру, внутреннее устройство и ручное/автоматическое применение индексов созданных на представлениях. Освещаются распространенные "мифы" и заблуждения, связанные с созданием и, особенно, применением индексов указанного типа. Рассматриваются хинты таблиц и запросов влияющие на их работу, и отдельно разбираются "подводные камни" ожидающие нас в случае применения таких хинтов. Объясняется причины, по которым индекс на представлении зачастую игнорируется оптимизатором запросов при построении плана исполнения. Особый упор статья делает на сходстве и различии в работе индексов на представлении в редакциях Enterprise и не-Enterprise SQL Server одной и той же версии. Уровень материала - 200.

Перейти к статье.
добавлено: 09 июл 12 просмотры: 1704, комментарии: 0



Версия сервера, версия базы данных и уровни совместимости.

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

Перейти к статье.
добавлено: 26 июн 12 просмотры: 2635, комментарии: 0



Настройка диалога открытия/сохранения файлов Management Studio «под себя».

Очень короткая заметка поясняет как добавить на панель Places Bar диалогов открытия/сохранения файлов студии ваши собственные избранные папки. Такая настройка предоставит вам возможность перемещаться между указанными папками буквально одним щелчком. Это удобно, повышает эффективность труда администратора/разработчика и, отчасти, ведет к упорядочиванию файлов по проектам (папкам) к которым они относятся, вместо складирования их в одну папку «по умолчанию». Уровень материала - 100.

Перейти к статье.
добавлено: 07 июн 12 просмотры: 1893, комментарии: 0



К вопросу уникальности индексов.

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

Перейти к статье.
добавлено: 04 июн 12 просмотры: 2023, комментарии: 4



Блоки try-catch для программистов на T-SQL.

В статье обсуждается система перехвата ошибок, а именно ее конкретная реализация в языке T-SQL. Изложение ведется для "чистых" T-SQL программистов, не имеющих опыта работы с тем же механизмом в каких-либо высокоуровневых языках. Тщательно обсуждаются концепции обработанной ошибки и ее повторной генерации, а так же обсуждаются технические нюансы такой генерации. Рассматриваются уровни серьезности ошибок и возможности по перехвату ошибок периода компиляции, а не только периода исполнения. Оцениваются варианты работы того же механизма с транзакциями, обсуждается важность и необходимость функции XACT_STATE и опции XACT_ABORT при такой работе. Обсуждаются общие вопросы дизайна T-SQL кода: при каких обстоятельствах применение перехвата ошибок уместно, и когда оно избыточно, нужно ли перехваченное исключение "глотать" или же "проталкивать наверх" и т.д. Приводится готовый шаблон хранимой процедуры составленный с учетом всех таких обсуждений. Уровень материала - 200.

Перейти к статье.
добавлено: 10 май 12 просмотры: 2897, комментарии: 0