Статьи

MySQL: плюсы и минусы таблиц InnoDB

MySQL InnoDB Исходя из нашего взгляда на таблицы MyISAM , сегодня мы рассмотрим таблицы InnoDB.

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

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

Для получения дополнительной информации о внешних ключах и автоматизации вашей базы данных обратитесь к разделу Как использовать внешние ключи MySQL для более быстрой разработки баз данных .

2. Транзакции
Таблицы InnoDB поддерживают транзакции. Транзакция позволяет рассматривать несколько команд SQL как единый и надежный модуль.

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

Кроме того, таблицы InnoDB хорошо восстанавливаются после сбоев. MySQL проанализирует файлы журнала, чтобы убедиться, что данные точны, поэтому нет необходимости восстанавливать таблицы.

3. Блокировка на уровне строк
InnoDB использует блокировку на уровне строк, а не на уровне таблиц. Если строка вставляется, обновляется или удаляется, до тех пор, пока этот запрос не будет выполнен, будут задержаны только изменения в той же строке. Таблицы, которые получают больше обновлений, чем выбирает, могут быть быстрее с InnoDB.

Недостатки таблиц InnoDB

Есть ряд ситуаций, когда InnoDB может не подходить.

1. Повышенная сложность
Создание таблицы InnoDB не сложнее, чем MyISAM, например


CREATE TABLE employee ( 
id smallint(5) unsigned NOT NULL, 
firstname varchar(30), 
lastname varchar(30), 
PRIMARY KEY (id)
) ENGINE=InnoDB; 

Однако разработка этой базы данных с отношениями внешних ключей требует больших усилий. Новичкам в базе данных будет легче найти MyISAM, потому что он имеет меньше функций.

2. Нет полнотекстового поиска
Таблицы InnoDB не поддерживают полнотекстовый поиск; Нелегко сопоставить одно или несколько ключевых слов с несколькими столбцами.

3. Более низкая производительность
Если ваше приложение в первую очередь выбирает данные, а производительность является приоритетом, таблицы MyISAM обычно работают быстрее и используют меньше системных ресурсов.

Вы должны использовать InnoDB?

InnoDB — лучший вариант, если вам нужно создать надежное управляемое данными веб-приложение. Во многих отношениях InnoDB является лучшим выбором по умолчанию, чем MyISAM:

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

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

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

Смотрите также:

Будете ли вы рассматривать таблицы InnoDB для вашего следующего приложения?