并发SQL是否在事务上安全地插入到同一个表中?

时间:2009-02-05 08:07:32

标签: mysql database concurrency

我在MySql中有一个简单的表,其存在的意思是存储日志。 该表具有自动递增的序列,并且所有其他列对其他表的参照完整性为零。任何列上都没有唯一键或索引。具有自动增量的列是主键。

并发INSERT会相互干扰吗?我将干扰定义为意味着丢失数据。

我对此插入使用autocommit = true。

3 个答案:

答案 0 :(得分:3)

您永远不会因为同时插入而丢失数据。如果您使用交易,您可能“丢失”一些ID - 但没有实际数据。 (想象一下,你启动一个事务,插入几行,然后进行回滚.InnoDB将分配auto_increment ID,但没有包含这些ID的行,因为你进行了回滚)。

由于您不需要索引,因此您应该查看ARCHIVE表引擎。它的速度非常快 - 而且你的表格变得更小,这反过来会使你在稍后读取表格时扫描表格。

答案 1 :(得分:2)

是。对于InnoDB,更多信息here

答案 2 :(得分:2)

来自MyISAM storage engine的MySQL手册:

"MyISAM supports concurrent inserts..."