clsql поддерживает пул соединений, так как метод connect
имеет ключ :pool
, а cliki отмечает это потокобезопасно при использовании with-database
. Я не могу найти пример использования этого в Интернете, и я действительно не уверен, что использую его правильно.
В настоящее время я делаю что-то вроде этого:
(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)))
но только 2 из 4 подключений к базе данных когда-либо используются. Я запускаю свое приложение около недели, и оно кажется потокобезопасным, как предложил клики, но я не уверен, что смогу это доказать, и я не понимаю, почему он использует только некоторые из моих соединений, когда он должен выбирать их случайным образом из пула.
Как правильно использовать пулы соединений в clsql?