【问题标题】:Is it possible to access concurrently to the same DB from two different Servlets?是否可以从两个不同的 Servlet 同时访问同一个数据库?
【发布时间】:2012-08-19 09:18:46
【问题描述】:

我正在开发一个基于数据库的 Web 应用程序。 在我的应用程序中,我从两个不同的 Servlet 访问这个,并且这些访问可能是同时进行的。

我需要知道是否允许,如果不允许,我该怎么做? 是否有一些技巧可以以线程安全的方式执行查询?

【问题讨论】:

  • 这就是数据库服务器的全部目的:为大量并发会话提供数据。

标签: java database web-applications servlets concurrency


【解决方案1】:

数据库的主要设计要求之一是并发访问。事实上,您很可能已经在任何一个 servlet 中执行此操作,因为它们可以使用多个数据库连接并行处理多个请求。使用来自一个应用的两个连接(几乎)与使用来自两个应用的两个连接完全一样。

【讨论】:

    【解决方案2】:

    可能以及如何处理将是基于数据库设置(隔离级别设置)的数据库责任。

    这是SQL Server 中的隔离级别,这些级别可能因数据库而异。

    1.Read uncommitted (the lowest level where transactions are isolated only enough to ensure that physically corrupt data is not read)
    
    2.Read committed (Database Engine default level)
    
    3.Repeatable read
    
    4.Serializable (the highest level, where transactions are completely isolated from one another)
    

    【讨论】:

    • 这是否意味着可以同时从两个或多个 servlet 访问数据库? (我使用的是 MySQL 服务器,默认设置)
    • 是的,没错。正如 marko 所说,它现在可能正在您的系统中发生,因为“Single Servlet”处理多个请求,这意味着从单个 servlet 对数据库的多次调用(假设您的 servlet 具有数据库调用代码)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    相关资源
    最近更新 更多