是否是这样的查询的规范:
update A set TextField = 'U'
需要 2 分钟在有 2M 记录的表上执行?该表没有 PK,没有索引,但我也没有使用where
。
是否是这样的查询的规范:
update A set TextField = 'U'
需要 2 分钟在有 2M 记录的表上执行?该表没有 PK,没有索引,但我也没有使用where
。
2 分钟内更新了 200 万条记录,大约每秒更新 16k 次,IMO 相当不错。
大多数 DBMS 不会在他们将写入操作提交到缓存时返回,而是等到操作系统确认写入操作确实已执行。该功能对于确保数据完整性非常重要,您会同意我的观点,这是数据库服务器的关键品质。相反,select
语句通常可以从缓存中提供。
顺便说一句,您可能会发现Bruce Momjian 的这个演示文稿很有趣,它很好地解释了当您选择数据库服务器时要考虑的问题。它以 PostgreSQL 为中心,但他解释的内容适用于所有类型的数据库服务器。
编辑:另一个有趣的信息来源是Microsoft 的 Bob Dorr 的这个演示文稿——其中指出 SQLServer 中 98% 的 IO 是异步的。
Wrt 您观察到更新已经包含值的列而不是设置为 null 的列,这篇 SO 文章可能包含有用的信息 - 您用于TextField
列的数据类型可能会产生重大影响。