MySQL таблица MyISAM

Печать RSS
269

O
Автор
Пацак
0
Есть таблица
CREATE TABLE IF NOT EXISTS `clicks` ( 
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
  `id_campaign` int(10) unsigned NOT NULL, 
  `id_ground` int(10) unsigned NOT NULL, 
  `type` varchar(5) NOT NULL DEFAULT 'click', 
  `hash` varchar(32) NOT NULL, 
  `ip` int(11) NOT NULL, 
  `devices` varchar(100) NOT NULL, 
  `os` varchar(30) NOT NULL, 
  `operator` varchar(100) NOT NULL, 
  `country` varchar(100) NOT NULL, 
  `user_agent` varchar(150) NOT NULL, 
  `status` varchar(3) NOT NULL DEFAULT 'yes', 
  `comment_status` varchar(50) DEFAULT NULL, 
  `sum` float NOT NULL, 
  `d` int(4) NOT NULL, 
  `time` int(11) NOT NULL, 
  PRIMARY KEY (`id`), 
  KEY `id_campaign` (`id_campaign`), 
  KEY `id_ground` (`id_ground`), 
  KEY `status` (`status`), 
  KEY `d` (`d`), 
  KEY `time` (`time`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;


В ней будет очень много записей. 80% запросов накладываются на
`id` 
`id_campaign` - id 
`id_ground` - id 
`hash`- md5 hash 
`d` - date("dm") 
`time` - unix time


Группировка по
`id` 
`id_campaign` 
`id_ground` 
`d`


Сортировка

`time` 
`d`


Основная задача быстрый SELECT (Операции SUM(),COUNT()) и INSERT

Так как таблица MyISAM блокировка идет на уровне всей таблицы, а значит возможно подвисание процессов select во время insert

Стоит ли сменить движок на innoDB и использовать транзакции?
Изменил: orel (28.06.2013 / 16:04)
А

Пришелец
0
На Select
запросах MyISAM
медленнее, чем
InnoDB. Думаю стоит переходить или менять обертку для работы с СУБД.
O
Автор
Пацак
0
2. ByKuznec, А вот это не правда, select по myisam самый быстрый сравнивал таблицу на 5м записей myisam и innoDB, myisam выигрывает

Пришелец
0
1. Орёл, безусловно. Я вообще MyISAM использую в крайне редких случаях. Только тогда клгда нужен полнотекстовый поиск.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск