Я пытаюсь уменьшить количество операций записи на диск, и на моем социальном сайте у меня есть таблица lastactivity, которая обновляется с учетом времени (), когда пользователь последний раз использовал этот сайт. В настоящее время это MyIsam:
id int (7) PRI auto_increment
lastactivity int (10) без знака
имя пользователя varchar (25)
в настоящее время в нем около 100 000 записей. Если mysql перезапущен, я могу просто заполнить его снова из последних логинов в основной таблице пользователей. У машины много свободной памяти, но эта таблица, я полагаю, часто блокируется из-за всех выполненных на ней обновлений, что было бы лучше, если бы это была таблица типа MEMORY?
Работа с памятью всегда выполняется быстрее, чем с диска, с единственным недостатком: вы потеряете свои данные при отключении питания. Однако вы заявляете, что можете восстановить свои данные, если возникнет такая ситуация. Итак, я согласен, что вам следует использовать свою память, потому что она у вас очень большая.
Тем не менее, я припоминаю то, что однажды сказал Кнут о данных. Что-то о том, чтобы вообще не производить никаких вычислений, если вы правильно структурируете свои данные. Умные данные лучше умного алгоритма.
Итак, было бы разумно посмотреть, как вы можете реструктурировать свою базу данных и / или приложение, чтобы уменьшить количество требуемых блокировок?
Сделать шаг назад?
Обязательно ознакомьтесь с ограничениями, применяемыми к таблицам памяти, таким как тип индекса по умолчанию, который является HASH, а не BTREE. Было бы неплохо просмотреть запросы с помощью этой таблицы, особенно если некоторые из них работают с запросами диапазона. В последнем случае принудительное построение индексов с использованием BTREE вместо HASH по умолчанию.