有时候为了追求速率不用innodb,这时候如果想完成类似事物处理有一定的处理技巧。
像redis和mongodb等,都有“设置并返回”操作,可以实现类似于操作系统的信号量机制。
其实mysql也可以模拟信号量机制:
比如:
CREATE TABLE IF NOT EXISTS `bing_fa` (
`key` varchar(200) NOT NULL,
`is_bing_fa` enum(\'Y\',\'N\') NOT NULL DEFAULT \'N\',
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
在访问临界资源前测试和设置的P操作:
insert into bing_fa values("event1",\'Y\') on duplicate key update is_bing_fa="Y"
释放资源的V操作:
update bing_fa SET `is_bing_fa` = \'N\' WHERE `key` = \'event1\'
P返回的影响行数不为0则表示测试通过,否则测试不通过,表示当前有人在使用资源。