MySQL таблица MyISAM
1.
orel (28.06.2013 / 16:03)
Есть таблица
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 и использовать транзакции?
2.
Алексей (28.06.2013 / 17:10)
На Select
запросах MyISAM
медленнее, чем
InnoDB. Думаю стоит переходить или менять обертку для работы с СУБД.
3.
orel (28.06.2013 / 17:16)
2.
ByKuznec, А вот это не правда, select по myisam самый быстрый сравнивал таблицу на 5м записей myisam и innoDB, myisam выигрывает
4.
Момору (04.08.2013 / 05:03)
1.
Орёл, безусловно. Я вообще MyISAM использую в крайне редких случаях. Только тогда клгда нужен полнотекстовый поиск.
URL:
https://visavi.net/topics/38284