假设有一个用户请求需要在后端执行 SQL 查询,并且需要返回结果数据作为响应,但用户已经发起了另一个由运行很长时间的 SQL 查询组成的请求。
当较长的查询正在进行时,我需要数据库来处理较短的查询(给予较短的查询比长时间运行的查询更高的优先级)。
- 是否可以通过调整数据库服务器来实现这样的并发执行?
- 可以使用 Java 线程来实现此目的吗?这是一个正确的选择吗?
最佳答案
大多数数据库都支持并发语句执行,通常带有 Multiversion concurrency control (MVCC)或其他机制。客户端通常可以打开与数据库服务器的多个连接,并在每个连接中运行不同的SQL语句。
您需要检查您的数据库服务器如何处理并发,您可以首先查看 this answer for MySQL 。然后查看 JDBC Basics docs了解如何打开多个连接。会有一些问题,例如transaction isolation levels或特定于您的用例的锁定处理。
关于java - 如何处理并发数据库请求或如何在长时间运行的查询正在进行时运行短 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56061184/