OrientDB教程

OrientDB 性能调优

在本章中,您可以获得一些关于如何优化使用 OrientDB 的应用程序的一般提示。对于不同类型的数据库,可以通过三种方式提高性能。
文档数据库性能调整-它使用的技术有助于避免为每个新文档创建文档。 对象数据库性能调优-它使用通用技术来提高性能。 分布式配置调整-它使用不同的方法来提高分布式配置的性能。
您可以通过更改内存、JVM 和远程连接设置来实现通用性能调优。

内存设置

内存设置有不同的策略来提高性能。

服务器和嵌入式设置

这些设置对服务器组件和在嵌入式模式下使用 OrientDB 运行 Java 应用程序的 JVM 都有效,直接使用 plocal
调整时最重要的事情是确保内存设置正确。真正的区别在于内存映射使用的堆和虚拟内存之间的正确平衡,尤其是在内存缓存结构计数少于原始 IO 的大型数据集(GB、TB 等)上。
例如,如果您可以为 Java 进程分配最大 8GB,通常最好分配小堆和大磁盘缓存缓冲区(堆外内存)。
尝试以下命令来增加堆内存。
java-Xmx800m-Dstorage.diskCache.bufferSize=7200 ... 
storage.diskCache.bufferSize 设置(使用旧的"本地"存储是 file.mmap.maxMemory)以 MB 为单位,并说明要使用多少内存磁盘缓存组件。默认为 4GB。
注意-如果最大堆和磁盘缓存缓冲区的总和太高,可能会导致操作系统以巨大的速度进行交换。

JVM 设置

JVM 设置在 server.sh(和 server.bat)批处理文件中编码。您可以更改它们以根据您的使用情况和硬件/软件设置来调整 JVM。在 server.bat 文件中添加以下行。
-server-XX:+PerfDisableSharedMem 
此设置将禁用写入有关 JVM 的调试信息。如果您需要分析 JVM,只需删除此设置。

远程连接

使用远程连接访问数据库时,有很多方法可以提高性能。

获取策略

当您使用远程数据库时,您必须注意所使用的获取策略。默认情况下,OrientDB 客户端仅加载结果集中包含的记录。例如,如果查询返回 100 个元素,但如果您从客户端交叉这些元素,那么 OrientDB 客户端会延迟加载元素,并为每条丢失的记录再一次对服务器的网络调用。

网络连接池

默认情况下,每个客户端仅使用一个网络连接与服务器通信。同一客户端上的多个线程共享同一个网络连接池。
当您有多个线程时,可能会出现瓶颈,因为等待空闲网络连接花费了大量时间。这就是配置网络连接池很重要的原因。
配置很简单,只有2个参数-
minPool-连接池的初始大小。默认值配置为全局参数"client.channel.minPool"。 maxPool-连接池可以达到的最大大小。默认值配置为全局参数"client.channel.maxPool"。
如果所有池连接都忙,那么客户端线程将等待第一个空闲连接。
使用数据库属性进行配置的示例命令。
database = new ODatabaseDocumentTx("remote:localhost/demo"); 
database.setProperty("minPool", 2); 
database.setProperty("maxPool", 5);  
database.open("admin", "admin");

分布式配置调优

有很多方法可以提高分布式配置的性能。

使用交易

即使您更新图表,您也应该始终在事务中工作。 OrientDB 允许您在它们之外工作。常见的情况是只读查询或者在失败的情况下可以恢复大量非并发操作。当您在分布式配置上运行时,使用事务有助于减少延迟。这是因为分布式操作仅在提交时发生。由于延迟,分发一个大的操作比传输小的多个操作更有效。

复制与分片

OrientDB 分布式配置设置为完全复制。拥有多个具有相同数据库副本的节点对于规模读取很重要。事实上,每个服务器独立于执行读取和查询。如果您有 10 个服务器节点,则读取吞吐量是 10 倍。
对于写入,情况正好相反:如果复制是同步的,则具有多个节点进行完整复制会减慢操作速度。在这种情况下,跨多个节点对数据库进行分片允许您扩展写入,因为写入时只涉及一部分节点。此外,您可以拥有一个大于一个服务器节点 HD 的数据库。

增加写入量

如果您的网络速度较慢并且您有同步(默认)复制,则您可以支付延迟成本。事实上,当 OrientDB 同步运行时,它至少会等待 writeQuorum。这意味着如果 writeQuorum 为 3,并且您有 5 个节点,则协调器服务器节点(启动分布式操作的地方)必须等待至少 3 个节点的答复才能向客户端提供答复。
为了保持一致性,writeQuorum 应该设置为多数。如果你有 5 个节点,大多数是 3、如果有 4 个节点,它仍然是 3、将 writeQuorum 设置为 3,而不是 4 或 5 可以降低延迟成本并仍然保持一致性。

异步复制

为了加快速度,您可以设置异步复制来消除延迟瓶颈。在这种情况下,协调器服务器节点在本地执行操作并向客户端给出答案。整个复制将在后台进行。如果未达到法定人数,更改将透明回滚。

放大读取

如果您已将 writeQuorum 设置为大多数节点,则可以将 readQuorum 保留为 1(默认值)。这会加快所有读取速度。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4