MyISAM 如何比 InnoDB“更快”,如果
每个人都知道,在使用 InnoDB 作为引擎的表中,诸如此类SELECT COUNT(*) FROM mytable的查询非常不准确且非常慢,尤其是当表变大并且在该查询执行时不断插入/删除行时。
据我了解,InnoDB 不会将行数存储在内部变量中,这就是导致此问题的原因。
我的问题是:为什么会这样?存储这样的信息有那么难吗?在许多情况下,这是一个重要的信息。我看到是否要实现这样的内部计数的唯一困难是当涉及事务时:如果事务未提交,您是否计算它插入的行数?
PS:我不是数据库方面的专家,我只是一个将 MySQL 作为一个简单爱好的人。因此,如果我只是问一些愚蠢的问题,请不要过分挑剔:D。
由于 RAM 的限制,是否可以让 InnoDB 使用与 MyISAM 相同的索引而不是聚集索引,同时获得其并发性能的好处?
MyISAM 存储引擎使用的表级锁定有什么好处?行级锁定有很多好处,比如并发更新和不锁定表的读取。
编辑 人们普遍认为表级锁定可以防止死锁。但是,以并发为代价来防止死锁如何值得呢?
我很困惑我应该选择哪个 mysql 引擎(让我们谈谈最常用的:MyISAM 和 InnoDB)。
理论说:
当我创建一个表时,如果我想保持完整性并且我想加快通过“文本”进行搜索的查询,我应该总是牺牲一些东西吗?
如果需要,您如何决定使用哪种引擎