(Возврат на основную страницу)
При работе с базами данных (БД) Microsoft SQL Server 2000, многие отмечали сбои в работе Microsoft Visio. Во время выполнения мастера приложение могло прекратить отвечать на запросы или выдать неожиданные результаты. Указанные недостатки помогает устранить новое обновление, содержащее усовершенствованный драйвер для БД SQL Server 2000.
Включенный в Visio 2000 SR-1 драйвер предназначался для взаимодействия с серверами БД SQL 4.2, 6.x и 7.0. Вместе с тем, вошедшие в SQL Server 2000 нововведения оказывали влияние и на особенности разработки БД в Visio. Приведенный ниже список содержит некоторые новые возможности SQL Server 2000, для реализации которых предназначается новый драйвер.
Поддерживаемое обновление для Visio 2000 SR-1, которое должно позволить реализовать все перечисленное, уже доступно. Его можно загрузить с Web-узла Microsoft по адресу http://download.microsoft.com/download/visio2000enterprise/update/2000/win98me/en-us/Q286026.EXE. или с нашего сайта вместе с остальными исходниками номера.
Мэри В. Хук (Mary V. Hooke)
Оптимизируйте производительность базы данных с помощью индексов и статистической информации
Скорость почти всегда является важной характеристикой при работе с базами данных (БД). На производительность БД влияют многие вещи: операционная система, аппаратные характеристики (такие как память и дисковое пространство) и дизайн работающих с БД приложений. Дизайн вашей БД также играет большую роль.
В этой статье я расскажу о том, как можно повысить производительность SQL Server. Я сконцентрируюсь на возможностях SQL Server 2000 по построению индексов на представлениях, а также на правильной настройке индексов с помощью мастера настройки индексов (Index Tuning Wizard, ITW). также мы обсудим, как максимально использовать в запросах преимущества индексов и статистической информации.
Вопросы производительности нужно принимать во внимание еще в начальной фазе проектирования БД. Однако можно вносить изменения и в рабочий вариант проекта — производительность заметно повысится. Индексы — это объекты БД, позволяющие оптимизировать поиск и сортировку данных. Правильно настроенные индексы могут оказать огромный эффект на время выборки и занесения данных в БД. ITW поможет вам определить, как нужно реализовать индексы для достижения максимальной производительности.
ITW выдает рекомендации по оптимальной настройке индексов для предоставленной нагрузки (workload). Нагрузка — это сценарий или план, который вы сохраняете в отдельном файле. Рекомендации ITW жестко связаны с нагрузкой, так что важно прежде всего подготовить корректную информацию. Вероятно простейший и наиболее совершенный способ подготовки нагрузки для ITW — сохранение плана, созданного утилитой SQL Profiler. SQL Profiler, появившийся в версии 7.0, фиксирует всю активность сервера, используя указанные вами фильтры и критерии. Создавая с помощью SQL Profiler план нагрузки для ITW, убедитесь, что фиксируете характерную работу с БД. Другими словами, для записи нагрузки выберите время, когда интенсивность работы не слишком мала и не слишком велика. Какой период времени работы потребуется фиксировать, зависит от специфики вашей системы. В каких-то случаях для сбора адекватных сведений о работе системы понадобится несколько часов. В других — вам потребуется несколько дней для записи всех стандартных вариантов работы с БД.
Брайан Моран (Brian Moran)
Когда я с помощью SQL Server Profiler отслеживаю выполнение процедуры, включая выполнение каждого ее оператора, он генерирует события TraceAutoPause. После этого прекращает трассировку до появления события TraceAutoRestart. Почему SQL Profiler генерирует события TraceAutoPause?
Иногда профайлер не может достаточно быстро воспринимать трассируемую информацию. Вместо того чтобы замедлять работу SQL-сервера или захватывать лишь отдельные операторы (это было бы хуже, чем явно указывать на приостановку трассировки), он пре- кращает выдачу событий, до тех пор пока не восстановит способность читать все события из своей очереди.
Кэлен Делани (Kalen Delaney)
Сделайте проверку обновлений в представлениях более гибкой
Возможно, Вам известно, что в SQL Server 2000 появилась новая функциональность— триггеры INSTEAD OF. Эти триггеры позволяют определить процедуру, которая будет выполняться вместо определенной операции обработки данных. Например, можно проверить, что изменения цены в таблице Titles базы данных Pubs соотвествуют определенным требованиям. Для этого можно написать триггер AFTER (стандартный тип триггера), который сравнивает старую и новую цену и вызывает откат в случае недопустимого изменения, а можно написать триггер INSTEAD OF. Триггер INSTEAD OF выполняется до внесения изменений, так что если эти изменения недопустимы, больше ничего делать не нужно. Однако если изменения внести можно, триггер INSTEAD OF должен выполнить перестроенный оператор изменения данных. Как уже говорилось, в некоторых ситуациях для выполнения одних и тех же действий триггеры INSTEAD OF и AFTER взаимозаменяемы, но подлинная ценность триггеров INSTEAD OF в том, что они позволяют обновлять некоторые представления, которые иначе обновить нельзя. INSTEAD OF — по сути, единственный тип триггеров, который может применяться для всех типов представлений. Например, обычно нельзя выполнить DELETE для представления, основанного на соединении данных. Но вы можете написать триггер INSTEAD OF DELETE. Поскольку у такого триггера есть доступ к строкам представления, которые были бы удалены, если бы представление было настоящей таблицей, он может использовать эту информацию для обновления в таблицах, на которых основано представление. Удаленные строки можно получить в таблице Deleted. Аналогично, при применении триггера INSTEAD OF UPDATE или INSTEAD OF INSERT можно получить доступ к новым строкам через таблицу Inserted.
Джошуа Трупин (Joshua Trupin)
Чтобы объяснить, чем одни соединения отличаются от других, я написал это краткое руководство. Объяснения сопровождаются примерами, в которых приводится код, а также результаты соединения таблиц authors и publishers базы данных Pubs.
Соединения бывают трех типов: внутренние (inner join), внешние (outer join) и перекрестные (cross join). Кроме того, внешние соединения делятся на левые (left outer join), правые (right outer join) и полные (full outer join).
Тони Бейн (Tony Bain)
Меня удивляет число разработчиков приложений, не принимающих во внимание необходимость контролировать исходный код создания объектов баз данных (БД). Я написал эту статью, чтобы показать, как контроль изменений может быть использован для объектов БД.
Сейчас многие разработчики вносят изменения в код при помощи Query Analyzer или (ужас!) непосредственно из Enterprise Manager. Так как указанные инструменты позволяют делать это без особого труда, необходимость в контроле изменения очевидна.
Возможно, самое распространенное средство контроля версий для программистов, работающих в Visual Studio, — Visual Source Safe, VSS. Включив инструменты контроля в средства разработки Visual Studio, Microsoft облегчила их применение, но среди программ для разработки SQL Server таких инструментов пока нет. К счастью, Visual Source Safe можно использовать не только в составе программного комплекса.
Стив Джонс (Stive Jones)
Я часто критикую разработчиков, включающих работу со строками в хранимые процедуры и запросы. На мой взгляд, использование T-SQL, как правило, — напрасная трата ресурсов. Зачастую работа со строками может осуществляться в компонентах промежуточного уровня или на клиенте, позволяя разумнее использовать ресурсы. Вообще-то, мне гораздо легче установить дополнительный Web-сервер или сервер приложений и кластеризировать их, сделать то же самое с сервером баз данных (БД). SQL Server 2000 конечно же упрощает эту задачу за счет применения распределенных представлений, но не делает ее элементарной.
Хватит об этом. Пора рассказать о работе со строками. Что это такое? Зачем это нужно? В каких случаях ее выполнять? Я дам ответы на все эти вопросы. Вместе с тем, я не могу решить все возможные проблемы и никогда в своих статьях не предлагаю общих способов их решения. Мне нравиться рассказывать и предлагать определенные решения, которыми Вы сможете воспользоваться в конкретной ситуации. Я опишу свою недавнюю проблему, которая потребовала работы со строками в БД, что, по-моему, было оправданным решением. Кроме того, в конце статьи я опишу основные ситуации, в которых можно и нужно работать со строками.