2000 г

Настройка SQL Server 6.5 на обработку запросов c высокой производительностью

Журнал "SQL Server Magazine ONLINE", #01/2000
Морис Льюис

Администраторам баз данных наверняка приходилось настраивать сервер базы данных на быструю и эффективную обработку посылаемых приложениями запросов. Независимо от того, кем было разработано приложение, - сторонними фирмами или своей командой программистов, на программу лучше смотреть, как на черный: Нормализовано к [0–255]
: Нормализовано к [0–100]
ящик, в котором ничегоНичто— категория, фиксирующая отсутствие, небытие определённой сущности, или отсутствие, отрицание бытия вообще, активное начало негации, негативности вообще. изменить нельзя. Выполнить настройку производительности на уровне сервера можно различными способами: улучшением организации ввода/вывода данных на диски, увеличением памяти или созданием и модификацией индексов. Но с другой стороны, производительность прикладной системы зависит от конструкции базы данных и от написанных для нее запросов. Те разработчики приложений, использующих базы данных, которые понимают, каким образом SQL Server оптимизирует и обрабатывает запросы, обычно создают программное обеспечение, обладающее наилучшей производительностью. И у них не возникает проблем и неприятных сюрпризов при расширении масштаба приложения от небольшой системы до крупного проекта. Существует несколько простых приемов для SQL Server 6.5, которые обеспечат оптимальную производительность, если применить их к базе данных и к запросам.

Что оптимизировать?

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

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

В качестве примера рассмотрим простое объединение двух таблиц:

SELECT .....
......

Один из клиентов спросил автора статьи, почему этот запрос выполняется так долго. После того, как автор статьи запустил утилиту SHOWPLAN и взглянул на план запроса, ответ стал очевиден: таблица Payroll_Checks не имела индекса по столбцу empId. В таблице Employees содержалось около 10000 записей, а таблицу Payroll_Checks составляли 750 000 строк. Поскольку индекс отсутствовал, SQL Server сканировал таблицу Payroll_Checks 10 000 раз. Когда автор прервал выполнение запроса, сервер уже выполнил 15 миллионов логических операций ввода/вывода. Создание индекса по столбцу сократило время обработки до секунд, а число логических операций ввода/вывода до приблизительно 750000.

Магический размер строки

Первый шаг в минимизации операций ввода/вывода - убедиться в том, что строка сделана настолько компактной, насколько это возможно. В SQL Server строки не могут простираться на несколько страниц. В SQL Server 6.5 заголовок страницы не может превышать 32 байтов, а данные - занимать более 2016 байтов. Каждая строка данных содержит также область переполнения строки. Максимально допустимая длина отдельной строки составляет 1962 байта, включая область переполнения. Это ограничение выбрано с таким расчетом, чтобы вставляемая или удаляемая строка базы данных смогла бы также поместиться в строку журнала транзакций. Поэтому, хотя длина одной строки и не превысит 1962 байтов, две строки могут полностью занять все 2016 байтов, отведенных под данные на странице. Следствием этого является тот факт, что определенные значения длины строки могут существенно понизить процент операций ввода/вывода. Например, если длина строки составляет 1009 байтов, то на странице уместится только одна строка. Если же уменьшить длину строки всего только на один байт, то на страницу поместятся две строки. То есть, можно наполовину снизить обращения к вводу/выводу для таблицы, убрав всего один байт! Аналогичные ситуации имеют место для следующих размеров строк: 673, 505, 404 байтов и т.д. Если вам удастся сохранить размер строки ниже указанных пределов, то тем самым вы уменьшите долю операций ввода/вывода соответственно на 33, 25 и 20 процентов.

Все строки могут иметь несколько байтов переполнения, которые следует учитывать в расчетах. Отметим, что переполнение строк переменной длины больше, чем переполнение строк фиксированной длины. Чтобы выяснить, имеется ли у вас на страницах неиспользуемое место, запустите DBCC SHOWCONTIG. Это позволит вам определить среднюю плотностьПлотность— скалярная физическая величина, определяемая для однородного вещества массой его единичного объёма. Для неоднородного вещества плотность в определённой точке вычисляется как предел отношения массы тела (m) к его объёму (V), когда объём стягивается к этой точке. Средняя плотность неоднородного вещества есть отношение ~m/V. страницы и среднее число свободных байтов на странице. Наиболее вероятными кандидатами на звание "чемпиона по расточительству пространства" будут те таблицы, у которых среднее число свободных байтов близко к размеру строки.

Аналогичным образом, ситуации неэкономного использования памяти часто возникают у таблиц, в которых было произведено удаление большого количества строк, и отсутствуют кластеризованные индексы. В результате удалений на страницах образуются пустые места, а поскольку SQL Server не может повторно использовать пространство страницы, если у таблицы нет кластеризованного индекса, то все новые строки данной таблицы располагаются на последней странице. В результате этого страницы такой таблицы будут заполнены менее, чем на 100 процентов, что увеличит число операций ввода/вывода. Прежде чем пытаться ужать длину строкиСтроки (укр. Строки) — село в Теофипольском районе Хмельницкой области Украины. подобной таблицы, создайте для нее кластеризованный индекс. После этого запустите еще раз DBCC SHOWCONTIG, чтобы увидеть, сколько у таблицы остается свободного места.

Непредвиденный ввод/вывод при обновлениях

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

UPDATE ....
     9102 .....

Однако это обновление может потенциально стать причиной колоссального числа записей в журнал транзакций. ПроблемаПроблема (др.-греч. ) — положение, причинность, условие, вопрос, объект, который создаёт затруднение, побуждает к действию и связан с избыточностью или недостатком чего либо для сознания субъекта,например: процессора (движителя, калькулятора, компьютера,специалиста), знаний, ресурсов, регламента (упорядоченности, алгоритма, программы) и побуждает к действию или ограничивает его и соответственно неразрешён или нежелателен. В природе, вне деятельности человека, проблемы находят естественное разрешение и в последовательности движения форм материи есть этап в наблюдениях формализуемый человеком. Отличие природного процесса, разрешение проблемы как результат законов природы. Сущность проблемы для человека такова, что требует анализа, оценки, формирования идеи, концепции для поиска ответа (решение проблемы) с проверкой и подтверждением опытом. В природе это: Вода течёт вниз. Ветер качает деревья. Вода камень точит. и др., что естественно и непротиворечиво. ПРОБЛЕМОЙ преимущественно называется вопрос, не имеющий однозначного решения (степень неопределённости). Неопределённостью проблема отличается от задачи. Совокупность возможных вопросов взаимосвязанных объектом рассмотрения называется проблематикой. проистекает из способа, которым SQL Server структурирует серии операций для предотвращения нарушения ограничений целостности. Приведем простой пример:

UPDATE .....

Если au_id является первичным (или уникальным) ключом, то обновление первой строки может привести к нарушению ограничения уникальности, особенно если au_id - монотонно возрастающая величинаВеличина — одно из основных математических понятий, смысл которого с развитием математики подвергался ряду обобщений.. Но ведь оператор UPDATE корректен, так каким же образом SQL Server сможет выполнить его без нарушения ограничений? Здесь SQL Server прибегает к использованию режима отсроченного обновления, при котором операция обновления разбивается на две части: сначала удаляется старая строка, а затем вводится новая, содержащая требуемое значение.

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

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

SQL Server 6.5 способен выполнять операции обновления четырьмя различными способами. Самым быстрым является прямое обновление замещением. При этом не происходит никаких перемещений, а в журнал транзакций помещается единственная запись, содержащая информацию о том, какие байты получили новые значения. Самым медленным способом является отсроченное обновление, которое было описано выше. Оба других способа представляют собой прямые обновления (то есть никаких лишних записей в журнал транзакций не производится), но запись новых значений происходит не на то же самое место, на котором помещались обновляемые данные. Поэтому некоторые перемещения данных все-таки имеют место. Чтобы обновление, которое вы собираетесь сделать, проводилось в режиме прямого обновления замещением, должен быть исполнен такой длинный список условий, что в данной статье просто не представляется возможным все это изложить. В "SQL Server 6.5 Books Online" (BOL) есть раздел, называемый "Прямой режим обновления" (The updateUPDATE— оператор языка SQL, позволяющий обновить значения в заданных столбцах таблицы. mode is direct). В нем перечислены некоторые условия, которые непременно должны выполнены, чтобы SQL Server произвел обновление прямым замещением. Однако в BOL иногда путаются прямое обновление и замещение, что приводит к некорректности некоторых рассуждений. Самым полным опубликованным описанием различных типов обновлений признана книга "Внутри SQL Server 6.5" (Inside SQL Server 6.5) Рона Саукапа, выпущенная в 1997 году издательством Microsoft Press.

Два основных условия, которые непременно должны быть выполнены, чтобы обновление проводилось в прямом режиме методом замещения, заключаются в следующем. Во-первых, нельзя обновлять ключевые столбцыСтолбцы (белор. Стоўбцы, польск. Stopce)— город в Минской области Белоруссии, административный центр Столбцовского района. Город спутник Минска. Расположен на правом берегу реки Нёман. Население— 15,4 тыс. человек (2011). Расположен в 65км к юго-западу от Минска на автомобильной дороге Минск— Барановичи. в кластеризованном индексе, а во-вторых, таблица не может быть помечена для репликации. Модификации кластеризованного индекса заставляют SQL Server перемещать строку на новое физическое место, отвечающее ее содержанию. А это всегда сопровождается сначала удалением, а затем вставкой строки. При репликациях происходит чтение журнала и формирование команд ODBC для подписчиков. Поэтому комбинация удаление/вставка представляется наиболее простым описанием операции обновления. Обе ситуации исключают обновление прямым замещением.

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

Прекрасные результаты приносит знаниеЗнание— форма существования и систематизации результатов познавательной деятельности человека. Знание помогает людям рационально организовывать свою деятельность и решать различные проблемы, возникающие в её процессе. этих ограничений и их учет при конфигурировании базы данных, особенно когда вы стремитесь выжать все возможное из производительности при обновлениях. Применение методов, обеспечивающих прямое замещение, позволяет сэкономить на вводе/выводе при записи в журнал, на вводе/выводе при чтении логических страниц журнала, и кроме того, сберечь время на резервировании и восстановлении журнала, а также при восстановлении базы данных. При проектировании баз данных полезно придерживаться стандарта, в соответствии с которым следует использовать только столбцы фиксированной длины, не содержащие неопределенные значения. Если вы, читатель, программируете, то помните о свойствах обновляемых столбцов и учитывайте их влияние на производительность при написании операторов UPDATE. Кроме того, тщательно выбирайте момент для запуска этих операторов.

Аргументы поиска

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

Имя Столбца      оператор      [Имя Столбца или константа]

где оператором может быть один из следующих знаков сравнения =, <, >, <=, <=. Аргументы поиска могут быть соединены булевским оператором AND. Фраза BETWEEN ..... AND также допустима, поскольку задаваемое ею условиеУсловие— категория философии, обозначающая отношение предмета к окружающей действительности, явлениям объективной реальности, а также относительно себя и своего внутреннего мира. Предмет выступает как некое обусловленное, а условие— как относительно внешнее предмету многообразие объективного мира. может быть по-другому сформулировано с помощью операторов >= и <=. Ниже приведено несколько примеров аргументов поиска:

LastName = .....
LastName  >= .....
OrderDate .....

Обратите внимание на то, что не был упомянут ни один отрицательный оператор. Для обработки запроса, содержащего оборот WHERE (ProductId <>2) SQL Server просматривает каждую строку, проверяя, не равно ли ее значение двум. Даже индекс по ProductId не так уж сильно облегчает ситуацию, если только строки, содержащие значение 2 не составляют весьма незначительную часть таблицБогуслав Таблиц (словацк. Bohuslav Tablic (Tablicz); 6 сентября 1769, Ческе Брезово, Словакия — 21 января 1832, Костолне Моравце, Словакия) — чешско-словацкий писатель, священник, деятель возрождения словаков-лютеран, подобно тому как Бернолак является деятелем возрождения словаков-католиков. Таблиц учредил в Пресбурге «Общество чешско-словацкой литературы и языка» с целью издавать на понятном народу чешском языке простонародные и школьные книги. Учреждение этого общества было причиной если не процветания словацкой литературы, то появления в пресбургском лицее кафедры словацкого языка, для чего общество собрало большой капитал. Занять кафедру приглашен был Юрай Палкович. Общество скоро распалось, но кафедра продолжала существовать. Молодёжь имела возможность слушать историю своего народа на родном языке. В 1812 г. Таблиц был одним из основателей нового «Литературного общества Горных Городов» (Bergstdte), задававшегося прежней целью; результатом было открытие кафедры словацкого языка и в Банской Штьявнице. Это общество также скоро распалось. Таблиц писал очень много и по различным специальностям. Первое место занимают его «Poesie» (Вацов, 1806-1812). К ним приложены биографии известных словацких деятелей. Его «Sloventi verovci» (Вацов, 1805-1809) — отрывки из произведений древних словацких писателей, в то время почти уже позабытых. Перу Таблица принадлежит также много книг для народа, изданных двумя упомянутыми обществами.ы. Почти во всех случаях SQL Server выполнит этот запрос просмотром таблицы, а не индекса.

С точки зрения оптимизации запросов оператор LIKE почти столь же неэффективен, как и оператор NOT. Если в вашем запросе присутствует, например, такой оборот

WHERE  LastName LIKE '%Мс%',

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

WHERE  LastName LIKE 'Le%'.

Разница заключается в том, что этот критерийКритерий (гр. kriterion - признак для суждения) — признак, основание, мерило оценки чего-либо. Особо выделяют критерии истинности знания. Различают логические (формальные) и эмпирические (экспериментальные) критерии истинности. Формальным критерием истины служат логические законы: истинно всё, что не заключает в себе противоречия, логически правильно. Эмпирическими критериями истинности служит соответствие знания экспериментальным данным. Вопросом о критериях истины, выставляемых разными философскими школами, занимается теория познания или гносеология. поиска логически эквивалентен выражению

WHERE LastName >= 'Le' AND LastName < 'LF',

которое по определению представляет собой аргумент поиска.

Вообще говоря, аргументы поиска помогают запросам тем, что облегчают оптимизатору запросов определение степени селективности индекса при обработке данного запроса. ОборотыОборот (цикл, круг)— единица измерения угла, либо фазы колебаний., использующие операторы =, <, >, являются именно такими аргументами поиска, поскольку они ограничивают область поиска только строками, попадающими в результирующий набор. Оператор = ограничивает область поиска до единственной строки, а операторы < и > сужают ее до некоторого диапазона.

Селективность оборота отражает, насколько эффективно аргумент поиска сужает область просмотра. Этот показатель может быть измерен отношением числа возвращаемых строк к суммарному количеству строк в таблице. (Приведенное определение нарочно немного упрощено, для того чтобы сделать обсуждениеДиалог (греч. — первоначальное значение— разговор, беседа двух людей) в обыденном смысле— литературная или театральная форма устного или письменного обмена высказываниями (репликами) в разговоре между двумя и более людьми;— в философском и научных смыслах— специфическая форма и организация общения, коммуникации. Традиционно противопоставляется монологу. более наглядным.) Низкий процент означает, что оборот обладает высокой селективностью; напротив, высокий процент соответствует слабой селективности. Поскольку оператор AND коммутативен (то есть, a AND b означает то же самое, что и b AND a), оптимизатор запросов может выбирать для обработки запроса наиболее селективный оборот из числа оборотов, объединенных оператором AND. Это оправдано, ведь выбор наиболее селективного оборота способен заметно снизить объем выполняемых операций ввода/вывода.

В качестве примераПримера Дивизион (исп.Primera Divisin) профессиональной футбольной лиги Испании (исп.Liga de Ftbol Profesional, LFP), известный также как Примера и Ла Лига (исп.La Liga), является профессиональным футбольным турниром клубов высшего уровня в системе футбольных лиг Испании. Ла Лига считается одной из лучших футбольных лиг в мире. рассмотрим запрос

SELECT ....
     "213-46-8915"....

Оба оборота, составляющие оборот WHERE, являются аргументами поиска. Но столбец state (штат), скорее всего, не обеспечит получение единственного значения, а столбец au_id непременно гарантирует это, так как он является первичным ключом таблицы. Чтобы понять, что оборот au_id = "213-46- 8915" обладает очень высокой селективностью, а оборот state = "СА", наоборот, средней или даже низкой, вряд ли требуется знать что-либо еще. Конечно, если бы нашлась только одна строка, в столбце state которой было бы значение, соответствующее штату СА, то оба оборота были бы одинаково селективны.

Оптимизатор запросов решает, насколько селективен аргумент поиска, исходя из статистики соответствующего индекса. Статистика дает приблизительное представление о том, сколько записей будет удовлетворять заданному критерию. В таком случае, если оптимизатор запросов знает, сколько строк содержится в таблице, и сколько строк будет возвращено при использовании условий обеих частей оборота WHERE, то не составит труда решить, какой индекс целесообразно использовать. (Применение статистики в SQL Server 7.0 более подробно описано в статье Кэйлен Дилани "Статистика SQL Server : полезный инструмент оптимизатора запросов".) В рассматриваемом запросе, если имеются индексы и по столбцу state, и по столбцу au_id, то оптимизатор запросов выберет индекс по au_id. Если же индекс по au_id отсутствует, а по state создан, то оптимизатор запросов выберет его. Это вполне логично, поскольку в любом случае применение индекса более селективно, чем сканирование всей таблицы. При отсутствии обоих индексов единственным остающимся решением является сканирование таблицы для выявления всех строк, которые удовлетворяют условиям.

(Более подробно работа оптимизатора запросов изложена в книге "SQL Server 6.5 корпорацииКорпорация (от новолат. corporatio— объединение)— юридическое лицо, которое, будучи объединением физических лиц, при этом независимо от них (то есть самоуправляемо). В широком смысле под корпорацией можно понимать всякое объединение с экономическими целями деятельности. Microsoft " ("Microsoft SQL Server 6.5 unleashed"), выпущенной издательством в 1998 году. В ней рассмотрено несколько наиболее распространенных сценариев. Конечно, проработкаПроработка — психический механизм и этап в рамках «техники психоанализа». Состоит в осознании и признании анализантом исходных (вытесненных) причин психической травмы, а затем, не останавливаясь на этом, в реконструкции всей выявленной структуры своих психических процессов. Проработка запускается аналитиком через обсуждение с анализантом и через истолкование («интерпретацию») всей системы травмирующих переживаний. каждого примера займет время, но зато вы станете гораздо лучше писать запросы, если разберетесь в том, каким образом действует оптимизатор. В книге "Внутри SQL Server 6.5" ("Inside SQL Server 6.5" ) также хорошо рассказано о работе оптимизатора запросов.)

Индексирование: скорее искусство, чем наука

Невозможно писать эффективные запросы, ничего не зная про индексы таблиц. Без хороших индексов даже самые простенькие запросы могут ужасающим образом замедлить работу системы. Единственный«Противостояние» (англ.The One) — фантастический боевик 2001 года от Revolution Studios. В главных ролях Джет Ли и Карла Гугино. способ защиты от этого, - знать строение данных и рассматривать индексы в качестве неотъемлемой части ваших запросов.

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

А теперь очертим основы концепцииКонцепция, или концепт, (от лат.conceptio— понимание, система)— определённый способ понимания (трактовки, восприятия) какого-либо предмета, явления или процесса; основная точка зрения на предмет; руководящая идея для их систематического освещения. правильного выбора типа индексов и столбцов, по которым они должны строиться. Прежде всего, поскольку для каждой таблицы можно создать только один кластеризованный индекс, его надо строить так, чтобы удовлетворить максимально возможное число запросов. Кластеризованные индексы более всего полезны для запросов, использующих условия на диапазон значений. Это обусловлено тем, что уровень листьев такого индекса содержит данные, отсортированные в порядке значений индекса. Наибольший выигрыш от применения кластеризованного индекса получается в тех случаях, когда оборот WHERE запроса содержит операторыОператор (позднелат.operator— работник, исполнитель, от operor— работаю, действую)— то же, что отображение в математике. >, < или BETWEEN .... AND, а также оборот GROUP BY, в которых столбцы перечислены в том же порядке, что и в индексе. Хотя это может и не помочь в поиске строк, но кластеризованный индекс способен улучшить производительность системы при обработке оборотов ORDER BY, если и в индексе и в обороте ORDER BY использованы одни и те же столбцы, причем в совпадающем порядке.

Поскольку промежуточный уровень кластеризованного индекса крайне мал, он прекрасно работает при поиске уникальных значений. Однако некластеризованные индексы лучше работают для "точечных" запросов, которые должны найти небольшое число строк. Обороты WHERE с оператором = являются первыми кандидатами на построение некластеризованных индексов по соответствующим столбцам. Этот тип индекса также очень хорош для функций агрегирования MIN и MAX, потому что легко найти первую и последнюю записи для диапазона значений, если воспользоваться уровнем листьев индекса. Наконец, некластеризованные индексы очень существенно ускоряют выполнение функции COUNT, так как сканирование уровня листьев индекса происходит намного быстрее сканирования таблицы.

Куда двигаться дальше?

Полезно воспользоваться окном ISQL, для того чтобы проследить за изменением реакции SQL Server на введениеВведение — в собственном смысле — предварительные сообщения общего характера, предпосылаемые произведению, обычно научного характера, с целью ввести читателя в курс предмета. различных индексов для одной и той же таблицы. Enterprise Manager может показать сведения о селективности индексов таблицы, а SQL Trace позволяет получить сценарии всех запросов, направляемых на сервер. Настраивая индексы, переделывая сценарии и отмечая изменения времени обработки запросов, можно получить представление о том, какие индексы будут наилучшими при промышленной эксплуатации системы. Просто следите за количеством операций ввода/вывода, необходимых для обработки ваших запросов, и не забывайте, что любое средство снижения их числа окажет положительное влияние и на производительность системы в целом.

Морис Льюис (morris@holitech.com) является президентом компанииЮридическое лицо— созданная и зарегистрированная в установленном законом порядке организация, которая имеет в собственности, хозяйственном ведении или оперативном управлении обособленное имущество и отвечает по своим обязательствам этим имуществом, может от своего имени приобретать и осуществлять имущественные и личные неимущественные права, нести обязанности, быть истцом и ответчиком в суде. Юридические лица должны иметь самостоятельный баланс или смету. Holitech, специализирующейся на консалтинге и обучении технологиям Internet и разработкам корпорации Microsoft в области баз данных.

 

Мы рекомендуем еще посмотреть:

ellspacing="0" cellpadding="0" border=0>
http://www.infinet.ru

Система Revolution 5000 / SkyMAN

Описание возможностей операционной системы RMA

    Протокол RMA (Routed Multiple Access protocol) построен на следующих механизмах:

    регистрация абонентов на базовой станции с постоянным контролем качества канала,
    протокол тестирования каналов,
    механизм роуминга (перемещение абонента от одной базовой станции к другой), основанный на динамической IP маршрутизации,
    единая база данных регистрации абонентов RAPS,
    режим централизованной раздачи маркера (поллинг),
    механизм автоматического управления скоростью (autobitrate),
    механизм автоматической регулировки мощности.

    Регистрация абонентов

    Механизм регистрации основан на автоматическом тестировании АС каналов с БС из списка возможных. Инициатором регистрации является АС. Для регистрации на БС АС циклически посылает зондирующие пакеты на определенных при конфигурировании частотах с соответствующими для каждой частоты.

    БС, получив зондирующий пакет АС, делает запрос о правах АС в централизованную базу данных RAPS или ищет запись о данной АС в своей таблице абонентов, если RAPS не используется. Если права АС соответствуют запросу, БС отвечает АС служебным пакетом и участвует в последующем тестировании канала связи. На основании полученной информации АС вычисляет интегральную характеристику качества канала с каждой ответившей ему БС. Интегральная характеристика складывается из уровней входного сигнала на входах приемников АС и БС, а также числа потерянных тестовых пакетов. Для работы выбирается БС с наилучшей интегральной характеристикой канала.

    Регистрация основана на неизменности MAC адресов АС и предполагает явное перечисление всех MAC адресов разрешённых АС в базе данных RAPS или непосредственно на БС. Таким образом, в случае использования простых топологий сети с малым числом АС информация о правах АС может храниться на БС, без использования механизма RAPS. Такой подход предотвращает несанкционированное подключение к БС посторонних устройств. АС, не описанные в базе данных RAPS или в БС, не будут зарегистрированы. Пакеты от незарегистрированных АС игнорируются.

    Протокол тестирования каналов

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

    Произвольная структура сети

    Каждая АС может работать в режиме Ретранслятора, который сочетает в себе функции АС по отношению к БС и функции БС по отношению к другой АС. Это позволяет выстраивать длинные цепочки ретрансляторов (например, если между конечными точками нет прямой видимости или слишком велико расстояние). При этом механизм сквозного тестирования канала обеспечивает изменение рабочей частоты всей цепочки Ретрансляторов вслед за корневой БС.

    Механизм роуминга

    Механизм динамической IP-маршрутизации и IP роуминга позволяет производить переключение локальной сети АС с одной БС на другую без изменения сетевых IP адресов локальной сети АС и автоматическим назначением IP-адреса беспроводному интерфейсу маршрутизатора. Полная автоматическая перестройка маршрутизатора при переходе с одной базовой станции на другую занимает около 15 секунд. Использование в качестве механизма роуминга IP-маршрутизации позволяет свободно перемещать АС в пределах всей опорной сети с переключением даже между не смежными БС.

    Среднее время переключения на резервный маршрут и изменения топологии всей сети при каких-либо неисправностях не превышает десятков секунд. Для сравнения, при использовании протокола MINT переключение занимает единицы миллисекунд.

    Механизм автоматической регулировки мощности

    Механизм автоматического управления мощностью АС обеспечивает поддержание оптимального уровня сигнала на входе БС.

    Механизм гибкого управления скоростями передачи между БС и АС

    Протокол RMA в числе других имеет механизм автоматического регулирования скорости. Когда механизм выключен, скорости передачи от БС к АС и обратно фиксированы и равны скорости, запрошенной АС у БС во время регистрации.

    Служба разрешения удалённого доступа RAPS

    Служба разрешения удалённого доступа RAPS (Remote Access Permission Service) построена на следующих принципах:

    Информация о всех устройствах сети хранится в централизованной базе данных службы RAPS. Эта информация содержит параметры, достаточные для однозначной идентификации устройства.
    Каждое устройство может быть настроено на использование службы RAPS для идентификации устройств, которые пытаются подключиться к сети.
    Информационные сообщения между устройствами и сервером службы RAPS защищены с помощью цифровой подписи с использованием уникального ключа устройства.

    QoS

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

    Концепция этого механизма заключается в следующем: В системе существует несколько (64) программных каналов, каждый из которых может обладать некоторыми свойствами. С помощью специальных правил, можно заставить пакеты, проходящие через маршрутизатор, проходить через тот или иной канал и изменять, тем самым свойства самого пакета или потока, которому он принадлежит.

    Используя этот механизм, оператор сети получает возможность установления приоритетов на потоки и вводить ограничения на пропускную способность не только для каждого АС, но и на любой компьютер сети или сетевой сервис.

    СОРМ

    Модуль отбора пакетов, реализованный в устройствах InfiNet, позволяет перехватить весь поток информации, проходящий через любой интерфейс системы, и направить его на удалённую рабочую станцию для дальнейшего анализа и контроля. Отбор пакетов производится путём дублирования проходящих пакетов и не мешает обычной работе маршрутизатора.

    Компания выпускает оборудование под двумя брендами: SkyMAN и Revolution. Оборудование Revolution производится для заказчиков, имеющих разрешение на использование частот на это оборудование. Оборудование SkyMAN производится для частотных диапазонов 2,4-2,4835 ГГц, 5,15-5,35 и 5,65-6,45 ГГц. Оборудование Revolution производится для частотных диапазонов 2,4-2,4835 ГГц, 5,15-5,35 ГГц. Оборудование SkyMAN и Revolution в совпадающих частотных диапазонах полностью идентично.

2009 IT и оборудование для бизнеса, S-NETWORKS. Информационные технологии и Информационное оборудование