삽입물이 잠기나요? 잠겨 있다면 무슨 의미가 있나요?
innodb 업데이트 및 삭제는 독점 잠금,
업데이트 테이블 세트를 암시적으로 추가합니다. 여기서 ID는 (1,2,3,4)에 독점 잠금이 직접 추가됩니까, 아니면 잠금입니까? ID에 따라 수정하고 커밋합니다.
삭제 및 업데이트하면 암시적으로 쓰기 잠금이 추가되나요?
Select가 암시적으로 읽기 잠금을 추가합니까?
두 가지 상황에 추가하면 둘 다 테이블 잠금 수준이므로 동시성이 특히 나쁠 것 같죠?
두 엔진 중 선택
MyISAM: SELECT를 많이 실행한다면 MyISAM이 더 나은 선택인 이유는 무엇인가요? 실제로 360만 개의 데이터를 테스트했는데 모두 Innodb를 사용하는 것이 훨씬 효율적입니다.
InnoDB: 데이터가 INSERT 또는 UPDATE를 많이 수행하는 경우 InnoDB 테이블을 사용해야 합니다. myisam 테이블 잠금 때문인가요?
초대해주셔서 감사합니다.
InnoDB
한 번에 여러 행의InnoDB는
INSERT
에 대해서만 테이블 헤더를 잠글 수 있지만 전체 테이블을 잠그지는 않습니다.INSERT
可能只锁表头吧,总之不会锁全表的;UPDATE
(如果没有FOR UPDATE
或LOCK IN SHARE MODE
)和DELETE
在执行时会加写锁,有时就是锁全表,所以会影响并发性能,但这只是一瞬间的事,所以并发不高的情况下往往看不出来;一次
UPDATE
UPDATE
(FOR UPDATE가 없는 경우)
또는LOCK IN SHARE MODE
) 및DELETE
는 실행 중에 쓰기 잠금을 추가하고 때로는 전체 테이블을 잠그므로 동시성 성능에 영향을 주지만 이는 단지 일시적인 문제이므로 동시성이 높지 않으면 표시되지 않는 경우가 많습니다.UPDATE
를 함께 잠그고 제출 후에 함께 해제해야 합니다. 왜냐하면 MySQL은 이 항목의 원자성을 보장해야 하기 때문입니다. 하나의 기본 키가 충돌하면 다른 키를 제출할 수 없습니다.MySQL
UPDATE
和DELETE
都会加写锁,而且锁全表;SELECT
会加读锁,所以多个SELECT
可以并发,但不能和UPDATE
、DELETE
并发;INSERT
的加锁有点特殊,锁的强度可能介于读锁和写锁之间,与SELECT
、INSERT
UPDATE
및DELETE
는 쓰기 잠금을 추가하고 전체 테이블을 잠급니다.SELECT
는 읽기 잠금을 추가하므로 SELECT는 동시일 수 있지만UPDATE
및DELETE
와 동시일 수는 없습니다.
clustered index🎜 이유를 검색하실 수 있습니다. 🎜INSERT
의 잠금은 약간 특별합니다. 및 잠금 강도 읽기 잠금과 쓰기 잠금 사이에 있을 수 있으며SELECT
및INSERT
와 동시에 발생할 수 있습니다.SELECT
而言性能不会比InnoDB好很多,这还取决于行的存储方式,比如MyISAM的FIXED
可能会比DYNAMIC
마지막으로 MyISAM이 더 빠릅니다. 또한 귀하의 예는 확실히 InnoDB에 더 도움이 될 것입니다. 기본 키가 아닌 인덱스로 변경되면 InnoDB가 그렇게 빠르지 않을 수 있습니다. id 열만 선택되면 MyISAM은 그다지 느리지 않을 수 있습니다.