缓存是一个概念,它将创建数据库表结构的副本,为用户应用程序提供一个舒适的环境。 OrientDB在不同级别有多种缓存机制。
下面的插图给出了关于什么是缓存的说明。
在上图中,DB1,DB2,DB3是应用程序中使用的三种不同的数据库实例。
一级缓存是一个本地缓存,用于存储特定会话已知的所有实体。 如果您在此会话中有三笔交易,则它将持有所有三笔交易使用的所有实体。 当您关闭会话或执行“清除”方法时,此缓存将被清除。 它减少了应用程序和数据库之间I/O
操作的负担,从而提高了性能。
二级缓存是使用第三方提供商的实时缓存。 你可以完全控制缓存的内容,也就是说你可以指定哪些项目应该被删除,哪些项目应该被存储更长时间等等。它是多个线程之间的完全共享缓存。
存储模型只不过是磁盘,内存或远程服务器的存储设备。
OrientDB缓存工作原理
OrientDB缓存在不同的环境中提供不同的方法。 缓存主要用于更快的数据库事务,减少事务的处理时间并提高性能。 以下流程图显示了缓存如何在本地模式和客户端 - 服务器模式下工作。
本地模式(嵌入式数据库)
以下流程图告诉您如何在本地模式下存储和使用的应用程序之间存在记录,即当数据库服务器位于本地主机中时。
当客户端应用程序请求OrientDB检查以下记录时 -
- 如果事务已经开始,那么它在事务内部搜索已更改的记录并在找到时返回它。
- 如果本地缓存已启用并包含所请求的记录,则将其返回。
- 如果此时记录不在高速缓存中,则请求存储(磁盘,内存)。
客户服务器模式(远程数据库)
以下流程图说明如何在客户端 - 服务器模式下,即数据库服务器位于远程位置时,记录位于存储和使用的应用程序之间。
当客户端应用程序要求记录时,OrientDB会检查以下内容 -
- 如果事务已经开始,那么它在事务内部搜索已更改的记录并在找到时返回它。
- 如果本地缓存已启用并包含所请求的记录,则将其返回。
- 此时,如果记录不在缓存中,则通过TCP/IP调用向服务器请求。
- 在服务器中,如果本地缓存已启用并包含所请求的记录,则返回该缓存。
- 此时,记录仍然不在服务器中缓存,然后向存储(磁盘,内存)请求。