Отправляет email-рассылки с помощью сервиса Sendsay

MS SQL Server

  Все выпуски  

MS SQL Server - дело тонкое...


Информационный Канал Subscribe.Ru

#215<<  #216

СОДЕРЖАНИЕ

1.КОНФЕРЕНЦИЯ
1.1.ТЕХНИКОН 2004
2.СОВЕТЫ
2.1.Операции с большими объемами данных в SQL Server (продолжение)
3.ССЫЛКИ НА СТАТЬИ
3.1.Статьи на русском языке
3.2.Англоязычные статьи
4.ФОРУМ SQL.RU
4.1.Самые популярные темы недели
4.2.Вопросы остались без ответа

КОНФЕРЕНЦИЯ

ТЕХНИКОН 2004

Группа компаний ТАЛГАР приглашает Вас принять участие в XIV Ежегодной конференции, более известной как ТЕХНИКОН, которая будет проходить с 22-26 ноября 2004 года. За столь долгий период проведения этого мероприятия в нашей компании сложился ряд традиций.

Мы традиционно предлагаем:

  • доклады и "круглые столы", личное неформальное общение и обмен опытом.

Мы традиционно обеспечиваем:

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

Отличительной особенностью ТЕХНИКОНА-2004 являются блок по информационной безопасности и блок по работе с персоналом. Мы считаем, что эффективному разрешению многих насущных вопросов способствует комплексное видение сложившейся ситуации.
Наша цель: найти точку соприкосновения специалистов различных подразделений, помочь посмотреть на проблему с разных позиций с целью прийти к согласованному решению.

Мы приглашаем к разговору:

  • руководителей отдела информационной безопасности;
  • директоров по персоналу и представителей кадровых служб;
  • руководителей отдела ИТ-служб и ИТ-департаментов предприятий и организаций;
  • начальников отделов АСУ, АСУП, ИВЦ;
  • ведущих специалистов по разработке, внедрению и сопровождению КИС.

ОСНОВНЫЕ НАПРАВЛЕНИЯ РАБОТЫ КОНФЕРЕНЦИИ:

  • Организация ИТ-службы.
  • Технологии.
  • Защита информации - основа безопасности бизнеса.
  • Работа с персоналом.
  • Экспресс-курсы.

ПРОГРАММА КОНФЕРЕНЦИИ "ТЕХНИКОН 2004"

Мы готовы рассмотреть Ваши предложения в рамках тематики конференции. Вы можете выступить со своими докладами, предварительно обсудив освещаемые вопросы с Оргкомитетом конференции.

Место проведения: Подмосковный пансионат.
Время проведения: 22 ноября - 26 ноября 2004 года.
Стоимость: 383,5 у.е. - участник, 354 у.е - партнер, 324 у.е. - докладчик. Возможно одноместное размещение.
Регистрация: для участия в конференции Вам необходимо заполнить регистрационную форму на каждого участника (партнера) конференции и отправить ее по факсу или электронной почте. Возможно резервирование мест по телефону, а также на нашем веб-сайте.

С уважением, руководитель Оргкомитета Марина Малышева
тел./ф.: (095) 128-18-21, 128-88-66,128-93-41 e-mail: mmalysheva@talgar
Web: www.talgar.ru

SQL.RU на ТЕХНИКОН 2003

[В начало]

СОВЕТЫ

Операции с большими объемами данных в SQL Server (продолжение)

По материалам статьи Joe Chang Large Data Operations in SQL Server
Перевод Виталия Степаненко

Тестовые запросы

Первые протестированные запросы - это команды Select, показанная ниже. Первая пара запросов Select использует столбец SeqID. Вторая пара запросов использует столбец DistID. Первый запрос в каждой паре - базовая команда Select без индексных хинтов. Второй запрос каждой пары использует хинт для указания определенного индекса для построения плана выполнения.

-- Последовательные строки, сканирование таблицы (table scan)
SELECT AVG(randMoney) FROM M3C_01 WHERE SeqID = 91

-- Последовательные строки, поиск по индексу (index seek) и bookmark lookup
SELECT AVG(randMoney) FROM M3C_01 WITH(INDEX(IX_M3C_01_Seq)) WHERE SeqID = 91

-- Разнесенные строки, сканирование таблицы (table scan)
SELECT AVG(randMoney) FROM M3C_01 WHERE DistID = 91

-- Разнесенные строки, поиск по индексу (index seek) и bookmark lookup
SELECT AVG(randMoney) FROM M3C_01 WITH(INDEX(IX_M3C_01_Disr)) WHERE DistID = 91

Оценочное и действительное количество строк для обоих поисковых аргументов (SARG) составляет 100 000 строк. План выполнения запроса по умолчанию (без хинтов) для обоих поисковых аргументов является сканированием таблицы. Хинт заставляет план выполнения использовать индекс для поисковых аргументов, который требует bookmark lookup для получения значения столбца randMoney. Сейчас статистика SQL Server содержит только информацию об области значений столбцов, а не о расположении строк. Таким образом, SQL Server не может знать, сколько страниц потребуется в действительности. Т.к. запросы с разными поисковыми аргументами имеют одинаковое оценочное (и действительное) количество строк, то план выполнения и оценочные затраты ресурсов одинаковы для обоих поисковых аргументов. Планы выполнения для первой пары запросов показаны ниже.

Сканирование таблицы использует 101 012 страниц, а Bookmark Lookup - 100 000 строк, так что дейтвительное время выполнения запроса в основном зависит от затрат на страницу для сканирования таблицы и от затрат на строку для bookmark lookup. Затраты ресурсов на сканирование таблицы показаны ниже.

Оценочные затраты на ввод-вывод равны 37.4 и оценочная загрузка процессора равна 5.50, но оценочные затраты ресурсов на всю операцию равны 85.86. Рассчитывая затраты на ввод-вывод и загрузку процессора по формуле из предыдущей главы, получаем 74.86 для затрат на ввод-вывод и 11.00 для загрузки процессора. Это в точности соответствует общему значению затрат на ввод-вывод и загрузку процессора, равному 85.86. Каждый раз значения затрат на ввод-вывод и загрузку процессора точно равны половине ожидаемого значения, но общие затраты точно равны ожидаемому значению.

Затраты на поиск по индексу показаны ниже. Затраты на ввод-вывод, равные 0.140240, точно равны базовым затратам из предыдущей главы плюс затраты на дополнительные 185 страниц, подразумевая, что каждая страница индекса содержит примерно 541 строку. Загрузка процессора, равная 0.110000, соответствует 100 000 строк для общих затрат на ввод-вывод и загрузку процессора, равных 0.250619.

Затраты на bookmark lookup показаны ниже. Затраты на ввод-вывод, равные 311.86, на 99.8% соответствуют затратам на ввод-вывод для единственной строки для Bookmark Lookup (0.0031249), умноженным в 100 000 раз.

Для тестирования больше применялись не изменение системной памяти или размера тестовых данных, а изменение настроек максимума памяти сервера. Разные времена выполнения, измеряемые с помощью Profiler с установленным максимумом памяти сервера в 256M и 1,154M, показаны ниже. Счетчики STATISTICS IO и Perfmon disk подтверждают, что вся таблица читается с диска с 256 мегабайтами серверной памяти, плана выполнения с Index Seek и Bookmark Lookup по столбцу SeqID, который требует очень небольшого количества чтений диска. При оценке времени выполнения для памяти в 1,154 мегабайт и данные, и индексы находились в памяти.

Запрос SELECT
100K строк
Последовательные
строки
Последовательные
строки
Разнесенные
строки
Разнесенные
строки
256M памяти Index + BL Сканирование таблицы Index + BL Сканирование таблицы
Время запроса (сек) 0.3 10.5 167 10.5
Строк или страниц / сек 333,333(R) 9,620(P) 599(R) 9,620(P)
Диск.чтений / сек Низкое ~1,200 ~600 ~1,200
Ср.байт / 1 чтение 64K 8K 64K
1154MB памяти
Время запроса (сек) 0.266 1.076 0.373 1.090
Строк или страниц / сек 376,000 93,877 268,000 92,672

Оба сканирования таблицы требуют около 10.5 секунд для выполнения, так что расположение строк не влияет на время сканирования таблицы. Количество операций ввода-вывода для каждого физического диска составляло примерно 600/сек. при 64Кб на 1 чтение при скорости передачи 37.5Мб/сек., почти максимальная скорость для винчестера Seagate ST318451 (современное поколение дисков со скоростью вращения 15K поддерживает последовательную скорость передачи данных >50MB/сек.)

План выполнения с поиском по индексу для последовательных строк показывает некоторую начальную активность диска (меньше, чем 200 операций ввода-вывода) при конфигурации памяти в 256 мегабайт, но после этого выполняется в памяти. План выполнения с поиском по индексу для разнесенных строк был вынужден получать каждую 8-килобайтную страницу из 101 012-страничной таблицы с диска в случае, когда максимальная память диска ограничена 256 мегабайтами. Каждый диск в среднем выполнял 300 операций ввода-вывода в секунду, выбирая 8KB за 1 чтение. Может показаться, что 300 операций ввода-вывода в секунду - это довольно много для диска со скоростью вращения 15K. Однако средняя длина очереди была равна 40 на диск, и данные были распределены на пространстве около 0.8 гигабайт из 32 гигабайт дискового пространства. Большая длина очереди позволяет диску менять последовательность операций ввода-вывода, а небольшое использование дискового пространства уменьшает среднюю дистанцию, которую проходит головка диска - оба этих фактора увеличивают производительность ввода-вывода.

При конфигурации памяти в 1154 мегабайта, т.е. с достаточным количеством памяти для хранения в ней всей таблицы и обоих индексов, как только данные загружаются в память, дисковая активность у всех четырех запросов прекращается. Скорость сканирования таблицы, находящейся в памяти, составляющая примерно 93 000 страниц в секунду, является ожидаемой производительностью процессора Xeon 2.4GHz (с максимальной степенью параллелизма, равной 1), где затраты на 1 страницу при сканировании таблицы составляют примерно 25K циклов процессора. И план Index Seek, и план Bookmark Lookup требуют гораздо меньших затрат, чем сканирование таблицы, когда все данные находятся в памяти. Bookmark Lookup для последовательных строк работает примерно в 4 раза быстрее, чем табличное сканирование, а для разнесенных строк работает почти в 3 раза быстрее, чем табличное сканирование.

Формула расчета затрат для плана выполнения (>1 гигабайта) оценивает поиск по индексу, сопровождаемый bookmark lookup, как в 3.6 раза более затратный (по времени выполнения), чем табличное сканирование. Затраты плана выполнения не учитывают такие факторы, как находятся ли данные уже в памяти, могут ли данные поместиться в памяти, хотя эти факторы имеют огромное влияние на затраты ресурсов на выполнение запроса. Для SQL Server вполне оправданно не учитывать расположение данных, потому что статистика SQL Server содержит эту информацию.

Когда все данные должны читаться с диска, действительные затраты на табличное сканирование, использующее последовательное чтение с диска, оказываются в 16 раз меньше, чем затраты на план выполнения с поиском по индексу и с bookmark lookup с операциями ввода-вывода для произвольно расположенных данных. Сравните это с преимуществом в 3.6 раза, которое было предсказано формулой расчета затрат плана выполнения. Использованный здесь диск со скоростью вращения 15K RPM имеет примерно в 2 раза большую производительность произвольного ввода-вывода, чем диск со скоростью вращения 7200RPM, доступный 8 лет назад, но он еще имеет и в 8 раз большую производительность последовательного чтения по сравнению со старыми дисками. Вполне возможно, что старый диск 7200RPM действительно выдал бы именно такой результат, который был предсказан формулой плана выполнения.

Если количество дисков увеличить, то и последовательная, и произвольная производительность операций ввода-вывода увеличится примерно на одно и то же значение. Когда есть достаточно дисков для достижения уровня последовательной передачи данных в 800Mб/сек. (в 10 раз больше, чем текущая скорость передачи данных), производительность табличного сканирования ограничится скоростью работы процессора. Однако есть хорошие основания полагать, что дальнейшее увеличение количества дисков увеличит производительность произвольного ввода-вывода до 10 000 операций в секунду.

(Продолжение следует)

[В начало]

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

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

Параметризованные запросы ADO.NET - средство защиты от SQL Injection атак
Василий Петрухин
ADO: атаки возможны в приложениях, не проверяющих полученные от пользователя данные. Уязвимое приложение использует полученные данные для построения динамического SQL запроса и последующего (его) выполнения. Подобный тип уязвимостей характерен как для веб-приложений (ASP.NET, ASP, PHP и так далее), так и для обычных приложений. Однако, для веб-приложений они наиболее критичны, из-за широкой аудитории пользователей....
Как определить неактивные индексы SQL Server
Luis Martin
MSSQLServer: Для администраторов баз данных регулярной задачей является просматривание баз данных и поиск различных путей увеличения их производительности. В то время как добавление новых или улучшение индексов базы данных является одним из основных путей повышения производительности, повышение производительности через удаление неиспользуюемых индексов или определение слишком больших индексов, которые потребляют много ресурсов SQL Server. Неиспользуемые индексы снижают производительность выполнения команд INSERT, UPDATE и DELETE, и приводят к лишним дисковым операциям. Поэтому, чем больше лишних индексов мы сможем удалить, тем будет лучше...
SQL Server 2000: основы работы с представлениями
Navneeth Diwaker Naik
MSSQLServer: Представления - это не что иное, как сохраненные команды SQL, которые иногда называют "виртуальными таблицами". Учтите, что представления не могут хранить данные (кроме индексированных представлений); они только ссылаются на данные, присутствующие в таблицах...
Перемещение статистики SQL Server из одной базы данных в другую
Joe Chang
MSSQLServer: Многие рабочие базы данных в настоящее время имеют объем в десятки и сотни гигабайт. Такой объем не является проблемой для аппаратного обеспечения компаний. Однако разработчики обычно любят работать на своих персональных компьютерах, включая ноутбуки с ограниченным дисковым пространством, поэтому база данных размером в 10-100 гигабайт уже может вызвать трудности. Кроме того, регулярная передача таких больших файлов данных через сеть может не иметь смысла из-за потерь рабочего времени. Поэтому предпочтительнее работать с меньшей по размеру базой данных, но имеющей ту же схему. Главным отличием между маленькой тестовой базой данных разработчика и полноразмерной рабочей базой данных является распределение данных статистики. Это приводит к разным оценкам затрат ресурсов и п...

[В начало]

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

Extracting a String Within Delimeters - Part 2
Stephen Lasham
I recently received correspondence from Denis Oliynik, IT manager at JSC 'Rise', Kiev in the Ukraine, who kindly provided me with a script improving on my previously published solution. Denis's solution removes the CASE statement for handling where a second delimiting character is not present. This simplified code explained below offers a clever trick to add to your SQL skills
MDX Essentials: Numeric Functions: Introduction to the AVG() Function
William Pearson
In this lesson, we will introduce a commonly used numeric function in the MDX toolset, the AVG() function. The general purpose of the AVG() function, as we shall discover, is to return the average of the tuples occupying a set. We will consider elementary uses of the function in this article, and then explore more sophisticated uses in subsequent articles. For now, we will build a foundation in the basics
Custom Object Data Binding with .NET
Luther Stanton
The Data Binding capabilities Microsoft has delivered with the .NET platform can be a powerful developer tool. Boiled down to its most simple definition, Data Binding is the act of linking the properties of an application element to specific elements in a graphical presentation element of the application. An example would be linking a property of a custom object, such as the first name on an employee object, to a text box's text property on a windows form
Work with XML Data Type in SQL Server 2005 from ADO.NET 2.0
Thiru Thangarathinam
One of the excellent features of the next release of SQL Server, known as SQL Server 2005, is its deep XML integration with the SQL Server database engine. This integration goes well beyond the simple relational-to-XML mapping layer that SQL Server 2000 provided. SQL Server 2005 will feature a native XML data type that will allow you to store native XML data in SQL Server itself
Configuring SQL Server Express 2005
Justin Cook
The new Visual Studio Express tools are truly sweet, even though still in Beta. This holds true for SQL Server Express Edition, the free new powerful database system. The only problem with the Beta product is that there's no real graphical configuration tools, so getting the thing to actually run can prove to be a hefty task. This article will provide all the necessary instruction to get up and running happily
Filtering, Sorting, and Summarizing Data in Crystal Reports
Neil FitzGerald, Bob Coates, James Edkins, Naisan Geula, Ryan Marples, Michael Voloshko
Sample Chapter is provided courtesy of Que. The beauty of Crystal Reports is its ability to translate data from your database into useful information, but getting it to do that can take some work. This chapter will help you get started
Waiting for Yukon
Michael Otey
Competition in the database arena has never been fiercer. Remember the year 2000? Clinton was in the White House, the tech economy was booming, and Microsoft had just released SQL Server 2000. The new SQL Server release quickly broke through the wall from department-level to enterprise-level database. It hit the top clustered Transaction Processing Performance Council (TPC) TPC-C scores so convincingly that the TPC split the benchmark into clustered and nonclustered categories. Since then, however, SQL Server's main enterprise competitors have launched new releases. Now, 4 years after its impressive debut, SQL Server 2000 is invisible in the clustered TPC-C scores, which feature Oracle's new 10g database on top. And SQL Server sits in third place in the nonclustered category, with IBM's DB2 holding the best nonclustered score
Merge Replication Performance Tuning and Optimization
Damian Castro, Alejandro Miguel, Bren Newman
Merge replication can provide a high-performing and scalable solution for database applications that require data to be updated at multiple locations, but performance and scalability depend on application design and the appropriate setting of replication parameters. Based on tests conducted using a variety of hardware configurations and replication environments, this paper makes suggestions about applying the initial snapshot, optimizing replication settings, and configuring replication for scalability
SQL Server 2000 Administrator's Pocket Consultant
William R. Stanek
The table of contents of Microsoft SQL Server 2000 Administrator's Pocket Consultant, reprinted with permission from Microsoft Press
Sorting output with CASE expressions for custom sort orders
Serdar Yegulalp
Sometimes, a recordset will need to be returned with a non-standard sort order -- something which isn't possible with conventional sort or collation mechanisms. One example would be to have a zero in a numeric column placed at the bottom of the sort order, but to have everything else sorted normally (i.e., top-to-bottom, or bottom-to-top, if desired)
Stop SQL Injection Attacks Before They Stop You
Paul Litwin
Armed with advanced server-side technologies like ASP.NET and powerful database servers such as Microsoft® SQL Server™, developers are able to create dynamic, data-driven Web sites with incredible ease. But the power of ASP.NET and SQL can easily be used against you by hackers mounting an all-too-common class of attack—the SQL injection attack
Insert Script Generator
Sooraj PM
Use this tool for transferring the data between similar tables in same database or different database of Microsoft SQL Server. This tool gives the output as an SQL file in SQL folder of the application folder. After creating the SQL file run the script in the destination database to create the records. The generated SQL script has tested in MS SQL Server 2000. I have not tested it in other databases
Enterprise Architecture View: Business Rules, Business Meta Data & Data Stewardship Component of the Complete Meta Data Model
Michael F. Jennings
This column is adapted from the book Universal Meta Data Models by David Marco & Michael Jennings (John Wiley & Sons). This month, we continue our examination of the complete meta data model with the business rules, business meta data and data stewardship component area of the model and the various subject areas that compose it
15 Seconds : Queue MSMQ Messages from SQL Server
Calvin Luttrell
If you've ever found yourself scratching your head, wondering how to queue a message from MS SQL Server, then you might find yourself writing your own plumbing. (Microsoft will most certainly be dealing with this boggle in future version). And I don't know how your boss operates, but I usually need it done like -- yesterday
Integrating XML and Relational Database Technologies: A Position Paper
Giovanni Guardalben and Shaku Atre
XML is an ideal tool for data interchange. XML documents can be saved on either XML native databases or legacy databases. In spite of the need for efficient XML storage, native XML databases still make up only a tiny percentage of all installed databases. This white paper explores both the XML and relational approaches
Data Warehouse Design Best Practices, Part 2
Shimant Das
Here are some more best practices regarding data warehouse design. Please see Part 1 of this article which presented the first 10 data warehouse design best practices. In Part 2, I would like to discuss a few more practices which would help in designing data warehouses not only accurately but also in timely manner. Each practice is followed by its respective rationale and the possible actions that may be taken
Part 2 - How To Fine-Tune Your NON-NUMERIC REPORTING – Your readability Level
Donavan McDonough
I invite you to submit a few pages of yours writing for analysis by my favorite "Readability Grading" program. Find out where you rank on the following scale
SQL Server: Resolving error 644
Michael Hotek
We are using SQL Server 2000 SP3 on Windows 2000 Advanced Server 2000 SP3. Hardwareis a cluster with two servers: Compaq Proliant DL580 with external storage device Compaq RA 4100 (Raid 5)

[В начало]

ФОРУМ SQL.RU

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

Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Новые упражнения на http://sql.ipps.ru
Tool Вы знаете что твориться на ваших 10-30+ серверах ?
DATETIME, 24:00:00 и отображение в Enterprise Manager
Не работает Where на представлении
SQL Server Health and History Tool (SQLH2) Reports
Репликация по FTP
Вопрос по триггерам "instead of update"
Временные таблицы.
Блокировка таблицы, есть вопрос
Как (если можно) в ХП изменить Представление?
SOS! Как запустить отладчик SQL кода?
job - отваливается :(
Как включить использование hyper-threading в MSSQL2000?
База не восстанавливается по дифференциальной копии...
Connection Broken при использовании AWE.
Помогите составить триггер
Счетчик общий для нескольких таблиц
курсор на хранимую процедуру
Не сортируется....

[В начало]

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

Republish in Merge Replication
Вопрос о 35(3)
MS SQL оптимизация запросов
EnterpriCe Edition
Утилита для поиска по объектам MSSQL, не могу вспомнить
LogShipping repair

[В начало]

#215<<  #216


Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Виталию Степаненко на адрес: stvitaly@sql.ru

sql.ru Описание рассылки

СЕМИНАРЫ
КОНФЕРЕНЦИИ

МИНИФОРМА
ПОДПИСКИ



ПУБЛИКАЦИИ
АРХИВ


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.winsoft.sqlhelpyouself
Отписаться

В избранное