我正在为系统添加新功能.该过程将从PLC读取实时数据并将其存储在数据库中.数据表将有4列:variable_id(SMALLINT),时间戳(TIMESTAMP),值(FLOAT),质量(TINYINT).主键是(variable_id,timestamp).
系统需要能够每秒插入1000-2000条记录.
数据表将保留最近24小时的数据,旧数据将从表中删除.
数据表还需要每秒处理5-10个select语句.select语句从表中为特定变量选择最新值并将其显示在Web上.
我应该使用MyISAM或InnoDB表格式吗?MyISAM在执行插入时是否锁定整个表,从而阻止来自Web界面的select语句?目前,数据库中的所有数据表都是MyISAM表.
我应该使用MyISAM或InnoDB表格式吗?
对于任何具有频繁并发读写的项目,您应该使用InnoDB
.
MyISAM在执行插入时是否锁定整个表,从而阻止来自Web界面的select语句?
与@@concurrent_insert
启用,MyISAM
可以追加插入的行结束,同时还从另一个会话并发读取.
但是,如果你曾经做过任何事情INSERT
,那么这可能会失败(即表会锁定).
系统需要能够每秒插入1000-2000条记录.
最好批量批量插入并批量生产.
InnoDB
每秒行数比每秒事务数快得多.
数据表将保留最近24小时的数据,旧数据将从表中删除.
请注意,InnoDB
锁定检查的所有行,而不仅仅是受影响的行.
如果您的DELETE
语句将使用fullscan,则并发INSERTs
将失败(因为fullscan将InnoDB
在所有浏览的记录(包括最后一个记录)上放置间隙锁定).
归档时间: |
|
查看次数: |
1515 次 |
最近记录: |