今天早上我了解到了压缩数据库缓存在给定数量的 RAM 中允许更大的缓存。我知道 Microsoft SQL 2008 提供了此功能。
我想知道 MySQL 是否有类似的功能?
答案1
恐怕没有。
它可以复制时压缩数据...
..还有新的执行数据压缩的 innodb 存储插件。
但据我所知,不在内存中。
但如果你处理 blob - 只需将它们压缩存储即可[使用mysql 函数甚至是您的外部应用程序] - 我在一个项目中这样做。这样,缓存在 RAM 中并存储在磁盘上的数据被压缩;在我的例子中,应用程序层的作用是对其进行解压缩。
答案2
它依赖于引擎。每个引擎都实现自己的缓存(除非算上查询缓存,但在大多数情况下查询缓存并没有什么用)。
使用压缩且拥有自己的块缓存系统的引擎(例如 InnoDB-plugin 或 Falcon)可能会自动执行此操作。这是因为它们以块存储在磁盘上的格式进行缓存,也就是说是压缩的。
HEAP(内存)引擎不进行压缩(事实上,标准 HEAP 引擎效率很低,它不支持可变长度的行)
使用操作系统缓存的引擎将以任何形式在磁盘上保存数据,例如,存档引擎(使用磁盘压缩)将压缩块保存在操作系统的缓存中。