SQL Server基于内存进行数据操作,以避免磁盘造成的数据读取缓慢,但这并不意味着数据库服务器对于磁盘的I/O能力就没有要求了。数据库引擎会定期地将缓存中的数据写入磁盘,在数据写入磁盘的过程中,为了确保数据的一致性,SQL Server引入了轻量级的锁机制闩锁(即Latch,在后续章节中会介绍到Latch的互斥)。在缓存数据写入磁盘过程中,缓存中的数据页将会被加上闩锁,以避免其他会话修改数据。当磁盘的读/写能力较弱时,同样会造成语句性能低下等问题。磁盘I/O除了会影响数据缓存的读/写外,还会影响数据库日志的记录。为了确保数据库的基本特性(ACID,在介绍数据库事务时会详细介绍),SQL Server还引入了日志的机制,并且日志记录磁盘是几乎实时的,当事务提交时,事务日志便会写入磁盘,如果磁盘的I/O能力较低,同样会影响到语句的执行速度。
通常情况下,会保守地估计磁盘的一次I/O时间为10毫秒。如果远大于这个值,那磁盘的I/O能力就太差了,需要考虑更换磁盘来提高磁盘I/O的效率。