Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/","root", "password");
比方說在Java中,我們可以通過上面的代碼創建一個mysql連接。從connection
對象,我們可以創建幾個statement
對象如下:Mysql是否在一個連接中同步執行語句?
statement = connection.createStatement();
我想知道,如果我們執行這些statement
對象(通過調用statement.executeQuery
)在不同的線程,他們會在MySQL同步或異步執行數據庫?因爲我知道的是,mysql中的一個連接將被作爲一個線程來處理,所以我的想法是,由該連接創建的所有語句都將在其隊列中進行調度。我對麼?
所以,如果我有一個servlet
象下面這樣:
public class HelloServlet extends HttpServlet {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/","root", "password");
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
statement = connection.createStatement();
}
}
從上面的代碼中,如果有一個以上的用戶連接到servlet
的同時,他們會相互阻塞,因爲聲明不能同時執行並行?那麼,他們必須等待之前的陳述完成執行才能輪到他們呢?任何方式來避免這種問題?
首先,您將無法在字段初始化中使用'getConnection'。其次,使用連接池併爲每個連接創建和使用一個語句。 –
@SotiriosDelimanolis即使你這樣做,OP的方法也不對。 –
@LuiggiMendoza在什麼意義上? –