2017-11-10 5 views
0

현재 프로젝트에서 뭔가를 비동기 적으로 (일부 데이터를 기록하기 위해) 작성해야하는 경우 우리는 스레드 풀 실행 프로그램을 사용하고 있습니다. 각 쓰기 호출에 쓰레드를 사용하는 대신 입출력 작업 만하므로 Event driven 메커니즘과 비슷한 것을 가질 수 있습니다. 단일 스레드가 while 루프에서 실행되며 async db call을 만듭니다. Java NIO와 비슷합니다. 네트워크 호출을 위해 수행됩니다.스레드를 사용하지 않고 비동기 DB를 쓰기

답변

1

아니요, 당신이하는 일에 관계없이 적어도 하나의 스레드가 필요합니다. driver that uses NIO이 있다면 select()을 실행하는 추가 스레드가 남아 있습니다.

현재 프로젝트에서 어떻게 구현했는지는 모르겠지만 실행 프로그램을 사용할 때도 (SingleThreadExecutor이면 충분 함) 매우 복잡해서는 안됩니다.

+0

이 경우 문 (업데이트)이 순차적으로 만 실행되는 것은 사실이 아닙니까? 느린 진술은 다른 진술에 영향을 미칩니 까? DB를 병렬로 처리 할 수있는 경우에도 각각 N 개의 명령문을 실행하려면 N * t가 필요합니까? 업데이트 대기열은 동시에 시도 된 많은 요청보다 빠르게 증가 할 수 있습니까? – starikoff

+0

나는 로그 문을 삽입하는 것이 값 비싼 연산이 될 수 없다고 가정하고있다. 그렇다면 자바 코드가 아닌 데이터베이스를 튜닝해야한다. 그렇더라도 병렬 처리는 동일한 테이블을 사용하므로 매우 도움이되지 않습니다. 일괄 처리하는 것이 더 효율적입니다. 이 질문은 실제로 많은 정보를 제공하지 못했습니다. – Kayaman