首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clsql连接池

clsql连接池
EN

Stack Overflow用户
提问于 2020-05-30 15:22:26
回答 1查看 135关注 0票数 1

clsql似乎支持连接池,因为connect方法有:pool键,并且克里基注意到它在使用with-database时是线程安全的。我找不到这个在网上使用的例子,我真的不确定我是否正确地使用它。

目前我所做的事情如下:

代码语言:javascript
复制
(defvar connection-string '("localhost" "database" "user" "password"))
(loop repeat 4 do (clsql:connect connection-string :pool t :database-type :mysql))

(defun called-on-seperate-thread (the-query)
  (clsql:with-database (db connection-string :pool t :database-type :mysql)
    (clsql:query the-query :database db)))

但这4种数据库连接中只有2种从未被使用过。我已经运行我的应用程序大约一周了,它似乎像cliki建议的那样是线程安全的,但我不确定我是否能够证明它,我也不明白为什么它只使用一些我的连接,当它应该从池中随机选择它们。

如何正确使用clsql中的连接池?

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 02:31:49

这是对:pool关键字参数clsql:connect的描述,取自https://www.quicklisp.org/beta/UNOFFICIAL/docs/clsql/doc/connect.html

布尔标志。如果是T,则从打开的连接池中获取连接。如果池为空,则创建一个新连接。默认为零。

https://quickref.common-lisp.net/clsql.html上,有人说:

如果池不是,则连接将从普通池中提取,如果池是CONN池对象,则连接将从此池中提取。

我想这意味着当你

代码语言:javascript
复制
(loop repeat 4 do (clsql:connect connection-string :pool t :database-type :mysql))

只有第一个调用返回一个新连接;对clsql:connect的第二个、第三个和第四个调用只返回在第一个迭代中创建的连接,该连接位于“通用池”上。

虽然我没有测试它,但我想如果您将nil传递给:pool参数,那么所有四个连接实际上都会建立起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62104574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档