2013-03-04 3 views
0

У меня есть следующий запрос:MyISAM против InnoDB производительности просто обновление

UPDATE `users` SET `time-spent-online` = `time-spent-online` + 10 WHERE `id` = 1

Что для MyISAM таблицы выполняет:

1 row affected. (Query took 0.0008 sec)

И InnoDB стол выполняет:

1 row affected. (Query took 0.0174 sec)

Нормально ли для InnoDB это намного медленнее? Должен ли я использовать MyISAM вместо этого? Я боюсь блокировки таблицы MyISAM. Что делать, если у меня есть 1000 пользователей и выполняйте этот запрос для каждого онлайн-пользователя каждые 10 секунд?

+0

_ «Что делать, если у меня есть 1000 пользователей и выполняйте этот запрос для каждого онлайн-пользователя каждые 10 секунд?» _ => Вы можете просто протестировать это с помощью скрипта cli? И да, я бы использовал InnoDB просто для кошмара, который является MyISAM в тяжелых ситуациях. – Wrikken

ответ

0

Слово о том, что я знаю о MyISAM и InnoDB:

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

Простые вопросы:

  1. ли вам нужна ссылочную целостность?
  2. Вам нужно использовать транзакции? (откаты)

Если ваш ответ ДА ​​на любой из предыдущих вопросов, InnoDB - это путь.

0

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

Смежные вопросы