저는 소비자가 대기열에서 항목을 가져 와서 MySQL 데이터베이스에 저장하는 첫 번째 단일 제작자/단일 소비자 응용 프로그램을 제작하고 있습니다. 이 단일 스레드 응용 프로그램 때생산자 소비자 설정 : 데이터베이스 연결을 처리하는 방법?
이전에, 나는 정보를 제공해드립니다의 DB에 연결을 열고 연결을 종료하고, 새로운 정보가 들어왔다 때마다 반복한다. 생산자 - 소비자 설치를
을 , DB 연결을 처리하는 더 좋은 방법은 무엇입니까? 소비자 루프를 시작하기 전에 한 번 열어야합니까 (이 문제는 볼 수 없지만 좋은 사람이라면 누구나 지적 할 것입니다). 아니면 루프를 반복 할 때마다 DB 연결을 열고 닫아야합니까 (시간과 리소스 낭비처럼 보입니다)?
이 소프트웨어는 약 30 개의 작은 리눅스 컴퓨터에서 실행되며 모두 동일한 데이터베이스와 통신합니다. 나는 30 개의 동시 연결이 문제가되는 것을 보지 못하지만, 나는 당신의 생각을 듣고 싶습니다.
죄송합니다. 적용 되었다면 어디서나 찾을 수 없었습니다. 있다면 링크가 환상적 일 것입니다. 감사!
명확한 표현 여기서는 소비자 스레드의 속도에 중점을 둡니다. 단일 스레드 버전에서 다중 스레드로 전환하는 모든 이유는 단일 스레드 버전이 들어오는 정보를 누락했기 때문입니다. 데이터베이스에 연결하는 중 바쁜 작업 이었기 때문입니다. 생산자 쓰레드가 정보를 버퍼로 덤프하는 것을 상당히 빠른 속도로 시작할 것으로 예상되고, 버퍼의 크기가 제한되어 있다면, 소비자는 안정적인 상태를 유지하면서 가능한 빨리 버퍼를 통과하는 것이 매우 중요합니다.
초당 500 회를 초과하지 않는 한 걱정하지 마십시오. 또한 memcached와 같은 캐싱 메커니즘을 사용하여 읽기 전용 쿼리에 대한 연결을 피할 수 있습니다. –
잘 모르겠습니다. @SamD. 어떤 경로를 제안하고 있습니까? 또한 모든 쿼리는 INSERT가됩니다. –
DB에 대한 연결을 열고 쿼리를 보내고 연결을 닫습니다 –