Какая запись правильная? Взгляд на методы кэширования ввода / вывода

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 25 Июнь 2024
Anonim
Disk performance problems in SQL Server Анализ производительности дисков в SQL Server
Видео: Disk performance problems in SQL Server Анализ производительности дисков в SQL Server

Содержание


Источник: Kgtoh / Dreamstime.com

вынос:

Скорость приложений во многом зависит от скорости ввода-вывода в кэш. Здесь мы сравниваем различные методы ввода-вывода в кэш.

Производительность приложений зависит от скорости - скорости выполнения запросов на чтение и запись, которые ваши приложения требуют от вашей инфраструктуры. Хранилище отвечает за скорость возврата запросов ввода-вывода (ввода / вывода), а метод, выбранный для фиксации записи и доставки чтения, оказывает глубокое влияние на производительность приложения. Обычный метод в современной отрасли - это использование SSD для кэширования на традиционных дисковых хранилищах, гибридных массивах или массивах с флэш-памятью. Большинство решений для кэширования ускоряют чтение для приложений, но реальный вопрос остается: «Какая запись правильна?»

Давайте посмотрим, почему оптимизация записи так сильно влияет на производительность вашего приложения. Запись ввода / вывода подразумевает, что это новые данные, не записанные в вашем базовом хранилище. Например, в традиционном хранилище SAN записи записываются непосредственно в базовое хранилище, а затем возвращаются в приложение. С приложениями, которые постоянно записывают новые данные, в первую очередь с приложениями больших баз данных (SQL и т. Д.), Традиционные вращающиеся диски не могут идти в ногу. Кэширование на твердотельных накопителях стало решением, позволяющим записывать записи локально и кэшировать в зависимости от частоты запросов приложений; однако существует несколько методов для связи кэша записи с базовым хранилищем, которые вызывают огромную разницу в производительности.


Это 3 формы записи ввода / вывода:

  1. Вокруг записи (вокруг кеша)
  2. Write-Through (через кеш)
  3. Обратная запись (из кеша)

Все три формы имеют различные преимущества, которые основаны главным образом на типе записываемых данных: последовательные или случайные. Последовательный ввод / вывод наиболее оптимизирован базовым диском (например, файлами или видеопотоками), тогда как случайный ввод / вывод оптимизируется кешем. Большинство устройств кеширования не имеют динамического интеллекта для изменения технологии записи в зависимости от типа данных. Давайте поймем разницу между тремя формами записи ввода / вывода.

Write-Around

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


Какая польза от кеша, если он не используется? Это помогает уменьшить объем кэш-памяти при записи ввода-вывода, которая впоследствии не будет перечитываться, но имеет недостаток, заключающийся в том, что запрос на чтение недавно записанных данных приведет к «пропаданию кэша» и должен будет считываться из более медленного объемного хранилища и испытывать большую задержку. Если ваше приложение является транзакционным, как и большинство критически важных приложений, то скорость приложения замедлится, и очереди ввода-вывода будут расти. По сути, значение этого режима будет для редких случаев использования, потому что это отнимает много времени, медленно и неэффективно.

Write-Through

Этот метод сегодня широко используется в решениях для кэширования и гибридного хранения. Сквозная запись называется режимом кэширования чтения, что означает, что все данные записываются в кэш и в основное хранилище одновременно. Запись считается ТОЛЬКО завершенной после ее записи в хранилище. Звучит довольно безопасно на самом деле ... но есть недостаток скорости.

Вот проблема: каждая операция записи выполняется дважды, в кеше, а затем в постоянном хранилище. Перед продолжением работы приложений постоянное хранилище должно вернуть фиксацию ввода-вывода обратно в кеш, а затем обратно в приложения. Этот метод обычно реализуется для обеспечения отказоустойчивости и во избежание реализации стратегии восстановления после сбоя или высокой доступности с кэшем, поскольку данные находятся в обоих местах. Однако сквозная запись приводит к задержке, поскольку фиксация ввода / вывода определяется скоростью постоянного хранилища, что не соответствует скоростям ЦП и сети. Вы только так быстро, как ваш самый медленный компонент, и Write-Through может критически ограничить скорость приложения.

Нет ошибок, нет стресса - ваше пошаговое руководство по созданию изменяющего жизнь программного обеспечения без разрушения вашей жизни

Вы не можете улучшить свои навыки программирования, когда никто не заботится о качестве программного обеспечения.

Отложенной записи

Обратная запись улучшает результаты системы с точки зрения скорости - потому что системе не нужно ждать записи для перехода в основное хранилище.

Когда данные поступают для записи, Write-Back помещает данные в кэш, «все готово», и сохраняет данные для записи на диск хранения позже.

Это решает множество проблем с задержкой, потому что системе не нужно ждать этих глубоких записей.

При правильной поддержке Write-Back может быть лучшим методом для многоэтапного кэширования. Это помогает, когда кэш-память имеет большие объемы памяти (то есть объем памяти, измеряемый в терабайтах, а не в гигабайтах) для обработки больших объемов активности. Сложным системам также потребуется более одного твердотельного накопителя, что может увеличить стоимость. Крайне важно учитывать сценарии, такие как сбой питания или другие ситуации, когда критические данные могут быть потеряны. Но с правильной «защитой кеша» обратная запись может действительно ускорить архитектуру с несколькими недостатками. Например, системы с обратной записью могут использовать RAID или избыточные конструкции для обеспечения безопасности данных.

Еще более сложные системы помогут кешу и SAN или базовому диску хранения работать друг с другом «по мере необходимости», делегируя записи либо в глубокое хранилище, либо в кеш в зависимости от рабочей нагрузки диска.

Философия дизайна Write-Back отражает решение проблем, которые современные передовые системы обработки данных приводят к большим задачам. Создавая более сложную архитектуру и используя кэш сложным способом, обратная запись устраняет проблемы с задержкой, и, хотя это может потребовать больше накладных расходов, это обеспечивает лучший рост системы и меньше проблем роста.