복붙노트

[SQL] 어떻게 동시 쿼리는 MySQL 데이터베이스에서 처리?

SQL

어떻게 동시 쿼리는 MySQL 데이터베이스에서 처리?

나는 MySQL 데이터베이스를 사용하고 내가 여러 만들기 (500 등) 이러한 쿼리를 처리하는 방법, 여러 테이블에서 정보를 얻기 위해 동시에 쿼리 있는지 알고 싶습니다? 순차적으로 또는 병렬로?

해결법

  1. ==============================

    1.쿼리는 항상 여러 세션 (즉, 클라이언트 연결) 사이에 병렬로 처리됩니다. 하나의 연결에 대한 모든 쿼리 한 후 다른 실행됩니다. 다중 연결 사이의 병렬 처리 수준은 사용 가능한 서버 리소스에 따라 구성 할 수 있습니다.

    쿼리는 항상 여러 세션 (즉, 클라이언트 연결) 사이에 병렬로 처리됩니다. 하나의 연결에 대한 모든 쿼리 한 후 다른 실행됩니다. 다중 연결 사이의 병렬 처리 수준은 사용 가능한 서버 리소스에 따라 구성 할 수 있습니다.

    일반적으로, 일부 작업은 개별 쿼리 세션 (전화 거래) 사이에 보호된다. 다음은 InnoDB의 백엔드 지원하지만,하지의 MyISAM 테이블을 (하지만 원자 작업이라는 개념을 지원)된다. 하는 작업이 (하나의 병렬 거래에서 작업이 서로 어떻게 영향을 미치는지 따라서와) 서로 보호 및 성능에 미치는 영향에 차이가 분리 다양한 수준이있다.

    자세한 내용은 일반적인 거래와 MySQL의 구현에 대해 읽어보십시오.

  2. ==============================

    2.각 연결은 한 번에 하나 개의 쿼리의 최대 실행하고 단일 스레드에서 작업을 수행 할 수 있습니다. 서버는 쿼리 당 하나 개의 스레드를 엽니 다.

    각 연결은 한 번에 하나 개의 쿼리의 최대 실행하고 단일 스레드에서 작업을 수행 할 수 있습니다. 서버는 쿼리 당 하나 개의 스레드를 엽니 다.

    일반적으로, 희망, 쿼리는 서로를 차단하지 않습니다. 그러나 엔진과 쿼리에 따라, 그들은 할 수있다. 설명서의 일부 자세히 설명 MySQL은 잠금이 많이 있습니다.

    그들은 서로를 차단하지 않는 경우, 그들은 여전히 ​​리소스를 사용하여 서로 아래로 저하 될 수 있습니다. IO 작업이 속도 저하의 특정 소스입니다. 데이터가 메모리에 맞지 않는 경우, 당신은 정말 당신의 IO 서브 시스템이 처리 할 수있는에 병렬 쿼리의 수를 제한해야한다, 또는 일이 정말 나쁜 얻을 것이다. 측정의 핵심입니다.

    나는 일반적으로 500의 경우 쿼리, 당신은 하드웨어에서 최고의 가치를 점점되지 않을 수 있습니다 한 번에 실행 (및 잠금에서 대기 NOT)되는 것을 말할 것입니다 (당신이 많은 스레드가 IO를 기다리는 방법 (500 개) 코어를?해야합니까?)

  3. ==============================

    3.일반적으로 모든 쿼리를 병렬로 실행됩니다.

    일반적으로 모든 쿼리를 병렬로 실행됩니다.

    하지만 ... 그 몇 가지 예외가있다. 트랜잭션 격리 수준에 따라 행을 업데이트하는 동안 잠글 수 있습니다. 이상 여기에 더 그것에 대해 읽어 http://dev.mysql.com/doc/refman/5.1/en/dynindex-isolevel.html

  4. from https://stackoverflow.com/questions/4980801/how-simultaneous-queries-are-handled-in-a-mysql-database by cc-by-sa and MIT license