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"처럼)를 알 필요가 있다고 생각하지만 실제로 쿼리를 처리하는 방법을 알아야 할 필요가 있습니까?
다른 식별 정보가 있습니까? 클라이언트의 IP, 사용자 이름 등은 실제로 어떤 가상 랜덤이 아닌 클라이언트를 식별합니까? 세션/프로세스 ID는 시간이 지남에 따라 반복 될 수 있습니다. – lexu
하나의 클라이언트 IP와 하나의 사용자 이름으로 서버에 많은 연결을 만들 수 있으므로 작동하지 않을 것입니다. 하지만 예, 내가 놓친 부분을 지적하고 있습니다. "세션/프로세스 ID가 시간이 지남에 따라 반복 될 수 있습니다." 이제는 variabel로 생성 시간을 추가하는 방법에 대해 생각하고 있습니다. –
그런데, thread id는 mysqld restart 후에 재설정된다. 서버가 실행중인 동안에는 ID가 재사용되지 않습니다. – newtover