我正在写一个应用程序,这将需要许多写入(高达100的每秒)。我也打算经常从这个表中读出。然而,由于重复的键索引,我将进行的大多数写操作实际上都会失败。这是有意的。失败的写入是否会消耗MySQL表资源?这是不是很糟糕的做法?
发布于 2012-04-06 09:31:02
失败的写入将消耗系统资源,因为需要查询表索引来确定是否违反了约束。至于这是否是糟糕的实践--故意抛出许多预期会失败的写操作似乎有点不寻常,但另一方面,RDBMS的工作是存储、组织和检索数据。与先查询应用程序代码是否可以插入键,然后再插入键(在这种情况下,您仍然需要检查INSERT上的约束)相比,数据库尝试执行违反唯一约束但失败的键要快得多。
发布于 2012-04-06 10:26:19
通常,应用程序有一些业务规则抽象层,其中的完整性问题是在概念上定义的;如果是这样的话,大多数开发人员都希望在那里进行验证。OTOH如果这是一个一次性的实用程序,或者你将永远是唯一的开发人员,它将工作。与读取索引字段相比,黑客可能并没有购买任何显著的效率改进,而且一般来说,这是一个处理错误捕获和移植的令人不快的地方-除了你,这不是一个错误。(有点像“这不是一个bug,而是一个特性……”)
https://stackoverflow.com/questions/10038120
复制相似问题