Есть таблица Code: 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% запросов накладываются на Code: `id` `id_campaign` - id `id_ground` - id `hash`- md5 hash `d` - date("dm") `time` - unix time Группировка по Code: `id` `id_campaign` `id_ground` `d` Сортировка Code: `time` `d` Основная задача быстрый SELECT (Операции SUM(),COUNT()) и INSERT Так как таблица MyISAM блокировка идет на уровне всей таблицы, а значит возможно подвисание процессов select во время insert Стоит ли сменить движок на innoDB и использовать транзакции?
Индексы построены над таблицей не правильно. Следует добавить составной индекс по полям группировки (при условии их высокой селективности). Таблица MyISAM при синхронных запросах на вставку и выборку будет работать очень медленно. Если же вставки происходят запланированно и составляют скажем 10%-15% операций, то можно использовать myisam предварительно оптимизировав индексы. Чтобы отследить правильно ли настроены индексы в таблице можно использовать: EXPLAIN , по возможности использовать покрывающие индексы, в этом случае запросы будут почти мгновенными. Не совсем понятно из описания какие запросы будут иметь место чаще всего, поэтому ответил в общих чертах.
может я чего то не понимаю но при чем транзацкии к select ? и зачем изначально myisam если default это innodb и вообще http://itif.ru/otlichiya-myisam-innodb/. http://forum.vingrad.ru/forum/topic-287510/kw-myisam-innodb-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1%D0%B7%D0%BE%D1%80.html