SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |
   
#272<<  #273  >>#274

СОДЕРЖАНИЕ

1.

СТАТЬИ

1.1.

Эталонный тест дисковой подсистемы SQLIO

2.

ССЫЛКИ НА СТАТЬИ

2.1.

Статьи на русском языке

2.2.

Англоязычные статьи

3.

ФОРУМ SQL.RU

3.1.

Самые популярные темы недели

3.2.

Вопросы остались без ответа

СТАТЬИ

Эталонный тест дисковой подсистемы SQLIO

Автор: Александр Гладченко. SQL Server MVP

SQLIO является очень простым инструментом эталонного тестирования производительности операций ввода - вывода дисковой подсистемы для SQL Server, разработанный сотрудником Microsoft - Gert E.R. Drapers в начале для собственных нужд, но оказавшимся настолько полезным, что теперь этот инструмент доступен для свободного скачивания и применения всем легальным пользователям SQL Server. Устанавливать его можно практически на всех серверных операционных системах: Windows 2000; Windows Server 2003; Windows XP; Windows XP/2003 64-bit. Скачать его можно по этой ссылке:

SQLIO Disk Subsystem Benchmark Tool

Введение

Тестирование операций Input/Output (I/O) дисковой подсистемы ставит перед собой целью определение производительности при разных типах и объёмах доступа к файлам баз данных, находящихся как на обычных дисковых массивах, так и на более продвинутых системах, таких как Storage Area Network (SAN). Это позволяет подобрать оптимальные настройки SAN для наиболее производительного обслуживания порождаемого СУБД I/O. Кроме того, подобное тестирование позволяет убедиться в том, что тестируемая дисковая система не имеет аппаратных или связанных с драйверами проблем. Результаты тестов сохраняются для последующего сравнения и калибровки реальной нагрузки, создаваемой SQL Server.
Для того, что бы после очень простой процедуры установки на сервере утилиты эталонного тестирования приступить к испытанию возможностей дисковой подсистемы, необходимо составить для себя небольшой план этого тестировании и разобраться с основными характеристиками, которыми оперирует утилита SQLIO и которые она представляет в виде значений измерений в своём отчёте о тесте.
Дисковая подсистема представляет свои ресурсы в виде уникальных путей I/O, которые могут быть представлены по разному - LUN/Disk/Volume, в зависимости от избранной Вами системной конфигурации. Тестировать желательно все из имеющихся путей, и каждый путь стоит тестировать несколько раз, что бы набрать необходимую для приближения к точной оценки статистику. При этом необходимо варьировать различные параметры для тестируемых файлов (имя которых по умолчанию - testfile.dat), размеров запросов, числа потоков, продолжительности тестов и т.п.
Что бы подобрать оптимальные настройки для дисковой подсистемы, нужно протестировать всё разнообразие типов I/O и его размеров. Проверяются разные комбинации размера I/O для чтения - записи, которые выполняются последовательно или случайным образом. Рекомендуемыми в прилагаемой к утилите размерами запросов I/O, которые желательно проверить в тесте, являются: 8, 64, 128 и 256 КБ.
Важен и сам размер файлов, который задаётся для каждого пути отдельно. Размер тестового файла должен превышать в несколько раз размер кэша дисковой подсистемы. Иначе, результаты тестирования могут быть искажены тем, что весь файл или значительная его часть будет находиться в кэше.
Для того, что бы правильно ориентироваться в задаваемых для тестирования параметрах утилиты, нужно предварительно получить представление об используемой аппаратной конфигурации и об её теоретических пределах производительности. Важно представлять влияние различных аппаратных компонент на работу сервера в целом. Например, совершенно разные характеристики могут быть получены при использовании статического отражение логических номеров устройств (Logical Unit Number или LUN) на Host Bus Adapter (HBA) или если для организации дисковых ресурсов используются программное обеспечение операционной системы.
Кроме индивидуального тестирования каждого пути I/O, полезно проверять комбинации этих путей. В идеале, при добавлении путей I/O, должна наблюдаться почти линейная масштабируемость производительности (МБ/сек), если не превышаются аппаратные ограничения по производительности. Такой подход позволит определить совокупную производительность всех доступных дисковых ресурсов.
Время тестирования тоже должно подбираться индивидуально. При первых прогонах теста можно ограничиться несколькими минутами, а при углублённом тестировании выявленных проблемных или наоборот, наиболее производительных наборов параметров теста, это время стоит существенно увеличить. Кроме того, для высокопроизводительных систем, стоит использовать более продолжительные тесты.
Между тестами разного типа I/O необходимы паузы, чтобы дисковая подсистема возвратилась к неактивному состоянию. После большого объёма операций записи, пауза может потребовать довольно продолжительное время, в течение которого должны быть сброшены из кэша на диск все ожидающие исполнения запросы на запись. Иначе, результаты последующих тестов могут быть искажены. Для высокопроизводительных систем такая пауза может оказаться больше минуты, которой вполне хватает для массовых серверов.
Если запускать SQLIO с заданными по умолчанию параметрами, затрачиваемое дисковой подсистемой время поиска по диску окажется очень маленьким, как и сама область на диске, которая будет использоваться для теста. Поэтому, параметры по умолчанию не подходят для тестирования и моделирования поведения SQL Server с большой рабочей OLTP - нагрузкой.

[В начало]

Параметры запуска SQLIO

После установки SQLIO, а по умолчанию его файлы размещаются программой установки в каталог "C:\Program Files\SQLIO", Вы можете изучить список параметров запуска утилиты и файлов конфигурации, который можно увидеть в файле readme.txt, расположенном в той же папке, где находиться исполняемый файл утилиты. Кроме того, поскольку SQLIO является утилитой командной строки, запустив в командной строке команду: 'SQLIO .exe -? ', на экран консоли также будет выведен список актуальных для установленной версии утилиты параметров. Работу утилиты можно прервать комбинацией клавиш ctrl-C, при этом будет остановлено инициирование новых запросов на I/O, и после завершения текущих запросов на I/O, на консоль будут выведены текущие результаты, и выполнение программы будет прервано.
Для автоматизации процесса тестирования, удобно запускать утилиту с разными параметрами, сохранив описание этих вызовов в командном файле. В документации к утилите приводиться пример содержимого такого командного файла. Ниже, представлен сокращённый пример этого командного файла:

sqlio -kW -s600 -frandom -o8 -b64 -LS -Fparam.txt timeout /T 60 sqlio -kW -s600 -fsequential -o8 -b64 -LS -Fparam.txt timeout /T 60 sqlio -kR -s600 -frandom -o8 -b64 -LS -Fparam.txt timeout /T 60 sqlio -kR -s600 -fsequential -o8 -b64 -LS -Fparam.txt

В общем случае, формат команды можно представить так:

obj\i386\sqlio [options] [...]

Где допустимы следующие параметры запуска утилиты:

-k<R|W>
В примере представлены наиболее распространённые параметры. После имени утилиты, следует параметр -k, который определяет, будет ли на этом шаге производиться чтение (R) или запись (W). Первые два запуска теста т.о. будут тестировать запись, а вторая пара - чтение. По умолчанию принимается -kR.

-s<secs>
Вторым параметром -s является продолжительность тестирования, указываемая в секундах. Первые, прикидочные тесты, стоит проводить с небольшими значениями продолжительности, порядка 360 секунд. Это поможет Вам определиться с тем, на каких параметрах Вам стоит сосредоточиться в дальнейших тестах, для которых продолжительность может быть существенно увеличена. По умолчанию, принимается значение -s30.

-f<stripe factor>
Третий параметр -f определяет тип I/O (stripe factor), который может быть случайным (random) или последовательным (sequential). По умолчанию принимается значение -f64. Параметр нужен для сопоставления I/O набору страйпов, и определяет число блоков между последовательным I/O. Например, при использовании страйпов, организованных с помощью Windows NT с размером 64 КБ, нужно задавать для -f размер 32 (для 2 КБ блоков), и в то же время, при использовании аппаратно организованных страйпов контроллера дисковых массивов, размером в 128 КБ, для параметра -f стоит указать значение 64 (для 2 КБ блоков). Обратите внимание, что размер страйпа в SQLIO основан и на значение параметра -f и на размере I/O (задаваемом параметром размера блока -b). При использовании значения -f1, результатом станет последовательный I/O.
В качестве альтернативы указанию размера страйпа, можно определять параметр, как: -frandom - когда блоки в файле выбираются беспорядочно, или -fsequential - когда следующий (логический) блок выбирается после предыдущего I/O в том же самом файле.
Способ, которым потоки делят страйп, имеет побочный эффект, который заключается в том, что stripe factor не должен быть меньше указанного числа потоков. Поэтому, для последовательного I/O (-f1) может быть задан только один поток, и в случае равенства задаваемых через -f и -t значений получится почти последовательный I/O, так как каждый поток будет работать с I/O на одном блоке, который занимает весь страйп. Однако, поскольку нет упорядочивания потоков, не будет и упорядоченного использования блоков и потому истинно - последовательного I/O тоже не получится.

-o<#outstanding>
Четвёртым параметром -o указано количество отправляемых в одном потоке запросов на I/O. Увеличение глубины очереди запросов может привести к более высокой общей производительности, но не стоит этим сильно увлекаться, т.к. текущая на момент написания этой статьи версия утилиты имела проблемы, когда значение параметра было слишком высоко. Наиболее часто применяющимися значениями являются 8, 32 и 64. Очередь запросов на I/O будут выполняться асинхронно для каждого потока и, соответственно, файла с ожиданием завершения I/O, на подобие того, как это реализовано у механизма отложенной записи в SQL Server. Это параметр нельзя использовать совместно с параметром -m (многомерный буфер), потому что операционная система Windows NT не поддерживает обслуживающие завершения I/O подпрограммы Scatter/Gather.
Когда задано несколько запросов на ввод-вывод в одном потоке, тогда каждый поток будет исполнятся практически точно так же, как если бы параметр -o не был задан. Различие состоит только в том, что другие запросы на I/O смогут завершаться или начинаться на его фоне.
Если параметр -o неиспользуется, I/O инициализируется асинхронно, и каждый поток I/O ожидает завершения I/O (используется GetOverlappedResult). При этом, если тестируется несколько файлов, I/O запускается для каждого файла так, что бы не было перекрытия запросов на I/O между файлами этого потока. При использовании параметра -o запросы как бы "склеиваются".

-b<io size(KB)>
Следующим по порядку параметром указан -b, который задаёт размер блока I/O, измеряемый в байтах. В документации используются для примера следующие значения: 8, 64, 128, 256. По умолчанию принимается значение -b2.

-L<[S|P][i|]>
Следующий параметр в приведённом выше примере это -LS (S = system, P = processor), который включает фиксацию задержек на ожидание получения информации от дисковой подсистемы. Это тоже полезная информации, т.к. при сравнимой производительности разных наборов параметров, меньшие задержки будут предпочтительней. С этим параметром можно использовать два возможных таймера, системы и процессора (-LP можно использовать только в архитектуре i386). Обратите внимание, что параметр -LP нужно с осторожностью использовать на SMP серверах, т.к. обращаясь к таймеру процессора невозможно начать или закончить I/O на этом же процессоре (если не установлена привязка процессора), что может привести к ошибкам синхронизации. Также обратите внимание на то, что хотя параметр -LS призван уберечь SMP системы, он тоже не всегда бывает надёжен, и поэтому, для него стоит предъявлять те же ограничения, что и для -LP. В отчёте этот параметр выводит минимальное, среднее и максимальное время завершения исполнения запроса на I/O, и включает гистограмму синхронизаций времени ожидания. Первая строка гистограммы (ms) изображает шкалу от 0 до 23 миллисекунд, а всё что превышает такие задержки, будет относиться к значению 24+. Вторая строка (%) показывает процент завершившихся запросов на I/O для расположенной выше шкалы задержек.
В дополнении к S или P можно поставить символ i который разрешает включать во время задержки затраты времени на инициализацию запроса на I/O.

-F<paramfile>
Последний из приведённых параметров -F определяет имя файла, в котором указывается место и параметры создания тестового файла данных с которым будет работать во время теста SQLIO. В нашем примере и в примере, приводимом в документации к утилите, используется файл с именем "param.txt", который должен располагаться там же, где расположена сама утилита. В файле может быть указано несколько ссылок на пути размещения тестовых данных или на несколько LUN, которые должны быть расположены последовательно, каждый на своей строке. Кроме полного указания пути к файлу и его имени, указываются ещё три параметра, определяющие размеры файла и то, какое число потоков и процессоров будет задействовано сервером для работы с каждым из этих файлов. Ниже представлен имеющийся в документации к утилите пример содержимого файла param.txt:

c:\sqlio_test.dat 4 0x0 100 d:\sqlio_test. dat 4 0x0 100

Следом за указанием пути и имени файла (или LUN), указывается число потоков, открываемых утилитой для этого файла. Рекомендуется устанавливать это значение равным числу установленных в сервере процессоров. В имеющееся на момент написания этой статьи версии утилиты были зафиксированы проблемы при использовании большого совокупного числа потоков по всем файлом. В случае отказов, нужно уменьшать совокупное число потоков до такого значения, когда отказы прекратятся.
Следом за числом потоков, указывается маска используемого числа процессоров. Это значение аналогично тому, которое указывается в конфигурационных параметрах SQL Server. Для выбора всех процессоров можно указать маску в таком виде: 0x0.
После маски указывается размер файла тестовых данных в мегабайтах. В идеале, он должен в несколько раз превышать размер кэша контроллера дискового массива, на котором этот файл располагается. В документации рекомендуется делать его в два - четыре раза больше кэша.
После размера файла, можно указать комментарии, которые должны быть в конце строки, после символа звёздочка "*".
Для обычных (не расположенных на RAW разделе) файлов, будет использоваться указанный размер файла, если их размер не указан в файле параметров.
Имена файлов не должны превышать 256 символов.

Кроме уже перечисленных, есть и другие параметры:

-i<#IOs/run>
Указывает, сколько запросов на I/O будет запущено, по умолчанию принимается -i64. #IOs/run - это основной цикл программы, в течение которого заданное число запросов на I/O будет выполнено, выбирая для каждого следующего запроса на I/O один страйп в файле; следующий запрос получит следующий страйп - блок. Каждый поток читает или пишет в другой набор, и число запусков в потоке обратно пропорционально числу потоков. В сочетании с параметрами -f и -b, этот параметр позволяет задать размер в байтах рабочей нагрузки, которая может быть важна для того, чтобы исключить влияние кэширующих контроллеров (например, если принять значения по умолчанию -i64 -f64 -b2 - нагрузка составит 8 МБ). Обратите внимание, что вместе с -i бессмысленно использовать -frandom или -fsequential.

SQLIO может генерировать очень большую нагрузку дисковой подсистемы запросами I/O на чтение, потому что заданный по умолчанию размер страйпа в 128 КБ может хорошо кэшироваться дисковой подсистемой. Поэтому, стоит поэкспериментировать с параметрами -i и -f , подбирая такие их варианты, которые гарантировали бы достоверные результаты.

-t<threads>
Задаёт число используемых в тесте потоков, максимальное значение - 256, по умолчанию принимается значение -t1. SQLIO представляет логические блоки диска в виде двумерного массива, где размер блока определяется параметром -b, в строках массива блоки нумеруются последовательно, и длина каждой строки определяется параметром -f (по умолчанию - 64), а число строк определяется параметром -i (по умолчанию - 64). Если задано два потока (-t2), то первый поток пройдёт только половину страйпа каждой строки, в то время как второй поток начнется с середины страйпа.

-d<drive1> .. <driveN>
Задаёт буквы одного или нескольких дисков, на которых утилита создаст файлы данных (у всех файлов будет одинаковое имя). Используется для того, чтобы указать отличный от текущего диск, или для определения нескольких тестируемых дисков. Например, команда: "sqlio -dDEF \test" будет тестировать I/O по трем файлам: D:\test, E:\test и F:\test. Максимальное число таких файлов - 256.

-R<drive1>, <driveN>
Для указания сырых (RAW) партиций размещения файлов данных, для которых можно указывать символы дисков или их номера. При указании файлов данных в файле параметров, необходимо к буквам дисков или к их номерам добавлять двоеточие ":", а стандартный параметр имени файла данных указывать нет необходимости. Например, команда: "sqlio -RD,E,F,1,2,3", создаст файлы данных для тестирования I/O на следующих RAW-разделах: D:, E: и F:, а также дисках с номерами: 1:, 2: и 3: (эти же файлы можно было бы использовать в файле с параметрами по отдельности, указав их, как: D: E: F: 1: 2: 3:). Максимальное число задаваемых таким образом файлов тоже не должно превышать 256. Для файлов на RAW разделах, размер файлов должен быть определен в файле параметров.

-p[I]<cpu affinity>
Порядковый номер одного из процессоров, который будет использоваться (0 - первый по порядку; I - идеальная афинитизация). Заставляет все потоки процесса sqlio выполняться на указанном процессоре. Например, если указать 0, будет использоваться первый процессор, если указать 1, будет второй, и т.д. Номера: 0, 1, 2 или 3 могут использоваться для 4-х процессорного SMP сервера. В дополнение к номерам, в конец их перечисления, можно добавить символ "I", который включает режим идеальной привязки к процессору, в отличие от предлагаемого по умолчанию режима жесткой привязки.

-a[R[I]]<cpu mask>
Задаёт маску используемых потоками процесса SQLIO процессоров (R = циклический алгоритм использования процессоров (I = идеальная афинитизация)). По смыслу, значения этого параметра аналогичны параметру конфигурации SQL Server - affinity mask. Он отличается от использования параметра -p тем, что последний предназначен для указания использования в тесте только одного процессора. Маску набора используемых в тесте процессоров можно указывать десятичным или шестнадцатеричным числом и это значение будет применено в качестве маски процессоров для каждого потока SQLIO. Если к параметру -a добавить R, то будет использоваться режим чередования процессоров. В этом случае, маска будет задавать число процессоров, которое давайте будем считать равным N. В таком случае, 1/N часть от заданных потоков будут запущена на каждом из указанных процессоров. Например, если указать в параметрах: -a0xf -t16, то все 16 потоков процесса SQLIO будут запускаться на первых четырёх процессорах (в 8-и процессорном сервере). Если же задать: -aR0xf -t16, тогда потоки 1,5,9,13 будут запущены на процессоре 0, потоки 2,6,10,14 на процессоре 1, потоки 3,7,11,15 на процессоре 2, а потоки 4,8,12,16 на процессоре 3. Если к -aR добавить символ "I", включится режим идеальной привязки к процессору, который заменит предлагаемый по умолчанию режима жесткой привязки.

-m<[C|S]><#sub-blks>
Разрешает мульти-буферные операции I/O (C = copy, S = scatter/gather), возможно копирование между множеством буферов и буфером I/O (параметр -mC) или исполнение запросов на I/O непосредственно через мульти-буфер, когда задействуется новое API scatter/gather (параметр -mS). Этот API доступен только начиная с Windows NT 4.0 SP2. Вторая часть параметра -m указывает число подблоков, позволяющих дробить I/O; то есть, если размер блока I/O - 16 КБ, тогда задав -mC4, мы установим размер мульти-буферов равным 4 КБ каждый. Обратите внимание, что в случае использования параметра -mS подблоки должны быть равны принятому для используемой платформы размеру страницы (например, 4 КБ на i386 и 8 КБ для ALPHA). Кроме того, параметр -m нельзя использовать совместно с параметром -o.

-U[p]
Включает сбор и вывод статистики использования системного времени (p = в разрезе процессоров) по отложенным вызовам процедур (DPC), по времени на прерывание и прерываниям в секунду, по времени в привилегированном и пользовательском режиме, и по утилизации процессоров.

-B<[N|Y|H|S]>
Управляет аппаратным и программным кэшированием (N = none, Y = all, H = hdwr, S = sfwr), и по умолчанию принимает значение -BN. Позволяет управлять атрибутами открытия файлов: FILE_FLAG_NO_BUFFERING и FILE_FLAG_WRITE_THROUGH. Одновременно отключить оба флага можно параметром -BN, который не разрешает использование кэша NTFS и встроенного кэша дискового контроллера. Что бы разрешить использование обоих типов кэшей, используйте параметр -BY. При использовании -BH, в период наибольшей нагрузки будет использоваться аппаратный кэш диска, но не кэш файла (то есть будет установлен только FILE_FLAG_NO_BUFFERING). При использовании -BS разрешается программный кэш файловой системы, но не кэш диска (то есть, только FILE_FLAG_WRITE_THROUGH). Обратите внимание на то, что не все диски имеют собственный кэши, а SCSI контроллеры с кэшем, обеспеченным батарейкой, обычно игнорируют флаг FILE_FLAG_WRITE_THROUGH, и будут кэшировать в любом случае.

-S<#blocks>
Указывает номер стартового блока файла рабочей нагрузки I/O, ограничивая этим число блоков из файла, которые будут использоваться в качестве основы для всех запросов на I/O; обратите внимание, что блоки здесь имеют такой же размер, как и у блоков, которые заданы в параметре -b. Значение по умолчанию (без указания -S) указывает на блок 0 файла.

-64
Включает использование 64-битных операций в памяти.

-D<#level>
Не документированный параметр, используемый для отладки. С ним указывается обозначающее уровень отладки число (например, -D11 устанавливает отладку по двум уровням 1 - 10).

1 - информация о производительности в разрезе потоков.
2 - детализация калибровки таймеров.
3 - информация о времени ожидания потока.
4 - гистограмма времени ожидания потока.
9 - подробности размера диска.
10 - подробности распределения памяти.
50 - подробности I/O.
100 - вызывает int3 (полезно для ловушек отладчика).

[В начало]

Анализ результатов теста

SQLIO выводит агрегированные данные о производительности дисковой подсистемы на экран консоли для каждого из тестируемых путей. Эти результаты можно перенаправить для вывода в файл. На экран выводится статистика по измерениям производительности (мегабайт в секунду), среднее время ожидания дисковых операций (миллисекунды) и число запросов на I/O в секунду. В большинстве случаев этого достаточно, чтобы оценить производительность I/O. Для более детальной информации нужно дополнительно использовать представленные в Windows Performance Monitor счётчики производительности и/или собственный инструментарий SAN.
При интерпретации результатов SQLIO оперируют следующими рекомендациями:

  • Большой размер I/O обычно приводит к повышению задержек.

  • В идеале, Вы должны наблюдать некоторое увеличение производительности при добавлении путей к файлам тестовых данных. Также, производительность может возрастать при увеличении размера I/O. Однако, это зависит от заложенных в Вашу конфигурацию возможностей.

  • Может быть полезным согласовать результаты тестов с производителем используемых для этого дисковых контроллеров или SAN, что бы получить рекомендации по выбору настроек, характерных для Ваших приложений и порождаемых ими типов I/O, уровней RAID и т.д. У производителя можно получить последние версии драйверов HBA и firmware, а так же информацию о правильной настройке драйверов. Одним из распространенных параметров настройки HBA является глубина очереди - QueueDepth.

  • Входящая в инструментарий Windows утилита Performance Monitor (Системный монитор) также может использоваться для получения более детальной информации о производительности подсистемы I/O для физических или логических дисков (последние, бывают иногда более информативны). Выбор счётчиков определяется используемой конфигурацией системы.

[В начало]

Рекомендуемые счетчики производительности

LogicalDisk|PhysicalDisk\Disk Reads/sec (Обращений чтения с диска/сек)
LogicalDisk|PhysicalDisk\Disk Writes/sec (Обращений записи на диск/сек)
Показывает число обращений для чтения/записи для дисков в секунду. Это частота выполнения операций чтения или записи на выбранный диск. Проверьте указанную на диске скорость передачи, чтобы удостовериться, соответствует ли реально наблюдаемая скорость спецификациям или выясните у производителя дискового контроллера или SAN предел производительности для дискового массива. Это позволит Вам оценить оптимальность выбранной Вами конфигурации для достижения максимальной производительности.
Наблюдаемое количество запросов на I/O зависит от спецификаций производителя диска. Обычные диски Ultra Wide SCSI могут выполнять от 50 до 140 операций ввода/вывода в секунду в расчёте на один шпиндель. Автор наблюдал до 30000 запросов в секунду для массива RAID0, построенного на шести дисках, при этом: размер последовательных запросов был 8 байт, средняя задержка была менее 20 миллисекунд, а производительность превышала 200 мегабайт в секунду.

LogicalDisk\Avg. Disk sec/Read (Среднее время чтения с диска)
LogicalDisk\Avg. Disk sec/Write (Среднее время записи на диск)
Показывают время в секундах, затрачиваемое в среднем на одну операцию чтения/записи данных с диска, является мерой задержки дисковых операций. Маленькие значения предпочтительны, но это зависит от размера запросов на I/O, а так же от характеристик рабочей нагрузки. Количество запросов также может меняться при разных конфигурациях дисковой подсистемы (размер/утилизация кэша SAN может оказывать большое влияние на результаты).
При этом для высокопроизводительных OLTP систем, использующих мощный SAN, средняя задержка не должна превышать 2 миллисекунд для журнала транзакций и 4-10 миллисекунд для файлов данных. Для рабочих нагрузок, типичных системам поддержки принятия решений, задержки могут превышать 30 миллисекунд.
Если задержка продолжительное время превышает 100 миллисекунд, это может говорить о наличии проблем с I/O. Однако, выводы об этом зависят от характеристик рабочей нагрузки и используемых аппаратных средств. Показания счётчиков нужно рассматривать в комбинации с тем, что является нормальным для вашей системы.

LogicalDisk\Avg. Disk Bytes/Read (Средний размер одного чтения с диска (байт))
LogicalDisk\Avg. Disk Bytes/Write (Средний размер одной записи на диск (байт))
Показывают среднее количество байт данных, полученных с диска при выполнении операций чтения/записи. Являются показателем воздействия задержки на ожидание дисковых операций. Большие размеры I/O могут привести к увеличению времени ожидания. Когда эти счётчики измеряются одновременно с работой утилиты SQLIO, их значения должны соответствовать размеру I/O, наблюдаемому в отчёте о тесте. Когда используются для наблюдения за активностью дисковых операций SQL Server, получаемые значения отражают средний размер запроса на I/O, который соответствует посылаемым SQL запросам.

LogicalDisk|PhysicalDisk\Avg. Disk Queue Length (Средняя длина очереди диска)
Среднее общее количество запросов на чтение и на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения. Вычисляется число запросов, которые были поставлены в очередь и ожидают обращения к диску в течение базового интервала измерения, а также запросов на обслуживание. В итоге, может показывать завышенные значения.
Если более двух запросов непрерывно ожидают обращения из расчёта на один диск в дисковом массиве (не более двух на шпиндель), диск может быть узким местом, но одновременно это является показателем большой утилизации виртуальной памяти массива или SAN. В последнем случае, стоит подбирать такие настройки дисковой подсистемы, при которых была бы высокой средняя длина очереди к дисковому массиву и одновременно с небольшим превышением среднего показателя задержки дисковых операций. Для SAN такая комбинация обычно даёт наиболее оптимальные параметры производительности. Чтобы уточнить данные о длине очереди, используйте счётчики: Avg. Disk Read Queue Length и Avg. Disk Write Queue Length.

LogicalDisk\Disk Read Bytes/sec (Скорость чтения с диска (байт/сек))
LogicalDisk\Disk Write Bytes/sec (Скорость записи на диск (байт/сек))
Показывают скорость, с которой происходит передача данных на диск или с диска при выполнении операций записи или чтения. Являются мерой полной производительности для отдельного диска или LUN.

Важным моментом является то, что утилиты Performance Monitor может оказаться недостаточно для точного измерения производительности подсистем I/O при использовании современных SAN. Хотя Performance Monitor в состоянии помочь в таких системах идентифицировать проблемы производительности, связанные с I/O, однако, разрешение этих проблем может зависеть от внутренних настроек SAN или от драйвера HBA. Performance Monitor позволяет контролировать производительность для широкого спектра дисковых устройств, но именно поэтому он не может быть универсальным средством максимально точной диагностики для всех марок и типов дисковых контроллеров и SAN. Поэтому, наличие у используемых контроллеров или SAN собственных средств диагностики производительности на уровне дискового массива, и на внутреннем уровне SAN является непременным требование для получения максимально полной информации об их производительности и для получения наиболее точных настроек этих устройств. Как правило, внутренняя диагностика SAN занимает больше времени и зависит от частоты, с которой инструменты внутренней диагностики фиксируют данные. Для многих SAN, представляет интерес информация об использование их портов, уровень задержки записи, процент использования кэша, утилизация встроенных процессоров, а также активность использования LUN каждого из физических шпинделей. Все эти величины потенциально важны для оценки производительности.

ПРОДОЛЖЕНИЕ СЛЕДУЕТ

[В начало]

ССЫЛКИ НА СТАТЬИ

Статьи на русском языке

Нечеткая логика -- математические основы
Николай Паклин
атематическая теория нечетких множеств (fuzzy sets) и нечеткая логика (fuzzy logic) являются обобщениями классической теории множеств и классической формальной логики. Данные понятия были впервые предложены американским ученым Лотфи Заде (Lotfi Zadeh) в 1965 г. Основной причиной появления новой теории стало наличие нечетких и приближенных рассуждений при описании человеком процессов, систем, объектов...

Работа с регулярными выражениями в SQL Server
Христофоров Юрий
MSSQLServer: В SQL Server 7/2000 нет встроенной поддержки работы с регулярными выражениями. Но SQL Server похволяет работать с COM-объектами. В VBScript (библиотека vbscript.dll) есть специальный объект для работы с регулярными выражениями - RegExp...

Обзор корпоративной архитектуры: возможности для упрощения предоставления информации
Intersoft Lab
OLAP: Каковы доводы за и против внедрения Хранилища данных взамен подготовки отчетности с помощью корпоративной транзакционной системы? Автор уже обращался к проблеме недостатков, связанных с использованием транзакционных систем как главного хранилища основной информации для корпораций или определенных сфер бизнеса в противоположность архитектурному подходу Хранилища данных. Сегодня для корпораций уже не стоит вопрос, нужны ли им Хранилища данных, поскольку они давно превратились в признанный инструмент мониторинга и управления бизнес-стратегией. В предлагаемой статье автор рассматривает доводы за и против внедрения Хранилища данных для предоставления информации и показывает, что Хранилища имеют безусловное преимущество над транзакционными системами в этой сфере....

Англоязычные статьи

ASP.NET 2.0: How SqlProfileProvider Stores its Data...
Shawn Wildermuth
This probably isn't entirely correct since I am just looking at the output (e.g. the database rows) to determine this. For each object in profile (i.e. Users), there is a single row in the aspnet_Profile table

Using MARS with SQL Native Client
Chris Lee
As stated in my previous post, the majority of new features available through SQL Native Client are accessed by connection or statement properties. MARS is about the simplest new feature to use in SQL Server 2005, and possibly the one we’ve all been waiting for the longest, so it’s a good candidate for your first excursion into the new features available with SQL Native Client

SQL Server 2005 NUMA support & troubleshooting
Slava Oks's WebLog
SQL Server 2005 has been designed to take advantage of NUMA features exposed by both hardware and the Windows operating system. There are several caveats that you need to be aware when attempting to run SQL Server on NUMA platforms.

Code trigger that captures login and system date
Andrew Novick
I need code for a trigger that captures the user/login and system date after a specific column has been updated in a table. This request is pretty easy to fulfill. Let's start with two tables: A table for data named DataTable and one to record the SQL Server Login that performed the change and the date and time of the change. The latter table is named myAuditTable. Here's the script to create the two tables.

Nullable trilogy Part I: why not just SQL?
Luca Bolognese's WebLog
This is the first of a weekly three part serie of posts about Nullable<T>. In these posts I want to describe the reasons behind three design choices:

Nullable trilogy part II: a == b -> a>=b && a <=b ?
Luca Bolognese's WebLog
A question that often comes up when we discuss Nullable<T> is about the anti-symmetric property. This property states that if a==b then a>=b and a<=b. If a and b are null then this property is not satisfied in the current design as the result of >= and <= is always false when one of the parameters is null. This may seems surprising, but it can be easily understood when considering if null can be ordered.

Nullable trilogy part III: Nullable as type parameter in a generic class
Luca Bolognese's WebLog
Another commonly asked question relates to the behavior of Nullable<T> when used as type parameter to instantiate a generic class. It might be surprising that comparing such a parameter to null gives always false as a result. As it turns out, this is not related to Nullable, but it is a result of how generics are implemented. There is a tendency to think about generics in a manner very similar to C++ templates, this view is unfortunately not correct.

Using ADO.NET 2.0 to get schema and metadata information
Amirthalingam Prasanna
This article describes how to obtain different types of information from your SQL Server 2000 database using ADO.NET 2.0, part of Visual Studio.NET 2005 and Microsoft .NET 2.0.

blAndySql
Andy Leonard
A little Hungarian (or pseudo-Hungarian) notation is a nice touch to get us started, I think...

Check Your SQL Server Identity
Andy Warren
Retrieving the identity value from an inserted row should be a very simple task. But based on his survey at TechEd 2005 as well as some recent interviews, Andy Warren points out some of the wrong answers and turmoils he has faced in getting this question answered.

User Defined Data Types in SQL Server 2005
Dinesh Priyankara
One other use of the new CLR integration in SQL Server 2005 is the ability to create user defined data types using managed code. Author Dinesh Priyankara brings us a first look at this capability with some code you can use.

Two Dozen of My Favorite System Stored Procedures
Don Kiely
SQL Server contains a wealth of features that you can use in your own stored procedures and applications. This article explores a couple dozen of my favorite system stored procedures, including extended stored procedures and several that are undocumented

MSDN TV: Introduction to Analysis Services 2005
Microsoft
Amir Netz gives a quick overview of the changes coming in Analysis Services 2005. Amir builds a cube from scratch, introduces some of the new features like translations, KPIs, perspectives, and proactive caching

Index Tuning Wizard
Gregory A. Larsen
There are a number of wizards in SQL Server 2000. One of these wizards is known as the index tuning wizard. The index tuning wizard is used for exactly what it sounds like; it is used for tuning indexes. This article will introduce you to the index tuning wizard and will explain how you can use it to tune the indexes on your database.

MDX Essentials: String Functions: The .Name Function
William Pearson
According to the Analysis Services Books Online, the .Name function "returns the name of a level, dimension, member, or hierarchy." .Name has many applications, including its use with these Analysis Services objects, as well as its pairing with other MDX functions to leverage its power even further. As an illustration, I use it constantly with the .CurrentMember function; we will see an example of this combination within our practice exercises later.

Querying Over Constructed XML Using Sub-queries
XQuery Inside SQL Server 2005
There are a number of cases where it would be useful to be able to run XQuery statements over the result of an XQuery expression which constructs new values. Unfortunately, directly querying over constructed XML is not supported in SQL Server 2005, so we need to use a work-around. Since the result of a query() method invocation is a new instance of the XML data-type, we can simply assign the results of a query to a variable, then perform further querying over that variable. While this will be acceptable for most cases, it is also possible to do this in a more direct manner, using sub-queries.

SQLIO Disk Subsystem Benchmark Tool
Microsoft
SQLIO is a tool provided by Microsoft which can also be used to determine the I/O capacity of a given configuration. SQLIO is provided ‘as is’ and there is no support offered for any problems encountered when using the tool. Please refer to the EULA.doc for the license agreement prior to using this tool. Supported Operating Systems: Windows 2000; Windows 2000 Service Pack 2; Windows 2000 Service Pack 3; Windows 2000 Service Pack 4; Windows NT; Windows Server 2003; Windows XP; Windows XP 64-bit

MemberValue
Chris Webb's BI Blog
It's my 30th birthday today so before I disappear down the pub to buy everyone else a pint (which is the bizarre tradition at my workplace) I thought I'd mark the day with a quick blog entry...

UI architecture for managing DTS packages
Narayana Rao Surapaneni
This articles details a UI architecture for managing DTS packages.

SSIS - Debugging Script Components
SimonS' SQL Blog
So I found out that you can't debug Script Components, you can Script Tasks but not components. I thought this was going to be a pain, but its not really. So what do you do?

Sound Matching and a Phonetic Toolkit
Michael Coles
One of the features of SQL Server 2000 is the Soundex feature that allows phonetic matching. Michael Coles brings us a new toolkit that solves some of the issues that occur with soundex as well as an explanation why this occurs.

SQL Server 2005 – Automating Creation of Database Snapshots
Muthusamy Anantha Kumar
SQL Server 2005 is packed with many new features. One of the new features that I would like to discuss in this article is Database Snapshots, which are read only static views of a database. SQL Server 2005 allows you to create multiple snapshots on a database. In this article, I would like to demonstrate the creation of database snapshots and automating the creation of database snapshots.

DROP ASSEMBLY change - just a convenience?
Bob Beauchemin's Blog
Looking at the Feb CTPNotes file again, there's another change that caught my eye. DROP ASSEMBLY has changed with respect to dependent assemblies. In past, you had to drop assemblies one at a time, so if assembly A called assembly B, you first dropped A then B. Now dropping A drops B automatically if B has the "is_visible" flag is false for B.

What do you mean by "unsupported"?
Bob Beauchemin's Blog
The last blog entry brings up the question of what I mean when I say something is "unsupported" in SQLCLR. Becuase I've said that J# is "unsupported". This doesn't mean that it won't ever work or that you couldn't actually get technical support for it, given enough time, energy, and money.

A first demo of the combined data provider
Bob Beauchemin's Blog
When I did my first demonstration with the combined SqlClient and SqlServer provider in the April CTP version of SQL Server, I was a bit surprised. I wrote a simple stored procedure to run in the server, exactly the way I've always written it to run on the client (modulo sending results back to the client):

What happened to SNAC tracing in beta2?
Bob Beauchemin's Blog
Since .NET 2.0 beta2 was released I've received a few inquiries about what happened to tracing SNAC (that's SQL Native Client). Looking at the adonetdiag.mof file, the SQLNCLI.1 entry (that's SNAC) was removed. I also got a solution/workaround from Glenn Johnson, who asked the question, then provided the answer faster than I could fly from Portland to San Jose and figure it out myself.

Mailing the graphic showplan to a friend
Bob Beauchemin's Blog
I've always liked the graphic showplan in SQL Server query analyzer. The biggest hassle with it came when you wanted to send the plan to a friend. Or maybe MS support, but support is your friend too... right? You could send screenshots (which had the annoying habit of never displaying those hover-over stats) or go back to textual showplan.

How to make a DBA smile
Bob Beauchemin's Blog
Speaking of SQL Profiler brought this to mind. The number one feature that brings a smile to every DBA's face:

DataDirect providers...and some ADO.NET 2.0 beta2 changes
Bob Beauchemin's Blog
Realized that I haven't blogged in a while. I been ...uh...working on stuff and traveling a lot lately. Big surprise, right? This week I'll be on vacation. Traveling. Now I understand what the term “busman's holiday“ means.

Go ahead, make a validation mistake...
Bob Beauchemin's Blog
One of the nice surprises in the April CTP is that SQL Server 2005 XML schema validation errors come with a location now. That's handy. Here's an example:

Combined provider: transactions and the return of 6522
Bob Beauchemin's Blog
With April CTP came the new combined managed provider replaces System.Data.SqlServer with a new improved, works in-process or out, System.Data.SqlClient. I just call it "the combined provider" now. People that didn't work on the betas will look at me funny when the product RTMs; "was there ever anything other than System.Data.SqlClient?". Why yes, Virginia...

XML Schema for the truly lazy
Bob Beauchemin's Blog
Here's something I've noticed you can do with SQL Server 2005 and Visual Studio 2005.

How DO you change your SQL Login password?
Bob Beauchemin's Blog
SQL Server 2005 will, by default on Windows Server 2003 systems, enforce password policies for SQL Server logins as well as Windows logins. Nice feature, but this means that your SQL Server login password can expire. So how do you change it? Well certainly the DBA can change it as (s)he always has, but you'd hate to bother your DBA every 42 days. Never mind what the DBA would think of that... And the user interface programs, SSMS and SQLCMD don't yet provide that feature. Neither does Visual Studio 2005 Server Explorer.

What's a truncation exception?
Bob Beauchemin's Blog
I commonly do a demo when teaching SQL Server 2005 where I write a SQLCLR UDF that's returns the string "Hello World". The define it, sans VS autodeploy, like this.

SqlNotificationRequest changes
Bob Beauchemin's Blog
In the April CTP of .NET 2.0, I chanced upon some changes to SqlNotificationRequest, using my favorite tool, .NET Reflector and my one my favorite investigative techniques, called “follow the error message”.

Au revoir, Ascend
Bob Beauchemin's Blog
I just finished up our last gig for SQL Server 2005 Ascend last week in Paris (OK... in Les Ulis). It was my first class on the June CTP, and it seemed to go without incident. Students were enthusiastic and a good time appeared to be had by all. There are a two more "rescheduled for a later date" classes still to be done, but this is for all intents and purposes the end of Ascend phase 2 for us.

I'm not sysadmin, I just play one on TV
Bob Beauchemin's Blog
I really like the feature known as “All Permissions Grantable” in which any permission can be managed using the GRANT verb, because there are no “magic” logins or users anymore. The coolest thing is that all server roles are now defined in terms of the permissions they have; this chart is in the BOL. In it, sysadmin equates to CONTROL SERVER.

Why my cat can't use a SQLCLR proc to read files
Bob Beauchemin's Blog
I'm known for my vivid imagination when making up test/exposition examples. I have a cat named Sam. So, once upon a time, I wrote:

AS2000 to AS2005 Migration White Paper
Chris Webb's BI Blog
Deepak on the newsgroup pointed out the existence of the following white paper on migration from AS2000 to AS2005 by Richard Tkachuk:

Sql Server 2005 CREATE CERTIFICATE syntax change
Davide Mauri's blog?
I'm working on Service Broker and i've found a not documented (or maybe i haven't found the documentation?) change in the CREATE CERTIFICATE command.

Who runs my Sql Server Agent job steps?
Davide Mauri's blog?
To know under which security context your job step will be run, go ahead and read the following:

Impersonation on an ADO.NET SqlConnection
Deferred Processing
ADO.NET lets you create a database connection to SQL Server using either a SQL login or a Windows login with the credentials your program is running under. What if you want to impersonate another Windows user?

XML Shredding in SQL Server 2005
Deferred Processing
I've written a short tutorial on shedding xml with SQL Server 2005.

Primary key on xml column
Deferred Processing
The xml data has a few limitations that other datatypes in SQL Server 2005 do not have, for example you cannot compare two xml values. This has to with the nature of xml, but as a result it prevents you from making an xml column a primary key, sort of...

A scorecard for Logistic Regression models
DMTeam
This article shows how to generate and interpret a logistic regression score card with Microsoft SQL Server Data Mining.

Upgrading Typed DataSets in Visual Studio 2005
Shawn Wildermuth
Typed DataSets are a common feature in .NET development projects. With the release this year of Visual Studio 2005 and the .NET Framework 2.0, how will your Typed DataSet projects fare in the upgrade process?

Swinging From Tree to Tree Using CTEs, Part 1: Adjacency to Nested Sets
adam machanic
I'm not sure how many times over the last several years I've seen the same tired article titles... "Climbing Trees in SQL," "Climbing Up the SQL Tree," or maybe, "Naked Coeds Playing in the Trees!" ... Oh wait, I think that last one might be something else.

Just SQL Part III – Where is it?
James Koopmann
We do not always want to SELECT everything from a table. The matter of finding the information required is a function of implementing the optional WHERE clause of the SELECT statement.

An interview with Douglas McDowell
Douglas Reilly
Douglas McDowell is the director of operations for business intelligence at Solid Quality Learning. He is a mentor, solution architect, project manager, and founder of Atlanta.mdf, an Atlanta SQL Server users group. Douglas is involved in business intelligence (BI) issues and his writing can often be found on the Windows IT Pro web site.

Tutorial: Designing Your First Report in SQL Server Reporting Services
Brian Knight
Trying to get past the Microsoft SQL Server Reporting Services learning curve? Well never fret, this article is a first in a series of tutorials to walk you through creating a practical report for your company to monitor your SQL Server databases. In this sample report, we are going to create a job monitoring system. Specifically, we are going to connect to our SQL Server and report if the jobs succeeded or failed the last time they ran.

I am starting to think that working more than twelve hours a day is bad for you :)
The SQL Doctor is In
It certainly does proclude blogging regularly :) I have been running and writing ETL queries non-stop for the past two weeks and it has been really hard, though really rewarding. I have gotten to tune some queries that are just beastly, and there is more of that to come. We don't have a particularly large data warehouse <100 GB, but we have a particularly interesting set of data with a pretty messy legacy database system as the source.

Controlling Transactions and Locks in SQL 2000 and 2005 - Part 1
Don Schlichting
Controlling Transactions and Locks with Hints and Snapshots in SQL 2000 and 2005.

Introduction to Dimension Security in Analysis Services 2005
sqlserveranalysisservices.com
Analysis Services 2005 has two security models for securing data: dimension security and cell security. Dimension security is used to permit or deny access to members of a dimension and any data associated with those members. Cell security permits or denies access to cell values only.

SSL in SQL Server 2005
Il-Sung Lee
I often receive questions inquiring about the (channel) encryption capabilities in SQL Server 2005. Like SQL Server 2000, 2005 can use SSL (Secure Socket Layer) to secure transmissions over the wire independent of the network protocol used. However, unlike its predecessor, SQL Server 2005 will always make encryption available, even if the administrator hasn’t provisioned a SSL certificate on the server machine. For this reason, SQL Server 2005 can and will ensure that the login packet is encrypted even if encryption hasn't been explicitly turned on. More precisely, unless either the client or the server requests encryption, the channel will not be encrypted beyond the login packet.

Auto-SQL DataGrid component. Part II: The full-featured version
Sangra
ASQLDataGrid is a useful component when working with RDBMS applications. It is capable to automatically construct and execute SQL statements based on its properties.

SQL Reporting Services with Dynamic Column Reports
JeyKey
An article on generating dynamic column reports.

SCSI vs SATA, Which is Faster?
Jon Bach
When configuring a server or high end custom computer, we are often asked about the performance benefits of SCSI over SATA. Since SCSI is much more expensive, the common perception is that it must be significantly faster. The short answer we give to that issue is that with the release of 10,000 RPM SATA drives, SCSI simply does not hold the edge it used to, and we do not feel it is worth the sizable increase in cost. Of course, that statement is very general. Surely there are still applications that greatly benefit from SCSI, and it is the goal of this article to take a deeper look at the performance differences in SCSI vs SATA, and to tell you how those differences translate to performance in real world applications.

Are UDFs Harmful to SQL Server Performance?
Matthew L. Wigdahl
Well, not really. But it is vitally important to understand when to use them and when to avoid them, as well as how best to construct them so as not to shoot your foot off.

Finding Duplicate Indexes in Large SQL Server Databases
Merrill Aldrich
One important component of tuning a large, heavily used database, is to ensure that the tables are indexed optimally: enough indexing, but not too much indexing for the application you are running. There are rules of thumb about index tuning, but the entire issue is so complex that there's no "silver bullet" solution that will work for every case.

Yet Another Median Calculation
Deferred Processing
SQL Server 2005 gives us yet another way to calculate a median. The secret is the ROW_NUMBER() function, it can be used to find the "middle" row. ROW_NUMBER() is a bit special because an alias for it cannot be used in a predicate in the same query. Either a CTE or sub-query can be used to get around this.

Strategies for keeping data available
Douglas Reilly
In part 1 of this series, I wrote about the reasons you should backup. From losing your job, to killing off the company, to obeying the law, there are lots of reasons to backup in general, and to do SQL Server backup in particular.

Using Parameters with Stored Procedures
Kathi Kellenberger
It seems that SQL Server developers avoid stored procedures whenever possible, especially if they are new to the product. Kathi Kellenberger brings us a basic article that you can give to developers that explains the basics of how you use parameters with ADO.NET, especially output parameters.

Change for 2005: Function optimization: WITH RETURNS NULL ON NULL INPUT
The SQL Doctor is In
A new feature for SQL Server 2005 is to let the query processor not actually execute a function when a null value is passed to any parameter. This is one of those "up to you to understand" features that can be quite bad if used the wrong way, but super (de duper for you Barney fans out there, which I hope are none of you!) if used the right way.

New 2005 Feature: $identity and $rowguid in the SELECT clause
The SQL Doctor is In
I was perusing the books online looking for stuff to learn last night (and blog of course, and if you are reading this you ought to do the same, it is fun!) and found this. You now have a couple of keywords to get the identity column and rowguidcol without knowing their name. I assume this is for replication or something like it, but it is in the books online, so it is documented:

Introduction to MSSQL Server Analysis Services: Mastering Enterprise BI: Create Aging "Buckets" in a Cube
William Pearson
In this article, we will look at a common business need, the aging of values. Aging is typically a process by which the enterprise determines the length of time that has transpired since a transaction (usually financial) has taken place within an account. Examples of common subject areas for agings in the business environment include accounts receivable, accounts payable and inventory, among many less common uses

CLR and floating point: Some answers to common questions
David Notario
Some very common questions I get from customers regarding floating point are:

SSIS Nugget: Get error descriptions
Jamie Thomson
If you use an error output then you will find that you get given an error number and an error column (i.e. the column in which the error occurred) but you do not get an error description. Well not to worry because youo can get the error description using a script component.

SSIS: Logging in pipeline components
A SQL Server Integration Services Blog
Ethan from AMB Dataminers had a great question about how to do logging through his pipeline component.

SSIS: Handling lookup misses
A SQL Server Integration Services Blog
It's typical in data warehouse loads to have lookups that go against dimension tables. If the key doesn't exist, either a new one is created, or a default value is used.

Whatever happened to...
Bob Beauchemin's Blog
I answered a question on the beta newsgroups last week about OSD and RSD (remember them?) by saying that those features had been pushed out into the future. The person then asked if the material in chapter 14 of our first look book had any practical value. I must admit that you can't cut and paste the examples and run them in the upcoming release. I don't know anything concrete about feature futures yet, so here's the long answer... from last week.

Still in Redmond and TABLESAMPLE clause
Randy Dyess
This week finds me spending more time here in Redmond starting the E-Learning piece of the Optimization workshop. Microsoft Learning has an E-Learning division that plans to take each module of the new classes and make them into little stand-alone courses. This allows someone who cannot attend at full week long class to still get the value of the class by purchasing these little courses. This will also give you a chance to only buy one small course over the exact topic you want to learn without sitting through 3 other modules you care nothing about. I am interested in seeing if it works.

Interview Question: PLE
Randy Dyess
Have been very busy lately so I thought I would try to post blogs in smaller increments inside of waiting to post a large blog at the end of the week.

Verifying the randomness between training and testing sets
DMTeam
This tip describes a method to verify equal distributions between your training and testing sets

The Database Administrator’s Guide to the SQL Server Database Engine .NET Common Language Runtime Environment
Kimberly L. Tripp
SQL Server 2005 provides the database application programmer with a rich new development platform by hosting the .NET Framework Common Language Runtime environment (CLR). With new capabilities come new roles and responsibilities for the Database Administrator (DBA). This whitepaper helps the DBA determine appropriate use of this new feature and guidance on when other alternatives may provide better performance, flexibility or capabilities. As well as offering guidance on suitable uses for the Database Engine .NET Framework Programming API this whitepaper also suggests code, change and release management processes that should be tailored to each DBA’s individual circumstances to ensure a professional and safe deployment.

Psuedo Median Aggregrate
Deferred Processing
In an item I previously blogged, YAMC, I showed how to use the ROW_NUMBER() function in SQL Server 2005 to do a pretty efficient median calculation. Being able to calculate the median in an expression can be useful, but a median aggregate function would be much more useful

Call them what you will, there’s value in asynchronous client script callbacks
Paul Glavich
There has been a lot of interest in the web-facing community lately about a new useability feature that goes by a number of different names—XMLHTTP, AJAX, out-of-band requests, and asynchronous client script callbacks, to name a few.

The Basics of Cryptology
Michael Coles
After a fantastic reception to his SQL Server 2000 cryptography toolkit, Michael Coles brings us a basic look at cryptography so you can understand what you are getting into if you implement it

SQL Server 2005: Auditing for weak passwords
Randy Dyess
Working with the developers the other day for the security course I designed, we came to the section discussing auditing logins for weak passwords and we made a discovery. In the past, SQL Server would place a NULL in the password field of the syslogins table if the login did not have a password. In SQL Server 2005, even the logins with no passwords have a hash in the password field of the sys.syslogins view.

3 Quick And Painless Ways To Fine Tune SQL Server Query Performance
Phillip Elbert
Effective database design is an aspect often overlooked in application design phases. A flawed data model will lead to flawed transactions that could compromise your data as well as produce poor response times. There are many factors which affect the performance of your database ranging from hardware to good design. This article focuses on tips and tricks to improve your data structure design that can increase SQL-Server query performance: index design, stored procedures and triggers.

Producing Results in Webpages (HTML) Using SQL 7
Eddy Arnold
Have you ever wanted to make available to your customers (who may not be SQL Server savvy) a way to view SQL Server database information without having to install Access or an aspect of SQL Server tools like Enterprise Manager or Query Analyzer on their local system? Microsoft has provided the solution.

Q&A: Can you BCP out a #Temporary table?
Julian-Kuiters
Because BCP will create a new connection, it will not be able to see the local temporary table. You can create local and global temporary tables. Local temporary tables are visible only in the current session; global temporary tables are visible to all sessions.

Making the Case for CASE Tools
Steve Callan
Many DBAs find themselves working with someone else's database design. Unless you are involved with building or designing a new application or database from scratch, when else would you have the opportunity to use a CASE tool? One of the points to take away from having read this article is that a CASE tool can also be used after the fact. CASE tools are an invaluable resource for a DBA and knowing how to use one (or more) of them can make your job easier.

[В начало]

ФОРУМ SQL.RU

Самые популярные темы недели

Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Новые упражнения на http://sql.ipps.ru
Как передать из таблицы в таблицу значение поля Image
INSERT из XLS
Сложный расчет разницы двух нарастающих итогов (расчет просрочки по платежам)
Владельцев sql 2005 прошу помочь.
написать SQL-запрос, слабо?
Непонятки с запросом помогите плиз...
Восстановление базы и бэкапа, лежащего в RAR архиве
set nocount on замедляет работу
В EM SQL server 2000 не могу просмотреть базы данных!!!
Увеличение намяти для MS SQL сервер. Стоит ли?
Книги в электронном виде
INSERT OPENDATASOURCE в EXCEL и формат ячеек
азница между аксесом и MS SQL SERVER
Сохраняется ли порядок записей при копировании.
Где живут расширенные процедуры?
Немогу установить MSDE
Как выцепить идентичные поля из 2х неявно связаных таблиц
Дефрагментация таблиц в SQL Server 2000

[В начало]

Вопросы остались без ответа

Помогите! Не работает Filtr по ApplicationName в Profiler
10-ти минутный опрос по производительности БД от SQLServerCentral.com
Wizard в MS SQL SERVER 2005 ?
Ширина столбцов в SQL Profiler

[В начало]

#272<<  #273  >>#274
Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013