我的应用程序由于其与数据库的聊天性质而面临问题。由于许多 I/O 操作或数据库调用,完成一个流程特殊的批处理作业需要时间。代码优化正在进行中,这个过程需要一些时间才能显示出积极的结果。
- 我可以在生产环境中安装 RAMdisk 并在 RAMDisk 中安装 jdk 和 SQL server 吗?
- 这对所有 I/O 操作有帮助吗?
- 至少在批处理作业的情况下,我可以得到一些性能提升吗?
我的应用程序由于其与数据库的聊天性质而面临问题。由于许多 I/O 操作或数据库调用,完成一个流程特殊的批处理作业需要时间。代码优化正在进行中,这个过程需要一些时间才能显示出积极的结果。
正如@BaileyS 建议的那样,一个好的折衷方案是使用耐用的 SSD 驱动器。如果您有大量数据,您可以仅使用 SSD 来存储数据库索引并将数据保存在常规驱动器上。
我不建议使用 RAM 磁盘,除非您经常备份它,或者上面的数据不重要。
相反,我会尝试最大化您的操作系统的文件缓存。如果您的文件缓存在 RAM 中,那么使用它们就像在 RAM 磁盘上一样。在 Linux 上,您可以降低内核的值vfs_cache_pressure
,这意味着内核将更加努力地将缓存文件保留在 RAM 中。并且还设置vm.swappiness
为 100,以便系统更主动地交换未使用的内存页面,保持 RAM 可用于缓存。这可以大大加快速度。请参阅我可以配置我的 Linux 系统以获得更积极的文件系统缓存吗?
假设大部分时间都花在数据库等待 I/O 上,RAM 磁盘肯定会有所帮助(但持久性已经消失)。但是为什么不简单地选择像h2这样的内存数据库,甚至可以在嵌入式模式下减少网络延迟呢?