gpt4 book ai didi

Java 和 SQLite 优化

转载 作者:行者123 更新时间:2023-12-01 04:22:09 25 4
gpt4 key购买 nike

我有一个 Java servlet(在 Tomcat 中运行),可以从 SQLite 数据库中提取数据。我正在使用 Xerial 驱动程序从我的 servlet 访问 SQLite 数据库。

当移动应用程序请求信息时,该 servlet 会提取数据。

这个数据库仅用作只读(每天生成一次),但它包含大量数据(主表包含 200 000 行,我还有另一个包含超过 10 000 000 行的数据)。我为经常使用的列创建了索引。

我需要建议来优化 SQLite 数据库的使用,以提高服务器的响应能力。

  1. 对于每个请求,我都会创建一个新的数据库连接,然后发送 SQL 选择、提取数据并关闭连接。这是一个好的策略吗?我可以并行运行许多请求。我应该使用连接池吗?怎么办?

  2. 我的 SQLite 数据库文件约为 2Gb,在我的服务器上我有大量内存 (16Gb)。由于它是只读数据库,我可以将其加载到内存中或增加缓存。最好的策略是什么以及如何实现?

最佳答案

我因为会有很多并行请求,打开连接,执行操作,然后为每个请求关闭连接将导致性能瓶颈。 IO操作非常耗时。我认为你应该使用连接池。 java文档中有详细信息

http://docs.oracle.com/cd/E11882_01/java.112/e12265/manage.htm

由于它是只读文件,您可以使用多线程而无需同步开销来提高性能。

说到缓存,有一些技术可以确保经常使用的数据驻留在缓存中。我不确定你是否可以拥有 2GB 缓存。将文件加载到内存中并增加数据局部性。您可以在 google 上搜索“缓存阻塞”和“循环平铺”技术,这些技术用于增加数据局部性。

关于Java 和 SQLite 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com