2016-12-07 2 views
0

ActiveRecord가 모델별로 데이터베이스에 연결하는 방법을 이해하려고합니다. 그래서 우리는 2 개의 모델과 하나의 데이터베이스를 가지고 있다고 가정합니다. 두 모델 모두에서 간단한 Model.find을 수행하면 각 모델에 대해 새 데이터베이스 연결이 만들어 지므로 자체 정의 된 연결이 있거나 두 모델에서 공유되는 초기화 된 데이터베이스에 대한 단일 연결이 있습니다. 누구도이 일을 어디서하는지 알 수 있습니까? code?ActiveRecord가 모델마다 새 데이터베이스 연결을 만듭니다.

ActiveRecord가이를 어떻게 달성하는지 이해하려고합니다.

답변

2

ActiveRecord은 연결 풀을 사용합니다. 데이터베이스와 상호 작용하려고하면 풀에서 연결을 가져오고 쿼리가 만들어지고 쿼리가 끝나면 연결이 풀로 반환됩니다. 이 모든 것은 백그라운드에서 ActiveRecord에 의해 처리됩니다. 당신은 당신은 쉽게 테스트 할 수 있습니다 데이터베이스 구성에

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html

을 풀의 연결 수를 조정할 수 있습니다. 몇 분이 걸리는 컨트롤러 작업으로 쿼리를 실행하십시오. 작업에 대한 여러 요청을 발행하면 연결 오류를 확인할 수 있습니다

+0

"연결 풀"은 실제로 데이터베이스에 대한 개별 연결입니까? – Peter

+1

예 그리고 구성에 따라 일정 기간 동안 계속 열어 두었습니다. – usha

+0

저를 청소 해 주셔서 감사합니다. 또한, MongoDB를 사용하고 있다면 자체 내부 연결 풀이있어서 ActiveRecord의 연결 풀이 필요하지 않습니다. 맞습니까? – Peter