database/sql数据库连接池满了请求会怎样处理,解惑

大家已经知道执行sql语句的时候会先去连接池里拿或创建一个数据库连接。xorm、dbr等都使用了database/sql数据库连接池。

假如当我们执行sql语句的时候连接池里面没有空闲连接,因为最大连接数的限制也不能创建新连接,这个时候会怎样?此时会阻塞sql语句的执行,排队等候可用连接。为什么划掉排队?如果是排队就有序,实际上并不按照谁先等候的顺序来响应,而是按照遍历map的随机性来随机响应。

database/sql数据库连接池满了请求会怎样处理,解惑_第1张图片

 

//这里是map的声明
connRequests map[uint64]chan connRequest 

 

有可用连接时从map里面随机拿阻塞的请求出来

for reqKey, req = range db.connRequests

 

你可能感兴趣的:(database/sql数据库连接池满了请求会怎样处理,解惑)