Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены требования к подсистеме ввода-вывода для базы данных tempdb в SQL Server.
Исходная версия продукта: Microsoft SQL Server
Исходный номер базы знаний: 917047
Итоги
Microsoft SQL Server требует, чтобы подсистема ввода-вывода, используемая для хранения системных и пользовательских баз данных, полностью соблюдала требования к журналу записи (WAL) через определенные субъекты ввода-вывода. Эти требования необходимы для учета свойств ACID транзакций: атомарных, согласованных, изолированных и устойчивых. Сведения о требованиях к соответствию подсистемы ввода-вывода приведены в основах ввода-вывода SQL Server.
Ниже приведен краткий обзор требований.
- Порядок записи должен поддерживаться.
- Согласованность зависимой записи должна поддерживаться.
- Записи всегда должны быть защищены в стабильном носителе или на стабильном носителе.
- Необходимо предотвратить разрыв ввода-вывода.
Обслуживание устойчивости остается критически важным для всех остальных баз данных, но может быть расслаблено для базы данных tempdb. В следующей таблице перечислены некоторые критически важные требования к ввода-выводам для баз данных SQL Server.
| Требование ввода-вывода | Краткое описание | Система или пользователь | tempdb (временная база данных) |
|---|---|---|---|
| Порядок записи Согласованность зависимой записи |
Способность подсистемы поддерживать правильный порядок операций записи. Это может быть особенно важно для решений зеркального отображения, требований к согласованности групп и использования протокола WAL SQL Server. | Обязательное поле | Рекомендуемая конфигурация |
| Чтение после записи | Возможность подсистемы обслуживать запросы на чтение с последним изображением данных при выполнении операции чтения после успешного завершения записи. | Обязательное поле | Обязательное поле |
| Выживание через сбой | Возможность сохранения полностью нетронутых (устойчивых) данных в случае сбоя, например перезагрузки системы. | Обязательное поле | Нет данных |
| Предотвращение разрыва ввода-вывода | Возможность системы избежать разделения отдельных запросов ввода-вывода. | Обязательное поле | Рекомендуемая конфигурация |
| Перезапись сектора | Сектор может быть написан только в целом и не может быть перезаписан из-за запроса на запись в соседнем секторе. | * Не рекомендуется, разрешено только в том случае, если транзакция | * Не рекомендуется, разрешено только в том случае, если транзакция |
| Защищенные данные | Ожидается, что при успешном выполнении запроса на запись или операции FlushFileBuffers данные сохраняются в стабильном носителе. | Обязательное поле | Нет данных |
| Выравнивание и размер физического сектора | SQL Server проверяет расположения хранилища данных и файлов журнала. Все устройства необходимы для поддержки атрибутов сектора, позволяющих SQL Server выполнять записи на физических границах, выровненных по физическому сектору, и в нескольких размерах сектора. | Обязательное поле | Обязательное поле |
Перезаписи секторов транзакций включают полностью зарегистрированные операции подсистемы, что позволяет сектору полностью перемещаться, заменять или откатывать к исходному изображению. Эти перезаписи обычно не рекомендуется из-за дополнительных накладных расходов, необходимых для выполнения таких действий. Примером этого будет defragmentation программа, которая перемещает данные файла. Исходный сектор в файле не может быть заменен новым расположением сектора до тех пор, пока не будет обеспечен новый сектор и данные. Перемежание сектора должно происходить в транзакционной форме, чтобы любая ошибка, включая сбой питания, приводила к повторному созданию исходных данных. Убедитесь, что у вас есть механизмы блокировки, доступные во время этого процесса, чтобы предотвратить недопустимый доступ к данным, тем самым поддерживая других клиентов операций ввода-вывода SQL Server.
Выживание через сбой
База данных tempdb — это рабочая область для SQL Server и перестроена при каждом запуске SQL Server. Инициализация заменяет все необходимые данные для выживания перезапуска.
Операции перезаписи сектора транзакций
Чтобы гарантировать успешность процессов восстановления, таких как откат и аварийное восстановление, записи журнала должны быть правильно сохранены на стабильном носителе, прежде чем страница данных хранится и не может быть перезаписана без учета транзакционных свойств. Для этого требуется подсистема и SQL Server для поддержания определенных атрибутов, таких как порядок записи, выравнивание сектора и запись размера, а также другие атрибуты безопасности ввода-вывода, описанные в ранее упомянутых документах. Для базы данных tempdb аварийное восстановление не требуется, так как база данных всегда инициализирована во время запуска SQL Server. Однако база данных tempdb по-прежнему требует отката. Поэтому некоторые атрибуты протокола WAL могут быть расслаблены.
Расположение хранилища для базы данных tempdb должно действовать в строгом соответствии с установленными протоколами дискового диска. Во всех отношениях устройство, на котором хранится база данных tempdb, должна отображаться и выступать в качестве физического диска, предоставляющего возможности чтения после записи. Операции перезаписи сектора транзакций могут быть дополнительными требованиями конкретных реализаций. Например, SQL Server не поддерживает изменения базы данных с помощью сжатия файловой системы NTFS, так как сжатие NTFS может переписать секторы журнала, которые уже написаны и считаются защищенными. Сбой во время перезаписи этого типа может привести к неиспользуемой базе данных, которая уже считалась безопасной.
Примечание.
Расширенная поддержка или сжатие SQL Server для баз данных и групп файлов, доступных только для чтения. Подробные сведения см. в электронной документации по SQL Server.
Операции перезаписи сектора транзакций относятся ко всем базам данных SQL Server, включающим базу данных tempdb. Растущее множество расширенных технологий хранения используют устройства и служебные программы, которые могут переписать данные, которые SQL Server считает безопасными. Например, некоторые из новых технологий выполняют кэширование в памяти или сжатие данных. Чтобы избежать серьезных повреждений базы данных, любой перезапись сектора должна иметь полную поддержку транзакций таким образом, чтобы при возникновении сбоя данные откатились до предыдущих образов сектора. Это гарантирует, что SQL Server никогда не подвергается неожиданному прерыванию или повреждению данных.
Вы можете поместить базу данных tempdb в специализированные подсистемы, такие как диски ОЗУ, твердое состояние или другие высокоскоростные реализации, которые нельзя использовать для других баз данных. Однако при оценке этих параметров необходимо учитывать ключевые факторы, представленные в разделе "Дополнительные сведения ".
Примечание.
Локальные диски в отказоустойчивых кластеризованных средах поддерживаются только с твердым состоянием или реализацией высокой скорости. Это связано с тем, что диск ОЗУ можно создать только по целевому объекту iSCSI. Кроме того, функции целевого объекта iSCSI и отказоустойчивого кластера нельзя использовать на одном узле.
Дополнительная информация
При оценке расположения хранилища базы данных tempdb следует тщательно изучать несколько факторов. Например, использование базы данных tempdb включает в себя, но не ограничивается объемом памяти, планом запросов и решениями ввода-вывода. Соответствующая настройка и реализация базы данных tempdb может повысить масштабируемость и скорость реагирования системы. В этом разделе рассматриваются ключевые факторы определения потребностей хранилища для базы данных tempdb.
Высокоскоростные подсистемы
Существуют различные высокоскоростные реализации подсистемы, доступные на рынке, которые предоставляют требования к протоколу подсистемы ввода-вывода SQL Server, но не обеспечивают устойчивость носителя.
Внимание
Всегда подтверждать поставщику продукта, чтобы гарантировать полное соответствие требованиям ввода-вывода SQL Server.
Диск ОЗУ является одним из распространенных примеров такой реализации. Диски ОЗУ устанавливают необходимые драйверы и позволяют отображаться как и функционировать, как и любой диск, подключенный к системе. Все подсистемы ввода-вывода должны обеспечить полное соответствие требованиям к ввода-выводам SQL Server. Однако очевидно, что диск ОЗУ не является устойчивым носителем. Таким образом, реализация, например диск ОЗУ, может использоваться только в качестве расположения базы данных tempdb и не может использоваться для любой другой базы данных.
Ключи для рассмотрения перед реализацией и развертыванием
Перед развертыванием базы данных tempdb в этой подсистеме следует учитывать различные точки. В этом разделе используется диск ОЗУ в качестве основы для обсуждения, но аналогичные результаты происходят в других высокоскоростных реализациях.
Безопасность ввода-вывода
Соответствие операций чтения после записи и записи в секторе транзакций является обязательным. Никогда не развертывайте SQL Server в любой системе, которая не полностью поддерживает требования к ввода-выводам SQL Server, или вы рискуете ущербом и потерей данных.
Страницы, уже кэшированные (кэш двойной ОЗУ)
Временные таблицы похожи на все остальные таблицы в базе данных. Они кэшируются буферным пулом и обрабатываются отложенными операциями записи. Хранение временных страниц таблицы на диске ОЗУ приводит к двойному кэшированию ОЗУ, одному в буферном пуле и одному на диске ОЗУ. Это напрямую отнимает общий размер буферного пула и, как правило, снижает производительность SQL Server.
Отказ от ОЗУ
Диск ОЗУ обозначает часть основной ОЗУ в качестве имени. Доступно несколько реализаций дисков ОЗУ и кэшей файлов на основе ОЗУ. Некоторые также позволяют выполнять физические операции резервного ввода-вывода. Ключевым элементом кэша файлов на основе ОЗУ является то, что он непосредственно уходит из физической памяти, которую можно использовать SQL Server. Всегда есть надежные доказательства того, что добавление кэша файлов на основе ОЗУ повышает производительность приложения и не снижает производительность других запросов или приложений.
Сначала настройте
Приложение должно настроить удаление ненужных и нежелательных сортировок и хэшей, которые могут привести к использованию базы данных tempdb. Во многих случаях добавление индекса может полностью удалить необходимость сортировки или хэша в плане, что приводит к оптимальной производительности, не требуя использования базы данных tempdb.
Возможные точки преимущества
Преимущества размещения базы данных tempdb в высокоскоростной системе можно определить только путем строгого тестирования и измерений рабочих нагрузок приложения. Рабочая нагрузка должна тщательно изучаться для характеристик, которые база данных tempdb может воспользоваться преимуществами, а безопасность ввода-вывода должна быть подтверждена перед развертыванием.
Операции сортировки и хэша работают вместе с диспетчерами памяти SQL Server, чтобы определить размер области царапин в памяти для каждой операции сортировки или хэша. Как только данные сортировки или хэша превышают выделенную область с нуля в памяти, данные могут быть записаны в базу данных tempdb. Этот алгоритм был расширен в SQL Server, уменьшая требования к использованию базы данных tempdb в более ранних версиях SQL Server.
Внимание
SQL Server предназначен для учета уровней памяти и текущих действий запросов при принятии решений о плане запросов, которые включают использование операций базы данных tempdb. Таким образом, повышение производительности значительно зависит от рабочих нагрузок и проектирования приложений. Мы настоятельно рекомендуем выполнить тестирование с помощью предпочтительного решения, чтобы определить возможные преимущества и оценить требования безопасности ввода-вывода перед развертыванием.
SQL Server использует базу данных tempdb для обработки различных действий, связанных с сортировкой, хэшами, хранилищем версий строк и временными таблицами:
- Временные таблицы поддерживаются общими подпрограммами буферного пула для страниц данных и обычно не демонстрируют преимущества производительности от реализации специализированной подсистемы.
- База данных tempdb используется в качестве области с нуля для хэшей и сортировки. Снижение задержки ввода-вывода для таких операций может оказаться полезным. Однако знают, что добавление индекса, чтобы избежать хэша или сортировки, может обеспечить аналогичное преимущество.
Выполнение базовых показателей с базой данных tempdb и без нее, хранящейся в подсистеме высокой скорости для сравнения преимуществ. Часть тестирования должна включать запросы к пользовательской базе данных, которые не включают сортировки, хэши или временные таблицы, а затем убедитесь, что эти запросы не затронуты. При оценке системы могут быть полезны следующие показатели производительности.
| Индикатор | Описание и использование |
|---|---|
| Операции чтения и записи страниц | Повышение производительности операций ввода-вывода базы данных tempdb может изменить частоту операций чтения и записи страниц для пользовательских баз данных из-за уменьшения задержки, связанной с операцией ввода-вывода базы данных tempdb. Для страниц пользовательской базы данных общее число не должно отличаться в одной рабочей нагрузке. |
| Физическое чтение и запись байтов в базу данных tempdb | При перемещении базы данных tempdb на устройство, например на диск ОЗУ, увеличивается фактическое число операций ввода-вывода для базы данных tempdb, это означает, что память, удаленная из буферного пула, приводит к увеличению активности базы данных tempdb. Этот шаблон является индикатором того, что продолжительность жизни страниц страницы базы данных также может повлиять на отрицательный способ. |
| Ожидаемое время существования страницы | Снижение продолжительности жизни страницы может указывать на увеличение физических требований ввода-вывода для пользовательской базы данных. Снижение скорости может показать, что память, удаленная из буферного пула, заставляет страницы базы данных преждевременно выйти из буферного пула. Объедините с другими индикаторами и проверьте, чтобы полностью понять границы параметров. |
| Общая пропускная способность Использование процессора Масштабируемость Время ответа |
Основной целью изменения конфигурации базы данных tempdb является увеличение общей пропускной способности. Тестирование должно включать в себя сочетание повторяемых рабочих нагрузок, которые можно масштабировать, чтобы определить, как влияет пропускная способность. Что-то такое, как реализация диска на основе сжатия, может работать хорошо с 10 пользователями. Однако при увеличении рабочей нагрузки это может привести к увеличению уровня ЦП за пределы требуемых уровней и негативно повлиять на время отклика, когда рабочие нагрузки высоки. Рекомендуется использовать истинные стресс-тесты и будущие тесты прогнозирования нагрузки. |
| Действия по созданию рабочих файлов и рабочих таблиц | При перемещении базы данных tempdb на устройство, например на диск ОЗУ, измените план запроса, увеличив число или размер рабочих файлов или рабочих таблиц, это означает, что память, удаленная из буферного пула, приводит к увеличению активности базы данных tempdb. Этот шаблон является признаком того, что продолжительность жизни страниц страницы базы данных также может быть затронута отрицательным способом. |
Пример перезаписи сектора транзакций
В следующем примере описана безопасность данных, требуемая базами данных SQL Server.
Предположим, что поставщик ОЗУ использует реализацию сжатия в памяти. Реализация должна быть правильно инкапсулирована путем предоставления физического внешнего вида файлового потока, как если бы сектор был выровнен и размер, поэтому SQL Server не знает и правильно защищается от базовой реализации. Ознакомьтесь с примером сжатия ближе.
- Сектор 1 записывается на устройство и сжимается для экономии места.
- Сектор 2 записывается на устройство и сжимается с помощью сектора 1 для экономии места.
Устройство может выполнять следующие действия, чтобы обеспечить безопасность данных сектора 1, если они объединяются с данными сектора 2.
- Блокировать все записи в секторы 1 и 2.
- Распаковка сектора 1 в области с нуля, оставляя текущее хранилище сектора 1 в качестве активных данных для извлечения.
- Сжатие секторов 1 и 2 в новом формате хранилища.
- Блокировать все операции чтения и записи секторов 1 и 2.
- Обмен старым хранилищем для секторов 1 и 2 с новым хранилищем. Если попытка обмена завершается ошибкой (откат):
- Восстановите исходное хранилище для секторов 1 и 2.
- Удалите секторы 1 и 2 объединенных данных из области нуля.
- Сбой операции записи сектора 2.
- Разблокируйте операции чтения и записи для секторов 1 и 2.
Возможность обеспечить механизмы блокировки вокруг изменений сектора и откат изменений, когда попытка обмена сектором завершается сбоем, считается переходным. Для реализаций, использующих физическое хранилище для расширенного резервного копирования, он будет включать соответствующие аспекты журнала транзакций для защиты и отката изменений, которые были применены к структурам на диске для обеспечения целостности файлов базы данных SQL Server.
Любое устройство, включающее перезапись секторов, должно поддерживать перезаписи транзакций таким образом, чтобы SQL Server не подвергался потере данных.
Примечание.
Экземпляр SQL Server перезапускается при сбоях ввода-вывода в сети и отката в базе данных tempdb.
Будьте осторожны при перемещении базы данных tempdb
Будьте осторожны при перемещении базы данных tempdb, так как если база данных tempdb не может быть создана, SQL Server не запустится. Если база данных tempdb не может быть создана, запустите SQL Server с помощью параметра запуска (-f) и переместите базу данных tempdb в допустимое расположение.
Чтобы изменить физическое расположение базы данных tempdb, выполните следующие действия.
ALTER DATABASEИспользуйте инструкцию иMODIFY FILEпредложение, чтобы изменить имена физических файлов каждого файла в базе данных tempdb, чтобы ссылаться на новое физическое расположение, например новый диск.ALTER DATABASE tempdb MODIFY FILE (name = tempdev, filename = 'C:\MyPath\tempdb.mdf') ALTER DATABASE tempdb MODIFY FILE (name = templog, filename = 'C:\MyPath\templog.ldf')Остановите и перезапустите SQL Server.
Сертификаты продуктов партнера не являются гарантиями совместимости или безопасности
Сторонний продукт или конкретный поставщик может получить сертификацию логотипа Майкрософт. Однако сертификация партнеров или определенный логотип Майкрософт не сертифицируют совместимость или фитнес для определенной цели в SQL Server.
Поддержка
Если вы используете подсистему с SQL Server, которая поддерживает гарантии ввода-вывода для использования транзакционной базы данных, как описано в этой статье, корпорация Майкрософт предоставит поддержку приложений на основе SQL Server и SQL Server. Тем не менее, проблемы с подсистемой будут ссылаться на изготовителя.
Для проблем, связанных с базой данных tempdb, службы служба поддержки Майкрософт попросите переместить базу данных tempdb. Обратитесь к поставщику устройства, чтобы убедиться, что вы правильно развернули и настроили устройство для использования транзакционной базы данных.
Корпорация Майкрософт не сертифицируется или проверяет правильность работы сторонних продуктов с SQL Server. Кроме того, корпорация Майкрософт не предоставляет никаких гарантий, гарантий или заявления о том, что любой сторонний продукт подходит для использования с SQL Server.
Ссылки
Дополнительные сведения можно найти здесь
Корпорация Майкрософт не подтверждает, что сторонние продукты будут работать с Microsoft SQL Server
Рекомендации по оптимизации производительности SQL Server на виртуальных машинах Azure
Оптимизация планов запроса с помощью средства оценки кратности SQL Server 2014
Требования к входным и выходным данным ядра СУБД SQL Server (ввода-вывода)