1

我正在编写一个需要多次写入的应用程序(每秒最多 100 次)。我也打算经常阅读这张表。但是,由于重复的键索引,我将进行的大多数写入实际上都会失败。这是有意的。写入失败会消耗 MySQL 表资源吗?这是不好的做法吗?

4

2 回答 2

3

失败的写入将消耗系统资源,因为需要查阅表索引以确定是否违反了约束。至于这是否是不好的做法——故意抛出大量预期会失败的写入似乎有点不寻常,但另一方面,RDBMS 的工作是存储、组织和检索数据。数据库尝试INSERT违反唯一约束并失败的速度比首先查询是否可以由应用程序代码插入然后插入它(您仍然需要检查 RDBMS 上的约束)要快)。

于 2012-04-06T01:31:02.370 回答
1

通常,应用程序有一些业务规则抽象层,其中完整性问题在概念上被定义;如果是这样,大多数追随您的开发人员会期望验证发生在那里。OTOH,如果这是一次性实用程序,或者您将永远是唯一的开发人员,它会起作用。与读取索引字段相比,该 hack 可能不会带来任何显着的效率提升,而且一般来说,这是一个处理错误捕获和移植的不愉快的地方——除了你,这不是一个错误。(有点像“这不是错误,而是功能......”)

于 2012-04-06T02:26:19.063 回答