对吞吐量的影响:如果这些缓冲区太小,数据库将转而使用磁盘上的临时文件来执行这些操作,从而导致高昂的磁盘 I/O 开销和显著的性能下降。这对于复杂的分析查询(可能与 OLTP 事务并发运行)或涉及对大型结果集进行排序的 OLTP 查询尤其严重。虽然高吞吐量 OLTP 的主要目标是最大限度地减少排序,但排序通常是不可避免的。
最佳实践:监控“磁盘排询执行计划。请谨慎增加这些参数。过度分配工作内存例如,在 PostgreSQL 上,如果许多并发查询都尝试分配大量内存,则可能导致内存不足错误。这通常需要在允许某些查询使用更多内存(以避免占用磁盘空间)和确保高并发下整体系统稳定性之间进行权衡。
概念:这是一块专门用于在事务日志记录(预写日志,WAL)写入磁盘上的物理事务日志文件之前对其进行缓冲的内存区域。事务日志对于数据库的持久性和恢复至关重要。
对吞吐量(写入)的影响:对于写入密集、高吞吐量的工作负载,此缓冲区的大小会显著影响数据库将日志记录刷新到磁盘的频率。更大的日志缓冲区意味着在强制写入磁盘之前,内存中可以累积更 伯利兹电话营销数据 多的日志记录,从而降低事务的同步磁盘 I/O 操作频率。这可以平滑写入突发并提高整体写入吞吐量。
最佳实践:监控日志文件同步的频率。较大的日志缓冲区通常对写入密集型工作负载有利。但是,如果日志缓冲区过大,可能会增加崩溃时的恢复时间,因为需要从缓冲区重放更多数据。这需要在写入性能和恢复时间之间取得平衡。查询缓存(数据库级):通常对高吞吐量 OLTP 有害
概念:一些数据库(例如 MySQL 的旧版本)具有内置的“查询缓存”,用于存储选择内存中的查询。如果精确
samequery 再次出现,数据库可以直接从缓存中提供结果,而无需重新执行它。
对吞吐量的影响:虽然看似有利于阅读,对于具有频繁写入的高吞吐量 OLTP 系统,数据库查询缓存几乎普遍是性能瓶颈,应该禁用。原因如下:
失效开销: 任何 插入,更新, 或者 删除对表的操作无效全部涉及该表的缓存查询。在高写入环境中,这意味着缓存会不断失效并重建,导致开销大于收益。