Есть таблица
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)