为了避免每次查询 MySQL 时建立新连接的开销,有两个可用的选项:
据我所知,使用持久连接时,我的应用程序中所有线程都会尝试使用相同的持久连接到数据库,因为它们都在使用相同的连接。因此,这是一种被多个应用程序线程共享的连接,结果请求很快就会在数据库方面被阻塞。
如果我使用连接池机制,则所有应用程序线程都共享一组连接。因此,阻塞请求的可能性较小。但是,使用连接池时,应用程序线程是否应等待从池中获取连接,还是应以轮询的方式向池中的连接发送请求,并在数据库上让队列(如果有)发生?
- 持久连接,即在请求新连接时,检查是否已经存在“相同”的连接,如果有则使用它。
- 连接池,即客户端维护一组连接,以便需要使用连接的每个线程将从池中检出连接,并在完成后将其返回到池中。
据我所知,使用持久连接时,我的应用程序中所有线程都会尝试使用相同的持久连接到数据库,因为它们都在使用相同的连接。因此,这是一种被多个应用程序线程共享的连接,结果请求很快就会在数据库方面被阻塞。
如果我使用连接池机制,则所有应用程序线程都共享一组连接。因此,阻塞请求的可能性较小。但是,使用连接池时,应用程序线程是否应等待从池中获取连接,还是应以轮询的方式向池中的连接发送请求,并在数据库上让队列(如果有)发生?