2013-11-27 7 views
0

Я использую MySQL 5.5 с innoDB. Основой моего сервера является Netty, JDBC и BoneCP.Улучшить производительность таблицы только для записи?

У меня есть таблица журналов, содержащая пользовательские входы (HTTP-заголовок, тело запроса и т. Д.). Эта таблица будет читаться очень редко по таким причинам, как безопасность и восстановление данных. Поэтому производительность чтения не является чем-то, о чем мы заботимся.

В этой таблице имеется пять столбцов.

Name  | Type 
-------------------------------------------------- 
logID  | big Integer(auto-increment)(primary key) 
userNumber | medium integer 
logTime | timestamp 
header  | varchar(100) 
body  | varchar(200) 

Какие советы помогут улучшить производительность вставки? Кроме того, необходим ли логин для этого случая?

+0

Избегайте указателей, кроме тех, которые указаны на автоматическом приращении. –

ответ

3

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

Мое предложение состоит в том, чтобы сбросить логин и вообще не создавать индексы на столе.

Другая оптимизация - изменить тип таблицы на myISAM. Когда вы только вставляете и не имеете ограничений на таблицу, InnoDB будет стоить вам времени на выбор соответствия ACID, в то время как myISAM не заботится об этом.

+0

Я согласен с соблюдением ACID. Однако (исправьте меня, если я ошибаюсь), MyISAM не поддерживает блокировку на уровне строк. Параллелизм важен, потому что блокирование ввода-вывода является плохой практикой при использовании Netty (который я использую). –

+0

Простите, я не знаком с Netty. Я могу только сказать вам, что по моему опыту вы можете сделать несколько десятков вставок в секунду в такую ​​таблицу, которую я описал без каких-либо проблем с блокировкой, поскольку не происходит блокировки. – 0xCAFEBABE

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