2010-05-27 1 views
10

며칠 전에 나는 MySQL 데이터베이스에서 다음과 같은 오류가 발생했습니다 :MySQL 서버의 thread_stack 매개 변수 - 그것은 무엇입니까? 얼마나 커야합니까?

스레드 스택 오버런하십시오 196,608 바이트 스택의 사용 68,744 바이트, 필요한 128,000 바이트. 더 큰 스택을 지정하려면 'mysqld -O thread_stack = #'을 사용하십시오.

기본값은 MySQL은 4.0.10 이전 64킬로바이트 및 192킬로바이트 그 이후입니다 : 내가 찾은

모든 문서

는 말한다. 스레드 스택 크기가 너무 작 으면 서버가 처리 할 수있는 SQL 문의 복잡성, 저장 프로 시저의 재귀 수준 및 기타 메모리 소비 작업을 제한합니다.

변수 thread_stack을 256K로 설정했지만 임의 값이었습니다. 지금은 문제가 해결되었지만 실제로 얼마나 큰지, 예제 값이나 사용법을 알고 싶습니다. 예 :

  • 스레드 스택의 96KB (x KB)로 수행 할 수없는 작업은 무엇입니까?
  • 얼마나 큰 스레드 스택이 필요한지 계산하는 방법은 무엇입니까?
+0

그 원인은 무엇입니까? 더 큰 조인 또는 재귀 저장된 procs가 있습니까? – oedo

+0

재귀 저장 procs은 내가 생각하는 이유입니다. 거대한 테이블 (500M 레코드)에도 조인이 있지만 일반적으로 처음에는 테이블의 작은 하위 집합 만 잘라낸 다음 비교적 작은 두 번째 조인과 조인합니다. 수백만 개의 레코드가있는 두 개의 테이블에 조인을하지 않으며 수백만 개의 레코드를 생성하는 조인도 수행하지 않습니다. 하지만 thread_stack이 조인에 어떤 영향을 미칩니 까? – ssobczak

+0

@ssobczak, thread_stack이 조인에 미치는 영향에 대한 단서가 있습니까? –

답변

10

오늘도 비슷한 오류가 발생했습니다. 변수에 대한 MySQL documentation은 기본값 (예 : 32 비트 시스템의 경우 192K 및 64 비트 시스템의 경우 256K)에 대한 힌트를 제공하고 MySQL Benchmark suite을 확인합니다.