PHP (Supervisor)에서 다중 프로세스 포킹. 각각은 동일한 Mysql DB에 대한 연결을 생성하고 동일한 SELECT 쿼리를 병렬로 실행합니다 (Gearman). 프로세스 (즉, 동일한 시간 연결)의 양을 늘리면 동일한 쿼리가 병렬로 실행되어 각 프로세스의 SHOW PROCESSLIST에서 데이터 시간이 늘어납니다. 트랜잭션 수준이 READ UNCOMMITED 인 단순 선택입니다. 그것은 몇 가지 MySQL의 설정 문제가 있습니까? 또는 SELECT 쿼리가 테이블 잠금을 발생 시켰습니까? 또는 전체 스캔이 수행합니까?mysql에 대한 연결 수가 증가하면 동일한 쿼리에서 각각 데이터 시간이 증가합니다.
서버 : 우분투 16.04.2 LTS. 1 CPU 코어. MySQL 5.7.17. innodb_buffer_pool_size 12기가바이트
네트워크 대기 시간, 테이블 구조, 인덱스 및 쿼리 효율성에 관한 정보 일 수 있습니다. 따라서 스키마와 쿼리에 대한 자세한 내용을 제공해야합니다. – abeyaz
하나의 연결에서 3 초 동안 실행되는 자체 조인 (13 개의 고유 테이블)을 포함하여 32 개의 테이블을 사용하지만, 두 개의 병렬 프로세스에서 각 프로세스에서 6 초가 소요됩니다. 쿼리는 많은 조인으로는 충분하지만 집계 및 정렬은 없습니다. 하나의 테이블 스캔 4262 rows with using_where 및 45 % 필터링, 다른 인덱스 사용 –
각 쿼리에서 테이블을 잠그고있는 것처럼 보입니다. BEGIN TRANSACTION을 사용하고 있습니까? – abeyaz