Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
#045<<#046
СОВЕТЫ
MS SQL Server и кэширующие дисковые контроллеры
По материалам статьи Microsoft Knowledge Base "INF: SQL Server and Caching Disk Controllers".
Информация в этой статье относится к Microsoft SQL Server версий: 4.2x, 6.0, 6.5, 7.0, 2000.
Использование дисковых контроллеров, кэширующих запись (такой механизм называется отложенной
записью - write back caching), может существенно поднять эффективность SQL Server. Дисковые
контроллеры (кэширующие запись) и дисковые подсистемы могут быть безопасны для SQL Server,
если они специально разработаны для использования в критичной к потере данных среде, какими
являются современные системы управления базами данных (DBMS - СУБД) использующие транзакционные
механизмы обслуживания информации. Эти их особенности должны предотвращать потерю кэшированных
данные, если происходит отказ системы. Достигнуть этого только путём использования источников бесперебойного
питания (ИБП - UPS) не достаточно, потому что система может отказать по причинам, которые не связаны с
энергообеспечением. Использование большинства кэширующих контроллеров и дисковых подсистем может
быть безопасно для работы совместно с SQL Server. Современные серверные платформы, как правило,
безопасны. Однако, Вы должны получить у своего поставщика серверных решений информацию о том, что
дисковая подсистема была проверена и одобрена для использования в транзакционной среде RDBMS.
Инструкции SQL Server, модифицирующие данные, инициируют запись логических страниц. Этот поток
записываемых страниц, может иметь два места назначения: журнал регистрации транзакций или
непосредственно сама база данных. Что бы повысить эффективность этих операций, SQL Server задерживает
запись в базу данных, размещая страницы в кэше данных, буферизируя, таким образом, систему записи
модифицированных страниц. Запись в журнал транзакций имеет очень маленькую задержку после
получения инструкции COMMIT. Они не кэшируются также как данные. Поскольку регистрация
изменений страниц в журнале всегда предшествует записи страниц данных, журнал регистрации транзакций
иногда называют журналом "write-ahead".
Целостность транзакций - одна из фундаментальных задач, решаемая современной СУБД. Транзакции
являются не делимыми, целостными модулями инструкций, которые выполняются полностью или
откатываются полностью назад. Журнал регистрации транзакций SQL Server (write-ahead), это жизненно
важный компонент в системе поддержки целостности транзакций. Любая СУБД должна включать систему
поддержки целостности транзакций, которая позволяет восстанавливать работоспособность базы после
незапланированных отказов системы. Увы, идеальную с этой точки зрения систему создать очень трудно и
поэтому подобные отказы всё-таки могут случаться. Для многих СУБД отказ системы может привести к
необходимости выполнения очень продолжительных, ручных процедур по восстановлению целостности
данных или по восполнению утраченной информации. Напротив, механизм восстановления данных после
сбоя в SQL Server полностью автоматизирован и работает без вмешательства оператора. Например, SQL
Server может поддерживать критическое приложение, промышленную прикладную программу, и пережить
отказ системы из-за мгновенного колебания напряжения в электросети. После восстановления электропитания,
аппаратные средства сервера перезагрузят программное обеспечение операционной системы и SQL Server.
После запуска, SQL Server автоматически выполнит процесс восстановления, основанный на данных в
журнал регистрации транзакций. Этот процесс полностью проходит без вмешательства оператора. Всякий
раз, после перезагрузки своих рабочих станций, пользователи могут убедиться, что их данные не пострадали,
включая последнюю транзакцию, которую они ввели. Механизм поддержки целостности транзакций SQL
Server и автоматического восстановления представляет собой очень мощное средство поддержания высокой
производительности системы в любое время (time-and-labor).
Если дисковый контроллер, кэширующий данные, не разработан для использования в транзакционной среде
СУБД, это может поставить под угрозу способность SQL Server восстанавливать данные, что может привести
к разрушению базы данных. Это может случится, если контроллер вмешивается в работу журнала регистрации
транзакций SQL Server, и буферизует их в собственном аппаратном кэше контроллера, но не может сохранить
эти записанные в его кэш страницы в момент отказа системы. Большинство современных дисковых контроллеров
имеют опцию кэширования записи, но не все они позволяют эту опцию отключать. Даже если сервер
использует UPS, это не гарантирует, что кэширование записи будет защищено. Множество типов системных
отказов происходит по причинам, не зависящим от UPS. Например, ошибка четности памяти, зависание
операционной системы или аппаратный сбой, который провоцирует перезагрузку системы, могут повлечь
за собой неизбежное прерывание работы системы. Отказы памяти и аппаратных средств ввода/вывода, могут
привести к тому, что информация в кэше контроллера будет потеряна.
Другая возможная проблема, связанная с использованием кэширующего запись контроллера, может
проявляться во время завершения работы операционной системы. Иногда необходимо периодически
перезагружать операционную систему или перезагрузка ОС нужна для внесения изменений в её конфигурацию.
Даже если оператор будет следовать рекомендации о том, что до начала перезагрузки операционной системы
необходимо дождаться, чтобы дисковые операции прекратились, кэширование записи может всё ещё выполняться
контроллером. Когда исполняется комбинация клавиш CTRL+ALT+DEL, или нажата кнопка RESET, операции
кэширования записи могут быть прерваны, что потенциально может привести к повреждению базы данных.
При проектировании аппаратных средств кэширования записи, фирмой производителем дисковых контроллеров
должны приниматься во внимание все возможные причины потери "грязных" данных кэша, что бы обезопасить
базы данных. В числе мер, которые могут быть предприняты разработчиком такого контроллера, можно назвать:
прерывание сигнала RST шины контроллера, который даёт команду на немедленный сброс кэша контроллера;
наличие собственного аккумулятора у контроллера; наличие зеркальной или ERC памяти (error checking correcting).
При приобретении дискового контроллера, для сервера СУБД, убедитесь у Вашего поставщика, что этот контроллер
имеет перечисленные опции или любые другие особенности, позволяющие избежать потери данных из собственного
кэша контроллера.
FAQ на тему использования кэширующих дисковых контроллеров с MS SQL Server
По материалам статьи Microsoft Knowledge Base "INF: Using Hard Disk Controller Caching with SQL Server".
Информация в этой статье относится к Microsoft SQL Server версий: 4.2x, 6.0, 6.5, 7.0
ВОПРОС
Возможны ли проблемы при использование кэширующего дискового контроллера, работающего в составе
SQL Server, если к серверу подключен UPS, чтобы избежать нарушения целостности данных из-за сбоя питания?
ОТВЕТ
Если дисковый контроллер когда-либо не сможет записать кэшируемые им данные, предназначенные для
журнала регистрации транзакций SQL Server, механизм восстановление сервера баз данных не сможет работать правильно.
ВОПРОС
Какой эффект оказывает использование кэширующего дискового контроллера на эффективность работы
SQL Server?
ОТВЕТ
Если кэш дискового контроллера всегда будет записан на диск так, как это предусматривалось работой
сервера (даже при получении команды с клавиатуры на перезагрузку, при сбое операционной системы или
при сбое жёсткого диска), проблем в работе СУБД не возникнет. С другой стороны, если дисковый контроллер
не сможет осуществить запись некоторых данных журнала регистрации транзакций SQL Server и задержит
физическое применение каких-либо данных журнала регистрации транзакций (из-за использования типа сортировки
«elevator»), и не сможет записать оставшуюся не применённой часть данных (вероятность такого
стечения обстоятельств не исключена); SQL Server никогда не узнает, что часть записей журнала регистрации
транзакций отсутствует. Процедура регенерации данных при старте сервера или даже последовательное восстановление
полной копии базы с последующими копиями журнала транзакций (включая копию журнала после сбоя) не сможет
привести к правильному восстановлению базы данных. В самом худшем случае, процедура регенерации данных,
после потери данных кэша контроллера (повлекшей нарушение целостности данных), пройдёт успешно, а потеря
данных будет обнаружена намного позже.
Если дисковый контроллер разработан для использования в составе СУБД, он должен уметь правильно использовать
метод сквозной записи на диск (write-through) и предоставлять возможность выбора для разных дисковых массивов
разных методов кэширования. Дисковое устройство, на котором размещены журналы регистрации транзакций,
должно всегда быть write-through. Кроме того, если автоматическая регенерация данных при старте СУБД отрабатывает
должным образом, все устройства SQL Server должны быть очищены после исполнения контрольной точки. Если
дисковый контроллер не поддерживает опцию write-through, единственной альтернативой этому можно считать
очень частое создание резервных копий. Кроме того, Вам не придётся рассчитывать на процедуру регенерации
данных при старте сервера и на те записи журнала транзакций, которые были активны в момент сбоя. Вы сможете
рассчитывать только на те записи, которые до этого удалось сохранить в резервной копии.
ВОПРОС
Где должно выполняться кэширование, на SQL Server или на дисковом контроллере?
ОТВЕТ
Ответ зависит от того, какой метод позволяет СУБД работать быстрее. Наши эксперименты показали, что кэш
SQL Server является более эффективным, чем буфер системы ввода-вывода операционной системы. Однако, мы
не располагаем сведениями о том, действительно ли кэширование SQL Server более эффективно чем кэширование,
используемое специализированными дисковыми контроллерами. Кэш SQL Server, по видимому, не работает с
такой же скоростью, как аппаратный кэш. Однако, кэш СУБД более интеллектуален и может работать более
продуктивно.
Проведите моделирование с имитацией типичной рабочей нагрузкой, установив параметры памяти SQL Server
в минимальные значения, необходимые для поддержки требуемого числа пользователей (кэш дискового контроллера
должен быть активным) для вашей инсталляции. Выполните измерения производительности этой конфигурации,
которые будут сравниваться с конфигурацией без аппаратного кэша. После этого, пробуйте запустить сервер
баз данных с параметрами памяти, увеличенными на величину кэша данных в RAM, которая должна быть сравнима
с величиной кэша дискового контроллера (кэш дискового контроллера должен быть дезактивирован). Для корректного
сравнения, число страниц в кэше процедур должно быть одинаково в обоих моделируемых вариантах. Это потребует
некоторой корректировки конфигурации, потому что размер кэша процедур определяется в процентах от полного
размера кэша данных, в то время, как размер полного кэша определяется конфигурационными параметрами памяти
и количеством пользовательских подключений. Реальный размер кэша будет составлять то, что останется после
предоставления 42КБ каждому пользовательскому подключению. Это остаток будет разделен между процедурным
кэшем и кэшем страниц данных согласно процентному соотношению, указанному в параметре кэша процедур.
Замечания автора рассылки
В качестве резюме к обеим статьям, можно сказать, что грамотное использование аппаратных дисковых контроллеров, имеющих собственный кэш операций ввода/вывода, несомненно, должно привести к существенному повышению эффективности работы СУБД. Накладываемые технологией обслуживания транзакций ограничения на опции и режимы кэширования, встраиваемые в аппаратные средства, несомненно, должны приниматься во внимание при инсталляции, как "железа", так и СУБД. Современные дисковые контроллеры объединяют в себе целый набор разнообразных возможностей, дающих огромные преимущества и от которых невозможно отказаться (RAID, высвобождение ресурсов центрального процессора, многоканальность, диски автоматической подмены, работа в кластере и т.д.). В последнее время очень широкое распространение получили технологии NAS и SAN, которые не мыслимы без применения очень мощных и высокоинтеллектуальных контроллеров дисковых массивов. Всё это говорит о том, что работа современной СУБД без кэширующих дисковых контроллеров становится невозможной. Представленными Вам статьями было показано, что неправильная конфигурация аппаратных средств может привести к повреждению базы данных. Ключевым элементом, защита которого позволит избежать подобных разрушений, является журнал регистрации транзакций. Журналы должны располагаться на отдельных дисковых массивах и для этих дисков должно быть запрещено кэширование записи. Кроме того, необходимо запретить использование сигналов интерфейса SCSI на инициализацию устройств, в результате которой происходит потеря данных аппаратного кэша контроллера. Каждый контроллер, как минимум, должен обладать собственным, встраиваемым аккумулятором, для предотвращения преждевременного обесточивания кэша. Современные аппаратные средства идут ещё дальше. Возможно дублирование и резервирование не только самих дисков, но и контроллеров, шин и т.п. Современные автономные дисковые массивы способны обслуживать не один, а несколько серверов, причём используя для этого целый набор интерфейсов, таких, как SCSI, FC, Fast Ethernet и т.п. Давно уже прошли те времена, когда размер базы данных не превышал десятка Гигабайт. Сегодня, множество задач оперирует сотнями, а то и тысячами Гигабайт, для чего большой объём кэша данных у СУБД начинает иметь огромное значение. Для эффективного наполнения такого кэша данных наличие промежуточного, аппаратного кэша даёт только преимущества.
ГОТОВИМСЯ К ТЕСТУ ПО 70-028
ШПАРГАЛКА #9 Продолжение (обзор официального курса Microsoft)
Архив шпаргалок Вы найдёте на следующих сайтах:
http://www.sql.ru/subscribe/
http://subscribe.ru/archive/comp.soft.winsoft.sqlhelpyouself
Microsoft Event Viewer
Журналы операционной системы Microsoft Windows NT, доступ к которым легко осуществляется с помощью
программы Microsoft Event Viewer, дают много полезной информации о событиях, зафиксированных ОС. Анализируя
эти события можно составить представления о характере возможных «узких» мест в Вашей системе. Программа Event
Viewer предоставляет возможность анализа трёх журналов событий операционной системы: Windows NT Application Log,
Windows NT System Log и Windows NT Security Log.
Windows NT Application Log – это журнал регистрации событий запущенных на сервере Windows NT приложений,
включая сервисы MS SQL Server. Windows NT System Log – журнал регистрации системных событий, порождённых
компонентами Windows NT (например, драйверами устройств). Windows NT Security Log – журнал безопасности, в
котором регистрируются все события связанные с авторизацией и аутентификацией доступа к ресурсам системы
(например, попытки регистрации в системе).
Этими журналами собираются, в частности, события, которые отражают причины прерывания работы системы или
её компонент, а также сведения о событиях, влияющих на производительность работы. Записи в журналах, регистрирующие
уведомления о переполнении журналов, повреждениях файлов, ошибках приложений или предупреждения о не
штатных ситуациях должны стать предметом постоянного контроля со стороны DBA. В число событий, генерирующихся
приложениями, могут входить и события, порождаемые в ходе исполнения хранимых процедур на сервере баз данных.
Кроме того, в этом журнале отображаются многие события, которые фиксируются также в журнале ошибок SQL
Server, включая запуск и останов его сервисов, выполнение регенерации, оповещениях и т.п. Удобство использования
программы Event Viewer состоит в том, что она обладает удобными средствами просмотра, фильтрации и поиска по
содержащимся в журнале событиям.
Продолжение следует.
ПОЛЕЗНОСТИ
Настольные OLAP-программы и OLAP-компоненты
Автор: Владимир Некрасов.
Так сложилось, что не любые программы, которые быстро
выполняют произвольные запросы, расчеты и выдают пользователю данные в понятном
ему виде принято считать OLAP-средством. К классу OLAP относят только те
программы, которые в качестве внешнего интерфейса предоставляют пользователю
многомерную управляемую таблицу. Эта таблица позволяет пользователю менять
местами колонки и строки, закрывать и раскрывать <измерения> -
описательные колонки, задавать условия фильтрации и при этом она
автоматически...
[Перейти к статье]
Автор: Владимир Журавлев, Олег Поль.
Речь пойдет в основном о SQL select с предложениями outer left/right join, union и использовании групповых функций...
[Перейти к статье]
Новые технические статьи Microsoft
Q293901 - BUG: Incorrect Number of Rows Inserted Using MS ODBC Driver and Stored Procedure on SQL Server
Q293790 - BUG: SQLDescribeParam Causes Syntax Error or Access Violation
Q295642 - BUG: SQL Server 2000 Virtual Server Licensing Mode May Be Changed During Setup
Support
WebCast: Microsoft SQL Server 2000: Merge Replication Enhancements
Q296539 - BUG: T-SQL Debugger Doesn't Allow Stepping Through Stored Procedures with Same Name Owned by Non-DBO Users
Q294993 - FIX: Combination of Order and CrossJoin Functions in MDX Causes Error
Q290212 - INF: SQL Server 2000 Service Pack 1 Beta Fixlist
Q290213 - INF: Readme.txt for SQL Server 2000 Service Pack 1 Beta
Q296849 - BULK INSERT Replaces Current Datetime Column Value with Previous Column Value if Data File Contains All Spaces
Q124174 - BUG: SQL Service Manager Is Monochrome When Colors Are > 256
Q123330 - BUG: 2710 Error When Executing St. Proc. w/ UPDATE STATISTICS
Q122924 - INF: Named Pipes Connectivity Unstable on Windows NT 3.5
Q134892 - FIX: Performance Monitor SQL Server-Log Object Corrupt
Q156430 - PRB: Slow SQL Server Connections Using Named Pipes with Win 95
Q186114 - PRB: Error While Running SQL Cluster Setup.exe
Q192710 - INF: Basic Guidelines for Installing SQL Server Version 6.5 or 7.0
Q205557 - PRB: SQL Server Tape Backup is Unsupported on Windows 95/98 Computers
Q225084 - FIX: IE 5.0 Hinders SQL Server 7.0 Wizards and Tabbed Dialogs on Windows 95 or 98 Computers
Q239473 - PRB: 70rebind.exe for Windows 2000 and MDAC Upgrades on Clustered SQL Server 7.0 Servers
Q244980 - INF: Virtual SQL Server Network IP Address Modifications
Q246694 - PRB: Setup on Windows 2000 Fails Through Terminal Client
Q248158 - PRB: Select From Database on CD-ROM May Return Error 601
Q248380 - PRB: SQL 7.0 Failover Wizard Error when Updating Binaries on Cluster
Q250506 - FIX: Concurrent Execution of Stored Procedure That Recompiles May Fail To Execute All Statements
Q249802 - PRB: Error Message Occurs When You Install SQL Server 7.0 Service Packs in a Cluster Environment
Q265865 - FIX: Float Data Inaccurately Converted When Sent to Linked Server
Q266167 - PRB: Using OLAP to Access a DBC Gives Error Message "Cannot Open File"
Q273673 - INF: SQL Virtual Server Client Connections Must be Controlled by Clients
Q274797 - INF: SQL Server 7.0 Service Pack 3 Fixlist
Q279823 - FIX: Restore of a Database Gives Error 4038 Due to Malformed Media Set
Q286286 - FIX: LOCK_TIMEOUT Causes Transaction to Roll Back and @@error Does Not Capture Error 1222
Q288122 - FIX: Lock Monitor Uses Excessive CPU
Q296386 - BUG: AUTO-SHRINK Option or DBCC SHRINKDATABASE May Slow Down SQL Server 2000 Performance
Q294285 - BUG: Processing All Dimensions May Fail with Very Large Dimensions
Q295445 - BUG: Deadlock Between Merge Replication and Article Updates
Q296533 - INF: Analysis Services Processing Task May Not Execute Correctly
Support WebCast: Understanding User-Defined Functions in Microsoft SQL Server 2000
Q156501 - INF: QUOTED_IDENTIFIER and Strings with Single Quotation Marks
Q172531 - BUG: IDBSchemaRowset Reports DBTYPE_NUMERIC for MONEY Datatype
Q178391 - PRB: Oracle TNS: Authentication Service Initialization Error
Q190475 - INFO: Understanding Microsoft's Oracle ODBC Driver Versions
Q242993 - BUG: Retrieved Data May Display as Nonalphanumeric Using ODBC Driver for SQL Server
Q244531 - FIX: SQL DSN Reverts from Standard Security to Integrated Security
Q263556 - INF: How to Configure SQL Mail
Q272737 - BUG: SQL Server Profiler Generates Error when Reading Trace Files that Exceed 1023 SPIDs
Q282966 - BUG: DTS Package Fails with Dynamic Properties Task and OLAP Processing Task
Q278324 - BUG: Distribution Agent Fails During Initial Synchronization When You Use Stored Procedure Replication
Q284440 - FIX: UPDATE with CASE Statement That Uses NEWID() Function Causes Errors 8951, 8952, 8955 and 8956
ФОРУМ SQL.RU: ДЮЖИНА САМЫХ ПОПУЛЯРНЫХ ТОПИКОВ НЕДЕЛИ
MS SQL ADO
Какая-то непонятка творится с временными таблицами
Реализация массивов в TSQL
Размещение файлов данных на сетевом устройстве
Вопрос по работе insert или триггера
Вернемся к MSSQL 2000
поиск по множеству таблиц
Очень странный, но срочный вопрос
SQL Server дает permission к хранимой процедуре со второй попытки!
Enumerate records
Халявная инсталляция SQL Server 7.0
ActiveX в DTS-пакете дает ошибку: Class not defined ADODB
ФОРУМ SQL.RU: ВОПРОСЫ ОСТАЛИСЬ БЕЗ ОТВЕТА
База SQL Server 7 -> MSDE ?
еще раз о правах на столбцы, как быть?
MSSQL 7.0 vs Visual SourceSafe
Как писать из SQL в .dbf
Microsoft SQL Workstation (локальный MSSQL)
#045<<#046
ФОРУМ

http://subscribe.ru/
E-mail: ask@subscribe.ru |
В избранное | ||