java - 如果数据库已经提供缓存,为什么还要使用应用程序级缓存?

标签 java database hibernate caching second-level-cache

现代数据库提供缓存支持。大多数 ORM 框架也会缓存检索到的数据。为什么需要这种复制?

最佳答案

因为要从数据库的缓存中获取数据,你仍然需要:

  1. 从 ORM 的“ native ”查询格式生成 SQL
  2. 对数据库服务器进行网络往返
  3. 解析 SQL
  4. 从缓存中获取数据
  5. 将数据序列化为数据库的无线格式
  6. 将数据反序列化为数据库客户端库的格式
  7. 将数据库客户端库的格式转换为语言级别的对象(即任何东西的集合)

通过在应用程序级别进行缓存,您无需执行任何操作。通常,这是对内存中哈希表的简单查找。有时(如果使用 memcache 缓存)仍然存在网络往返,但所有其他事情都不再发生。

关于java - 如果数据库已经提供缓存,为什么还要使用应用程序级缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963819/

相关文章:

java - Java 中的流用法

java - xml dom解析器在java中按名称查找标签

sql-server - SQL Server 使用 WHILE 循环添加计算列

mysql - 数据库编码 utf-8 或 utf-16

java - Java中如何对泛型类型进行计算?

java - 在应用程序启动时启动 HSQLDB 数据库管理器?

mysql - Ubuntu 和 Windows 上相同的 mysql 数据库

java - 将 Hibernate 3.1 升级到 3.6 以获得性能提升

java - hibernate 找不到序列

java - Hibernate 级联类型还是其他类型?