나는 확장 성 MySQL 스키마를 작성하는 방법에 관해서 내가 할 수있는만큼 많이 읽었지 만, 이것이 좋은 생각인지 확실하지 않다.MySQL 업데이트 문이 너무 비쌉니까?
RDS를 사용하여 EC2에서이 프로젝트를 진행하고 있습니다.
내 데이터베이스에는 읽기보다 쓰기가 많은 코어 테이블이 있습니다 (대략 70 %는 쓰고 30 %는 내가 추측 할 수 있음).
그러나 테이블에 새 행을 만들 때마다 5 초마다 업데이트를 추가해야합니다. 대체로, 매초마다 복수 행이 추가/갱신 될 것이므로 UPDATE 문이 1 초마다 실행됩니다. 따라서이 실행됩니다.
내가 읽은 것을 바탕으로, MySQL에는 테이블에 쓸 때 테이블 잠금이라는 것이 있습니다. 이 테이블은 또한 크게 읽혀질 것이므로 행에 UPDATE 문을 사용하기에 너무 많은 오버 헤드/잠금이 발생합니까? (내가 아는 한)
내 옵션은 다음과 같습니다
-
(초마다 또는 어쩌면 이상) 자주 기준으로 큰 테이블에
- 마십시오 UPDATE 문
- 내가 행을 만들 준비 테이블을 가지고 , 갱신하고 준비가되면 (행이 완료 될 때까지 약 20 분) 행을 스테이징 테이블에서 기본 테이블로 운송하십시오.
나는 그들이 콘텐츠를 볼 수 있습니다 전에 내 사용자가 20 분을 기다릴 수 있기 때문에 준비 테이블을 피하려고하지만 필요악이다 아닌지 궁금하네요.
다른 아이디어? 제안?
감사합니다.
실제로 기본 키를 기반으로 행을 업데이트하고 있습니다. 아직 스토리지 엔진을 결정하지는 않았지만 대부분의 경우 InnoDB가 그다지 빠르지 않다고 들었습니다. 하지만 내 경우에는 InnoDB가 전체 테이블을 잠그고 싶지 않기 때문에 더 나은 솔루션 인 것처럼 보입니다. – user599146
@user 대부분의 응용 프로그램은 쓰기가 거의없는 상태에서 약 90-95 %의 읽기가 가능하며 MyISAM이 약간 더 빠르다고 여겨집니다. InnoDB는 데이터 무결성이 뛰어나 데이터가 손상되지 않도록 보장합니다 (특히 MyISAM은 트랜잭션을 지원하지 않습니다). 이 경우, MyISAM의 테이블 잠금은 높은 읽기 낮은 쓰기 시나리오를 위해 의도적으로 느리게 만들 것입니다. – Davy8
그것은 많은 의미가 있습니다. 당신의 통찰력에 감사드립니다! – user599146