java - 如何处理并发数据库请求或如何在长时间运行的查询正在进行时运行短 SQL 查询

标签 java mysql database jpa jakarta-ee

假设有一个用户请求需要在后端执行 SQL 查询,并且需要返回结果数据作为响应,但用户已经发起了另一个由运行很长时间的 SQL 查询组成的请求。

当较长的查询正在进行时,我需要数据库来处理较短的查询(给予较短的查询比长时间运行的查询更高的优先级)。

  1. 是否可以通过调整数据库服务器来实现这样的并发执行?
  2. 可以使用 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/

相关文章:

java - 如何成功返回 mp3 文件的元数据,同时避免空指针异常

java - 评估字符串时的错误答案

php - $wpdb get_row 填充 session 变量

php - 一个数据库可以工作,而第二个数据库则不能

java - 来自 JSON 的多维数组

java - H2:使用嵌套查询的计数查询中的重复列名

PHP, MySQL, 高效的标签驱动搜索算法

mysql - 如何在 mysql 中为用户授予 EXECUTE 存储过程

数据库表命名,复数或单数

database - 建模多个多对多关系的最自然方式