2010-04-13 4 views
3

의사 배열 변수에 대한 테이블을 만들려고합니다. 표는 아직 정상화되지 mysql 쿼리 내부에서 현재 세션/프로세스 ID 가져 오기

CREATE TABLE IF NOT EXISTS `MyArray`.`ArrayTable` (
    `ID` INT UNSIGNED NOT NULL COMMENT 'Hash value of SessionID + ArrayName' , 
    `SessionID` INT UNSIGNED NOT NULL , 
    `ArrayName` CHAR(26) NOT NULL 
      COMMENT '32 digit char - 6 digit longest process id (assumtion)' , 
    `Index` INT UNSIGNED NOT NULL , 
    `Value` TEXT NOT NULL , 
    PRIMARY KEY (`ID`, `SessionID`)) 
ENGINE = MyISAM; 

같은 즉, '이 조금 더 간단 :

클라이언트 사이 collission을 방지하기 위해 이해할 수 있도록 희망, 보이는, 클라이언트 세션 사이에 차별이 있어야합니다. 그 이유는 현재 세션/프로세스 ID ("SHOW PROCESSLIST"처럼)를 알 필요가 있다고 생각하지만 실제로 쿼리를 처리하는 방법을 알아야 할 필요가 있습니까?

+0

다른 식별 정보가 있습니까? 클라이언트의 IP, 사용자 이름 등은 실제로 어떤 가상 랜덤이 아닌 클라이언트를 식별합니까? 세션/프로세스 ID는 시간이 지남에 따라 반복 될 수 있습니다. – lexu

+0

하나의 클라이언트 IP와 하나의 사용자 이름으로 서버에 많은 연결을 만들 수 있으므로 작동하지 않을 것입니다. 하지만 예, 내가 놓친 부분을 지적하고 있습니다. "세션/프로세스 ID가 시간이 지남에 따라 반복 될 수 있습니다." 이제는 variabel로 생성 시간을 추가하는 방법에 대해 생각하고 있습니다. –

+0

그런데, thread id는 mysqld restart 후에 재설정된다. 서버가 실행중인 동안에는 ID가 재사용되지 않습니다. – newtover

답변

14

connection_id() 기능을 사용할 수 있습니다.

+0

내가 정말로 필요로하는, 이것 참 감사합니다. –