![]() |
1
1
想象一下一台有100兆内存的计算机,运行着一个数据库。数据库将数据存储在文件中,但也将其中50万存储在缓冲区的内存中。如果有一个数据请求(选择或插入),可以从内存中的缓冲区处理该请求,这比一直到磁盘要快得多。 缓冲访问数据库文件中信息的请求实质上是缓存磁盘I/O请求。如果插入信息,然后在很短的时间内删除,则可能不需要写入磁盘。不写入(缓冲区)会大大提高性能。 如果请求将100万数据插入数据库,那么必须完成所有挂起的写入(从缓冲区到磁盘)。然后至少一半的新数据被写入磁盘。数据必须被写入,因为没有足够的内存来存储100米的新数据和50米的旧数据。将一些现有缓冲区写入磁盘的必要性会影响性能。幸运的是,只有保存已更改或新记录的缓冲区需要写入(或刷新)到磁盘。那些更改的缓冲区被称为“脏的”。 在上述100M的插入之后,新数据中的大约5000万可能暂时保存在内存中,直到最方便写入为止——因为不写入会提高性能。将更改后的记录写回磁盘的一个方便时间是系统闲置一段时间。系统空闲时写入(缓冲区写入)不会降低性能。 |