할로윈 문제

Halloween Problem

컴퓨팅에서 할로윈 문제는 업데이트 작업이 행의 물리적 위치에 변화를 일으켜, 작업 중 행을 두 번 이상 방문할 수 있는 가능성을 데이터베이스상에서 발생하는 현상을 말한다. 이로 인해 업데이트 작업을 수행하는 검색보다 업데이트 레코드를 계속 앞에 두는 일부 경우에는 무한 루프 현상이 발생할 수 있다.

이 데이터베이스 오류의 잠재성은 1976년체임벌린, 셀링거, 모튼 아스트라한에 의해 할로윈 데이 때 처음으로 발견되었는데, 2만 5천 달러 이하의 수입을 올린 모든 직원들에게 10%의 임금 인상을 주기로 되어 있던 질의에 대한 작업을 하던 중이었다. 이 쿼리는 오류 없이 성공적으로 실행될 수 있었지만, 데이터베이스 내의 모든 직원이 완료되었을 때, 그들이 그 수준에 도달할 때까지 급여 인상을 계속했기 때문에, 적어도 2만 5천 달러를 벌어들였다. 정확히 한 번 연봉 2만5000달러 이하인 직원 기록을 일일이 반복해 질 것으로 예상됐다. 실제로 조회실행엔진에도 갱신된 기록도 눈에 띄어 조회 기준과 계속 일치했기 때문에, 급여기록은 여러 번 일치하고 매번 10%씩 인상되어 모두 2만 5천 달러 이상이 되었다.

그 이름은 문제의 본질을 설명하는 것이 아니라 발견된 날 때문에 붙여진 이름이다. Don Chamberlin이 설명한 대로:

팻과 모튼은 할로윈에 이 문제를 발견했다... 나는 그들이 내 사무실에 와서 '챔버린, 이것 좀 봐. 우리는 옵티마이저가 업데이트 처리를 위한 계획을 세울 때 업데이트되고 있는 분야를 기준으로 한 인덱스를 사용하지 않도록 해야 한다. 어떻게 그럴 수 있을까?' 마침 금요일이었는데, 우리는 '잘 들어, 우리는 오늘 오후에 이 문제를 해결할 수 없을 거야. 이름만 대보자. 우리는 그것을 할로윈 문제라고 부를 것이고 다음 주에 작업을 할 것이다.' 그리고 그 이후로 계속 그렇게 불리고 있는 것으로 밝혀졌다.

참조