2011-12-30 4 views
5

우리는 하나의 프로젝트에 대한 모든 데이터베이스 작업을 처리하기 위해 mysql 저장 프로 시저를 사용할 계획입니다. 동일한 데이터베이스를 사용하는 여러 응용 프로그램 (다른 언어)이 있으며 이러한 응용 프로그램에 반복되는 SQL 코드가 적당하다는 것이 확실합니다. mysq 대해 뭔가를 읽는 동안어떻게/언제 mysql 저장 프로 시저를 컴파일?

는 그리고 나는 기본적으로 새로운 DB 연결이 이루어질 때 저장 프로 시저 때마다 컴파일되는 것을 말한다
http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/
제 우연히.
mysql은 적어도 데이터베이스의 모든 (3 자리 숫자 이상) 저장 프로 시저를 컴파일합니까?

+1

나는 당신이 링크 한 기사가 당신의 질문에 답한다고 말하고 싶습니다. – hakre

+1

그래, 나도 그렇게 말할거야. 그것은 "나는 5.5와 그 이후 버전의 mysql과 맞지 않는다."와 같은 희망을 가지고 있다는 것입니다. – grizwako

+0

귀하의 링크 된 기사의 의견에서, 논의가 본질적으로 진화하여, 5.5에서 개선되었지만 뻔뻔스럽지 않게 진화되었습니다. –

답변

5

아니요. 쿼리 및 저장 프로 시저가 필요에 따라 컴파일 된 다음 잠시 동안 캐시에 보관됩니다. 특정 저장 프로 시저를 반복적으로 사용하면 캐시에 컴파일 된 버전이 사용되지만 캐시에 더 이상 존재하지 않으면 먼저과 같은 다른 쿼리와 마찬가지로 을 컴파일해야합니다.

MySQL은 분명히 모든 x-100 개의 저장 프로 시저를 컴파일합니다.

그러나이 모든 것은 다소 관련이 없습니다. 저장 프로 시저의 장점은 동일한 데이터베이스를 사용하는 여러 응용 프로그램을 동일한 방식으로 사용하는지 확인하는 것입니다. 성능이 속도와 관련하여 컴파일 캐시를보기 시작할 때와 같이 잘못된 장소를보고 있습니다. 속도 최적화는 쿼리 또는 데이터베이스 재 디자인을 통해 수행하는 것이 좋습니다.

+0

데이터베이스는 빠른 속도로 작성되어야합니다. 쿼리와 데이터베이스 디자인 및 인덱스를 최적화 한 후에 ** 다른 방법으로 속도를 최적화 할 수 있습니까? – Pacerier

+0

하드웨어가 빠르며 메모리 캐시가 클수록 빠른 하드 드라이브와 기타 스토리지 엔진이 필요합니다. 물론 이것은 쿼리를 가속화하기 위해 인덱스를 추가 한 후입니다. 또한 잠금에주의하십시오. 테이블의 내용이 항상 변경 될 때마다 모든 변경 사항에 대해 잠겨 있으므로 쿼리를 보류합니다. 이 문제에 대한 많은 답변이 있기 때문에 나는이 질문에 답을하고 4 년 된 대답에 코멘트를 추가하지 않을 것입니다. – Matijs

3

MySQL은 모든 저장 프로 시저를 한 번에 컴파일하지 않습니다. 요구 사항에 따라 쿼리를 호출하거나 호출 할 때마다 쿼리가 실행됩니다.

그러나 저장 프로 시저를 사용하면 데이터베이스에서 쿼리 계획을 한 번 컴파일하고 컴파일 된 프로세스를 다시 사용합니다. 이 사전 컴파일은 중요한 성능 이점을 가져올 수 있습니다.

관련 문제