Я хочу знать о IOPS (I / O в секунду) и как это влияет на работу DB CRUD

8

Я хочу получить выделенный сервер для моей базы данных (MySQL), на котором работает InnoDB Engine. В емкости InnoDB есть эта опция, в которой вы можете определить IOPS. Допустим, у меня есть жесткий диск SATA 72K-RPM, который позволяет 100 IOPS. Означает ли это, что моя БД может выполнять 100 одновременных SQL-запросов в секунду или это означает 100 однократных операций чтения или записи за 1 секунду? Как БД может обрабатывать 3000 запросов в секунду, запускаемых на таком оборудовании? Я немного запутался, поэтому, пожалуйста, объясните мне это. Я хочу получить более 200 запросов на моем выделенном сервере.

Alex
источник

Ответы:

10

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

SQL-запрос, предполагая, что он выполняет физический ввод-вывод (многим запросам не нужно выполнять какой-либо ввод-вывод, потому что они просто читают данные, уже находящиеся в памяти базы данных или в кэше файловой системы или в кэше SAN), имеют тенденцию выполнить много операций ввода-вывода. Если ваши запросы фактически выполняют физический ввод-вывод, один запрос может легко выполнить 100 операций ввода-вывода в секунду. Потенциально вы могли бы одновременно выполнять 100 запросов, каждый из которых выполнял бы только одну физическую операцию ввода-вывода в секунду, но это, вероятно, означало бы, что на все 100 запросов потребуется недопустимое количество времени для возврата.

Реально, если вам нужно обрабатывать 3000 запросов в секунду, вам нужно убедиться, что подавляющему большинству ваших запросов не нужно выполнять физический ввод-вывод, гарантируя, что необходимые им данные кэшируются (предпочтительно базой данных). И вам нужно будет распределить ввод-вывод по относительно большому количеству дисков (с соответствующей конфигурацией RAID), чтобы увеличить общее число операций ввода-вывода в секунду, которое может выполнить система. Для такого рода планирования емкости потребуется достаточно хорошее понимание вашего приложения, ваших данных, объема ввода-вывода, который может потребоваться для каждого запроса, и т. Д. И вам, вероятно, потребуется сбалансировать затраты и производительность - добавив Память или добавление дисков или изменение конфигурации RAID потребуют различных компромиссов между стоимостью, производительностью и доступным пространством, которые необходимо учитывать.

Джастин Кейв
источник