스레드 풀 (Thread Pool)

스레드풀(Thread Pool)이란?스레드풀(Thread Pool)은 여러 작업을 동시에 처리할 수 있도록 미리 생성된 스레드의 모음을 말함. 이 개념은 멀티스레딩 환경에서 자주 사용되며, 자원을 효율적으로 사용하고 작업 성능을 향상시키는 데 도움이 됨.왜 스레드풀이 필요한가?멀티스레딩 환경에서는 여러 작업을 동시에 처리할 수 있지만, 매번 새로운 스레드를 생성하고 소멸시키는 과정은 비용이 많이 듬. 스레드를 생성할 때마다 시스템 자원이 소비되고, 작업이 끝날 때마다 해당 스레드를 삭제해야 하기 때문.스레드풀은 이를 해결하기 위해 일정한 개수의 스레드를 미리 생성해두고, 필요할 때 이 스레드를 사용함. 작업이 끝난 후에도 스레드를 삭제하지 않고, 다시 사용할 수 있도록 대기시켜 둠.. 이렇게 함으로써 ..

DB 2024.09.09 1

MySQL 엔진의 구성요소 설명

1. Connection Handler역할: MySQL 서버는 클라이언트가 데이터베이스에 연결할 수 있도록 Connection Handler가 관리합니다. 클라이언트가 MySQL 서버에 연결을 요청하면, 이 요청을 받아들여 세션을 생성하고 연결을 유지하는 역할을 합니다.기능:클라이언트가 서버에 연결하면 해당 연결을 처리할 스레드를 할당합니다.여러 클라이언트가 동시에 서버에 연결할 수 있도록 동시성 관리를 수행합니다.연결이 설정되면, 클라이언트의 요청을 처리하기 위한 스레드를 생성 또는 재사용하여 성능을 최적화합니다.MySQL에서는 여러 연결을 효율적으로 관리하기 위해 스레드 풀(Thread Pool)을 사용합니다.예시: 사용자가 데이터베이스에 접속해 쿼리를 실행하려면 먼저 MySQL 서버와 연결을 설정해..

DB 2024.09.06 1

Auto increment max 때문에 주말에 6시간 일했다 - 2

해결책은 간단했다. D 테이블의 id가 max에 도달해서 C 모듈이 Queue Table에 있는 데이터를 읽어서 D 테이블에 업데이트를 못하는 것이니깐1. C 모듈 잠깐 끄고2. pk가 unsigned int 인 것을 unsigned bigint로 바뀐 E테이블을 새로 만들고3. D테이블을 E테이블로 카피하고4. 그다음에 D테이블과 E테이블의 이름을 바꿔치기하면 해결되는 것이었다.  약간 걱정이 되는 부분은 D테이블에 데이터가 얼마나 쌓였고 D테이블에 있는 데이터를 E테이블에 카피하는 데 걸리는 시간을 가늠할 수 없다는 것이었다. (최대 42억개니깐..) 그래도 git의 maintainer 권한이 있었기 때문에 작업 자체는 어떻게든 다 할 수 있었다.production DB에 접근할 수 없어 쿼리를 직접..

개발 이슈 2024.05.25 0