문제

나는 글로벌 임시 테이블을 사용한 적이 없지만 PHP 환경에서 어떻게 작동하는지 몇 가지 질문이 있습니다.

데이터 공유 방법 : OCI8을 사용하여 PHP를 통해 Oracle에 대한 지속적인 연결을 가정합니다. 데이터가 데이터베이스 ID에 묶여 있습니까? Apache HTTPD 악마를 기반으로 수행됩니까? 아니면 각 개인 요청이 고유합니까?

세션의 데이터는 언제 글로벌 임시 테이블에서 지우십니까? PHP 스크립트가 종료 될 때 수행된다고 가정합니다. 또는 그렇지 않다면 스크립트 종료 전에 제거해야한다고 가정합니다.

도움이 되었습니까?

해결책

글로벌 임시 테이블은 단순히 테이블 구조 (이름, 열 이름, 열 데이터 유형 등)의 논리적 정의입니다. 세션이 데이터를 삽입하여이를 참조하면 해당 세션의 데이터 만 보유하기 위해 임시 테이블 스페이스에서 데이터 세그먼트가 생성됩니다. 따라서 다른 세션은 각각 동일한 논리 테이블 정의를 참조 할 수 있으며, 각각은 자체 전용 데이터 세그먼트가있어 커밋시 또는 세션이 다른 세션에 영향을 미치지 않고 분리 할 때 쉽게 제거 될 수 있습니다.

GTT에서 데이터를 제거하는 것은 생성 된 옵션에 따라 세션이 끝나는 경우 또는 세션이 종료 될 수 있습니다. 두 경우 모두 연결을 끊기 전에 퍼지에 참석할 필요가 없습니다.

GTT에 대한 유용한 대안은 하위 쿼리 팩터링 절 ( "with")이며, 해당 SQL 문에서 이전에 선언 한 것들을 참조 할 수있는 여러 관계를 생성 할 수 있습니다. 이들은 특정 메모리 사용량을 초과 할 때 Oracle에 의해 자동으로 임시 테이블 스페이스에서 데이터 세그먼트로 구체화 될 수 있거나 구체화 최적화기 힌트를 사용하여 수동으로 수동으로 구체화 할 수 있습니다.

다른 팁

올바른 것을 기억한다면 글로벌 임시 테이블의 데이터는 하나의 활성 세션에서만 사용할 수 있으며이 활성 세션에서만 사용할 수 있습니다 (의미 세션 = 연결). 따라서 활성 세션에서 삽입 된 데이터 만 볼 수 있습니다. 따라서이 데이터는 세션을 마친 후 지워집니다. 어떤 언어를 사용하든 상관 없습니다.

적어도 나는 그렇게 생각합니다. :디

여기에 쓰여진 것처럼 :http://www.oracle-base.com/articles/8i/temporarytables.php

글로벌 임시 테이블의 데이터는 개인이므로 세션에서 삽입 된 데이터는 해당 세션에서만 액세스 할 수 있습니다.

임시 테이블의 데이터는 비정상적으로 종료 되더라도 데이터베이스 세션 종료시 자동으로 삭제됩니다.

내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top