현재 프로젝트에서 뭔가를 비동기 적으로 (일부 데이터를 기록하기 위해) 작성해야하는 경우 우리는 스레드 풀 실행 프로그램을 사용하고 있습니다. 각 쓰기 호출에 쓰레드를 사용하는 대신 입출력 작업 만하므로 Event driven 메커니즘과 비슷한 것을 가질 수 있습니다. 단일 스레드가 while 루프에서 실행되며 async db call을 만듭니다. Java NIO와 비슷합니다. 네트워크 호출을 위해 수행됩니다.스레드를 사용하지 않고 비동기 DB를 쓰기
0
A
답변
1
어때 대략 single thread executor?
1
아니요, 당신이하는 일에 관계없이 적어도 하나의 스레드가 필요합니다. driver that uses NIO이 있다면 select()
을 실행하는 추가 스레드가 남아 있습니다.
현재 프로젝트에서 어떻게 구현했는지는 모르겠지만 실행 프로그램을 사용할 때도 (SingleThreadExecutor
이면 충분 함) 매우 복잡해서는 안됩니다.
이 경우 문 (업데이트)이 순차적으로 만 실행되는 것은 사실이 아닙니까? 느린 진술은 다른 진술에 영향을 미칩니 까? DB를 병렬로 처리 할 수있는 경우에도 각각 N 개의 명령문을 실행하려면 N * t가 필요합니까? 업데이트 대기열은 동시에 시도 된 많은 요청보다 빠르게 증가 할 수 있습니까? – starikoff
나는 로그 문을 삽입하는 것이 값 비싼 연산이 될 수 없다고 가정하고있다. 그렇다면 자바 코드가 아닌 데이터베이스를 튜닝해야한다. 그렇더라도 병렬 처리는 동일한 테이블을 사용하므로 매우 도움이되지 않습니다. 일괄 처리하는 것이 더 효율적입니다. 이 질문은 실제로 많은 정보를 제공하지 못했습니다. – Kayaman