Переместить существующие таблицы в InnoDB из MyISAM, и какая из них быстрее?

База данных уже содержит до 25-30 таблиц, и все они являются MyISAM. Большинство этих таблиц связаны друг с другом, что означает, что многие запросы используют объединения по идентификаторам и извлекают данные.

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

Я также объяснил преимущества InnoDB:

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

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

Теперь ответ моего начальника таков: мне нужно доказать, что InnoDB будет работать быстрее, чем MyISAM. Мой вопрос заключается в том, что более 2 вещей улучшают скорость самого приложения, удаляя лишние строки?

В целом MyISAM быстрее InnoDB?

Примечание: использование MySQL 5.5

1 ответ

Решение

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

Конечно, лучший способ убедить своего босса - это доказать это. Сделайте копии своей большой таблицы и поместите в тестовую базу данных. Сделайте одну версию данных в MyISAM и одну в InnoDB. Затем запустите нагрузочное тестирование, сопоставив нагрузку, которая приблизительно соответствует текущей активности чтения / записи в БД. Узнайте для себя, если это лучше.

Только что обновил за ваш комментарий, что вы на 5.5. С 5.5 не составит труда использовать InnoDB. За последние несколько лет движок MyISAM практически не улучшился, и усилия по разработке были сосредоточены вокруг InnoDB. InnoDB - предпочтительный движок MySQL.

Другие вопросы по тегам