Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Состояние и перспективы Microsoft SQL Server

Состояние и перспективы Microsoft SQL Server Алексей Шуленин, Microsoft

Новые и обновленные утилиты SQL Enterprise Manager Интегрирован с MMC, включает средства взуализации из Visual Data Tools (создание структуры, протягивание отношений, редактирование данных в таблицах по ходу дела, ...) Больше wizard'ов, хороших и разных: Создание базы, поддержка базы, управление предупреждениями (alerts), импорт/экспорт данных, тиражирование, хранимые процедуры, ... Index Tuning Wizard- моделирование рабочей нагрузки (множества запросов и определение наиболее подходящих индексов. Взаимодействует с Query Optimizer. Не учитывает одновременных пользователей. Нельзя администрить предыдущие версии SQL Server- они не понимают новую модель SQL-DMO Использовать старый Enterprise Manager или написать свой snap-in для 4.2, 6.х SQL Server Agent (бывший SQL Executive) Основные понятия: jobs (бывшие tasks), operators и alerts Job- последовательность шагов Каждый шаг - batch на T-SQL Выбор действия в зависимости от удачного / неудачного выполнения шага (выход с сообщением, переход на шаг № ...) Время и частота выполнения задач планируется администратором Operator - лицо, которому посылается сообщение по сети, e-mail или пэйджингу о результатах выполнения job или наступления alert Назначение выполнения job и/или отправки сообщения для operator на возникновение ошибки с определенным номером в определенной БД на достижение порогового значения каким-либо показателем в SQL Performance Monitor SQL Server Profiler (бывший SQL Trace) В отличие от Trace, кот. использовал ODS, Profiler встроен в Engine и обладает большими возможностями Может смотреть, что делают SP, проигрывать ранее записанную последовательность действий, имеет лучшие возможности фильтрации и группирования событий SQL Query Analyzer (бывший isql/w) Улучшенный Showplan и графический план выполнения запроса Выделение языковых конструкций цветом Настройка вида результатов для удобочитаемости (grid)

Механизм хранения Механизм хранения управляет размещением данных на жестких носителях распределением памяти вводом / выводом контролем одновременного доступа к данным журналированием транзакций резервным копированием и восстановлением Цель - полностью отделить реляционный engine (процессор запросов) от механизма хранения и заставить QP общаться с ним только через уровень OLE DB

Базы данных и файлы Понятие "device" уходит Device => file, БД может лежать на нескольких файлах, обратное теперь неверно БД и журнал транзакций теперь обязательно лежат на разных файлах (.mdf / .ndf и .ldf) Всего три типа файлов в БД: primary (.mdf)- cтартовая точка БД, содержит данные + указатели на остальные файлы, может быть только один на БД secondary (.ndf)- необязателен, содержит данные, не поместившиеся в primary, в одной БД может быть много log file (.ldf)- как минимум, один, содержит transaction log Объекты БД не могут быть приписаны конкретному файлу, для этих целей используется группа

Базы данных и группы файлов Понятие "сегмент" уходит Файлы могут объединяться в file groups для удобства размещения данных на определенные диски и администрирования Группе файлов могут назначаться отдельные таблицы, индексы и данные типов text, ntext, image Каждый файл может быть членом только одной группы Два типа file groups Default- для primary файлов, системных таблиц и файлов, для которых группа не определена. Всегда одна на БД User-defined- для остальных. Может быть несколько групп на БД Logи не являются частью групп и управляются отдельно от базы

Динамическое управление размером

Новые форматы хранения

Хранение text и image

Полнотекстовый поиск Расширения DML Предикаты CONTAINS, FREETEXT, функция RELEVANCE, ... SELECT publication, pub_date, writer FROM magazines WHERE CONTAINS ( article, ' Edison NEAR(WORD,20) "electric%" ' ) Этапы развития Ноябрь 1997- OLE DB провайдер для Index Server 2.0- поиск данных в файловой системе Март 1998- OLE DB провайдер для Site Server 3.0- поиск по документам на Web 2-я половина 1998 г.- поиск по BLOB-полям в Sphinx Возможности легко доступны из приложений

Set rstMain = CreateObject(ADODB.RecordSet) rstMain.Open "SELECT DocAuthor,
FileName FROM SCOPE(' DEEP TRAVERSAL OF ( "D:Sphinxtsqlspecs") ') WHERE size > 50000", "Provider = MSIDXS;"

Блокировка уровня записи

Key Range Locking

Динамическая блокировка

Log Manager

Резервное копирование

Производительность SQL Server 7.0 при on-line backup

Кое-что новое в T-SQL В связи с введением распределенных запросов имя состоит из 4-х частей Отложенное разрешение имен Можно создать таблицу и тут же сослаться на нее в хранимой процедуре Новое в поддержке курсоров Тип Cursor, переменные можно передавать как параметры Процедуры sp_cursor_list, sp_describe_cursor_columns / _tables Процедуры управления заданиями и предупреждениями sp_add_alert, sp_add_job, sp_add_operator, ... Процедуры управления SQL Profiler xp_trace_* Добавлены новые указания оптимизатору (hash, merge, loop, robust plan, ... ) для операторов DML Новые clauses TOP, PERCENT, WITH TIES для SELECT ALTER PROCEDURE (TRIGGER, VIEW) без изменения прав Опция DROP COLUMN появилась в ALTER TABLE Добавлены новые функции Системные: ObjectProperty, ColumnProperty, DatabaseProperty, ... Статистические: StDev, Var, ... Секьюрные: Is_Member, Is_SrvRoleMember, ... Операции над датами (+/-) Новые типы данных Unicode'овские nchar, nvarchar, ntext длина char, varchar, binary, varbinary- до 8К Тип Uniqueidentifier (GUID), поле ROWGUIDCOL и функция NewID() Substring от данных TEXT и IMAGE

Новое в безопасности Улучшенная интеграция с безопасностью NT Аутентификация средствами NT (как текущий пользователь- без пароля, как другой- login+pwd) Mixed (возможна аутентификация средствами SQL Srv) Полная поддержка пользователей, групп и ролей Роли могут быть приписаны пользователям и группам NT, а также пользователям Sphinx Роли могут быть вложены Прикладные роли для 3-уровневых систем Позволяют назначать права при доступе через приложение, а не isql Гибкая гранулярность прав и системных ролей Предопределенные роли ServerAdmin, SecurityOfficer, ... Поддержка делегирования в NT 5.0 На 2-м сервере не как удаленный пользователь, а под тем же именем Простое и мощное администрирование

Новое в QP Multi-index - одновременное использование нескольких индексов (в т.ч. над одной таблицей) пересечение двух множеств RID по каждому индексу для получения результирующего множества (например, SELECT * FROM orders WHERE cust_id = 987 and order_value >= 10000- индексы по cust_id и order_value) создание covering index из нескольких имеющихся, которые в отдельности не являются covering для данного запроса (covering index позволяет читать значения колонок с leaf-уровня, не залезая в саму таблицу) Merge Join Получить row из outer table Получить row с таким же ключом из inner table Если найден, далее- по inner table, если нет- по внешней Выглядит как обычная nested iteration, но проходится за один шаг и потому выполняется быстрее Hash Join Хэш-функция - свертка ключа, на выходе- значение меньшего размера, основное требование- равномерное распределение, главное преимущество- доступ к записи за одно обращение к таблице Пример - алфавитная записная книжка, первая буква- хэш-функция, буквенные секции - букеты Применяется, когда не задан порядок сортировки или нет подходящих индексов Прочитать меньшую таблицу, нарезать ключи и RID в букеты хэш-таблицы Читать большую таблицу. Хэшировать ключ, проверить хэш-таблицу, повторить. Hash aggregation (sum, ...) Из входной таблицы хэшировать ключ в букет Если он там уже лежит, вычислить агрегат Зациклить, в конце выдать окончательный агрегат

Оптимизация запросов Запросы оптимизируются по условной стоимости Учитываются факторы количества операций чтения/записи и времени работы процессора А также целевые записи (напр., построить оптимальный план для выбора первых 10 записей) При этом используются Статистика по хранимым данным (плотности и гистограммы) Индексы (например, наличие уникального индекса о чем-то говорит?) Ограничения (DRI, сonstraints, nulls) Constraints и разбиение данных Имеем несколько таблиц: январь, февраль, март Построили совокупный view- union Делаем из него select за один месяц, QP ищет только в одной таблице (при условии, что на нее был определен месячный constraint) Auto partitioning при вводе by value между несколькими таблицами - в следующей версии Обработка массивных обновлений- QP поддерживает индексы При массовых insert, update, delete изменения сортируются по индексу и применяются за один проход (на один индекс) Технология используется в ВСР, DBCC

Модель оптимизации Определение самого дешевого дерева на основе пула альтернатив Изменение порядка join'ов (R JOIN S) JOIN T = (R JOIN T) JOIN S Раннее применение условий фильтрации Классы эквивалентности для колонок и другие неявные предикаты Если a=b, то sort(a), очевидно, такой же, как sort(b) Функциональная избыточность Group(e#,ename) = group(e#) ...

Параллельная обработка запросов Параллельная обработка- одновременное выполнение одного запроса несколькими процессорами Асинхронный ввод/вывод, обслуживание клиентов на разных потоках не рассматривается Дает преимущество только на машинах с >1 СPU Запрос компилируется для параллельного выполнения, формируется параллельный план Единый параллельный план для нескольких процессоров К операторам последовательного плана добавлены Exchange Operators (Distribute, Gather, Repartition)

Exchange Operator

Степень параллелизма Кол-во процессоров, на которых выполняется данный шаг плана запроса Может отличаться для разных шагов, например, при вычислении результирующего агрегата из промежуточных DOP=1 Insert / update / delete выполняются на одном потоке Но их части, относящиеся к SELECT могут выполняться с DOP>1 Выигрывают долгоиграющие запросы с массивными агрегатами, joinами, unionами и т.д. Не выигрывают OLTP-запросы Число одновременных пользователей >> числа процессоров - предпочтительнее межзапросный параллелизм

Настройка DOP В конфигурации max DOP меняется от 0 до 32 Default=1- отключить параллельное выполнение Default=0 (автоматическая настройка в зависимости от конкретного запроса Учет затрат на инициализацию параллельного плана, перемещение данных между потоками При высокой загрузке, росте коннектов, нехватке памяти Sphinx будет стремиться понизить DOP Сost threshold of parallelism- генерировать параллельные планы только для запросов с более высокой стоимостью (конфигурация 0-32767, default=5) Showplan показывает Exchange-итераторы DOP каждого конкретного запроса можно видеть в SQL Profiler

Сравнение производительности QP

Универсальный доступ к данным Данные хранятся по-разному, а нужны зачастую все и сразу Руководитель сидит в MS Project, хочет прочитать переписку (e-mail), поднять документ (файловая система) увидеть баланс (СУБД), послушать музыку... Качать это все в базу всякий раз, чтобы воспользоваться ее механизмами обработки? Потом обратно, а источники уже могли независимо измениться... Целостность? QP СУБД заведомо не оптимизирован под новые типы Выход - не универсальное хранение, а универсальная обработка Никто, лучше самих данных, не знает, как их обрабатывать OLE DB - набор стандартных интерфейсов: что должна уметь делать компонента обработки данных Аналогия с ODBC, но для данных произвольной природы OLE DB является "родным" интерфейсом Sphinx QP общается с Data Storage через OLE DB DB-Lib эмулируется средствами OLE DB и больше развиваться не будет

Универсальный доступ к данным (3)

Гетерогенные запросы

Распределенные операции в Sphinx

Sphinx и Data Warehousing

Объектная модель службы преобразования данных

Понятие пакета DTS

DTS Designer в Sphinx

Microsoft Data Cube Service Базовая архитектура: Кэшировать не дисковые страницы, а результаты запросов и метаданные Мгновенный ответ на кэшированные запросы Алгоритмы выведения пропущенных данных и преобразования запросов Агрегация, фильтрация, комбинирование Эффективное распределение обработки запросов и промежуточных вычислений между клиентом и сервером Объединяет серверные и настольные платформы Унифицирует доступ к многомерным данным из Excel, Plato, SQL Server ...

Microsoft
Алексей Шуленин
Тел.: (095) 967-8585 Факс (095) 967-8500


  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте