자주 업데이트되는 MySQL 테이블이 있습니다. 본질적으로, 나는 한 번에 여러 개의 PHP 스크립트로 500 개의 행을 잡으려고 노력하고 있으며, PHP 스크립트가 같은 행을 가져 오는 것을 원하지 않습니다. 수천 개의 행이있는 서버로드로 인해 ORDER BY RAND()를 사용하지 마십시오.동일한 행을 신속하게 선택 및 업데이트하려고 시도합니다.
그래서 각 스크립트가 모든 행의 상태를 "1"로 설정 했으므로 다시 잡히지 않을 것입니다. 그래서, 나는 status = 0 (나는 오름차순으로 SELECT 명령을 사용함)을 500 행을 가져오고, 그 다음 정확히 500 행을 상태 "1"로 설정하여 다른 스크립트가 그 행을 가져 가지 못하도록하고 싶습니다.
테이블이 항상 업데이트되므로 오름차순으로 500 개의 행을 선택한 다음 오름차순 행으로 500 개의 행을 업데이트 할 수 없습니다. 왜냐하면 스크립트를 시작하고 SELECT를 수행 할 때까지 더 많은 행을 추가 될 수 있습니다.
따라서 500 행을 선택하고 내가 선택한 행을 어떻게 든 기억하고 업데이트해야합니다.
내가 설명했던 것처럼 신속하게 SELECT 및 UPDATE를 수행하는 방법은 무엇입니까?
선생님, 제가 생각하지 못한 천재적인 생각입니다. 고맙습니다. – walden
안녕하세요. 한 가지 간단한 질문 : 같은 스크립트에서 cron을 동시에 실행하고 동일한 순서로 500 개의 행을 가져 와서 업데이트하면 동일한 행 중 일부가 한 번 이상 업데이트 될 가능성이 있습니다 ? 나는 그것이 유일 할 필요가있다. – walden
'UPDATE'의 메 커닉은이 경우 행당 여러 개의 업데이트를 방지하지만 재확인해야 할 수도 있습니다. – Amber