테이블 레벨 잠금의 이점


7

MyISAM 스토리지 엔진에서 사용되는 테이블 레벨 잠금의 이점은 무엇입니까?행 수준 잠금에는 동시 업데이트와 같은 많은 이점이 있으며 테이블을 잠그지 않습니다.

편집하다널리 테이블 수준 잠금 교착 상태에서 방지하는 것으로 간주됩니다.하지만 동시성 비용으로 교착 상태를 방지하는 것이 어떤 가치가 있습니까?

  0

[이 토론] (http://dba.stackexchange.com/questions/1/what-are-the-main-differences-between-innodb-and-myisam)에는 관련 정보가있을 수 있습니다. 14 sep. 112011-09-14 20:57:50

  0

이 논의는 MyISAM과 InnoDB의 특성에 관한 것입니다. 테이블 레벨 잠금의 이점에 대해서는 아무 것도 없습니다. 14 sep. 112011-09-14 21:05:21

5

MyISAM은 데드락을 가지지 않지만 데드 록킹은 테이블 레벨 잠금보다 개선 된 기능입니다.

잠긴 테이블에서 INSERT/UPDATE/DELETE를 시도 할 때 사용할 수있을 때까지 또는 제한 시간 (기본적으로 28800 초)이 될 때까지 기다려야합니다.로우 레벨 잠금 엔진에서 교착 상태가 발생하면 프리가 아닌 경우 조금 기다리고 서버가 일종의 "무한 루프"(두 개의 연결이 행을 포기하지 않음)를 감지하면 두 연결을 모두 신속하게 거부하고 교착 상태.

교착 상태를 해결하려는 경우 다음 사항을 살펴 보시기 바랍니다.

  • 교착 상태가 트랜잭션의 잘못된 코드에서 발생합니까?계산을 완료하고 업데이트 할 행을 "대기"해야 할 필요가 있습니까?
  • 성명서에 해당 조건에 대한 색인이 있습니까?그렇지 않으면, InnoDB는 실제로 전체 테이블을 업데이트 대기로 표시 할 수 있습니다.
  • 서버의 하드 디스크가 InnoDB 변경 사항을 충분히 빠르게 커밋하지 못했을 수 있습니까?서버상의 체크 포인트 연산이 InnoDB에 문제/정지를 유발합니까?
  • 자동 증분 잠금 때문입니까?그렇다면 http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html 설정하는보다 자유로운 자동 증분 (이 변경으로 인해 발생하는 문제를 해결하기 위해 행 수준의 잠금을 살펴보십시오)

3

MyISAM에서 사용하는 테이블 잠금은 deadlock 문제에서 무료입니다.

  0

교착 상태에 처음 대답 할 때 BTW +1 !!! 14 sep. 112011-09-14 21:17:32


6

mysql은 다음과 같은 방식으로 쿼리를 실행하기 때문에 :

  • 쓰기 요청 (UPDATE 및 DELETE와 같은)은 읽기 요청 (SELECT)보다 우선합니다
  • 서버는 FIFO 방식으로 쓰기를 수행합니다 (수신 된 순서대로).

이점은 무엇입니까?

교착 상태는 MyISAM으로 절대로 발생하지 않습니다.따라서 MySQL 서버는 모든 경합, 명시 적 (LOCK TABLE) 또는 암시 (Any DML)를 관리 할 수 ​​있습니다.

MyISAM 테이블에 삭제되거나 갱신 된 레코드가없는 한, 동시 삽입은 무방 함으로 자유롭게 발생할 수 있습니다.실제로 명시 적 읽기 잠금이있는 테이블에 INSERT가 포함됩니다.

틈이있는 테이블의 경우 OPTIMIZE TABLE을 실행하면 이러한 갭이 제거되고 동시 삽입이 다시 허용됩니다.

자세한 내용은 "MySQL 5.0 Certification Study Guide" pages 408-412 Section 29.2 를 참조하십시오.

  0

이 방법은 교착 상태가 발생하지 않을 것이지만 병행 성이없는 것과 같은 단점과 비교할 때 이점이 어디에서 발생하는지 알 수 있습니다.그리고 데이터베이스로드가 높을수록 처리 속도가 느립니다. 14 sep. 112011-09-14 21:10:03

+2

@rickjames myisam의 장점은 업데이트를 관리하는 방법이 아니라는 점입니다.그것은 비 쓰기 집중적 인 상황에서 가장 좋습니다. 14 sep. 112011-09-14 21:13:01

  0

불행히도, 많은 사람들은 WordPress, Drupal 및 MoveableTypes CMS를 사용합니다. 기본값은 항상 MyISAM입니다.누구든지 트래픽이 많은 웹 사이트를 가지고 있다면, MyISAM에서 벗어나야합니다.그렇지 않으면, MyISAM으로 충분할 것이다. 14 sep. 112011-09-14 21:13:45

  0

@D 테스트가 맞지 만, 읽기 집약적 인 시스템이라 할지라도 행 레벨 잠금과 비교하면 얼마나 유익합니까? 14 sep. 112011-09-14 21:14:38

  0

읽기 - intesive 시스템에서도, 단지 하나의 DELETE 또는 UPDATE 문은 MyISAM이 갖는 모든 이익을 신속히 무효화 할 것입니다. 14 sep. 112011-09-14 21:16:59

  0

데드락의 @rickjames 제거는 행 잠금에 대한 테이블 잠금의 이점입니다.MyISAM은 innodb에 비해 다른 이점이 있지만, 이것에 대한 토론은 아닙니다 (innodb는 myisam보다 많은 이점을 가지고 있습니다!). 14 sep. 112011-09-14 21:25:24

  0

이것은 내가 생각하기에는 매우 전형적인 MySQL의 전형적인 것입니다.MyISAM이 테이블 레벨 잠금을 사용하는 이유는 간단히 행 레벨 잠금을 구현할 수 없다는 것입니다 (InnoDB를 제공 한 제 3 자에게 맡겨졌습니다).그러나 그들은 그들이 모든 것을 의미하는 것처럼 그것을 돌리려고합니다.나는 그들이 당신이 외래 키, 트랜잭션, procs 등을 필요로하지 않는다고 말했던 것을 기억한다.** 큰 ** 핀치의 소금으로 문서를 작성하십시오. 15 sep. 112011-09-15 18:28:52


3

두 가지 이점.

에이.교착 상태의 문제를 해결하기 위해 테이블 ​​잠금은 brute-force algorithm 의 예입니다.브 루트 포스는 "작품"의 적절한 가치를 위해 항상 작동합니다.

유닉스의 공동 발명가 인 켄 톰슨 (Ken Thompson)은 "의심 스러울 때 무차별 한 힘을 써라"라는 경구를 말한 것으로 알려졌다.그는 아마도 하하 만이 심각 할 뿐이라고 생각 했었지만 원래의 유닉스 커널은 취성있는 '똑똑한'알고리즘보다 간단하고 강력하며 이식성있는 알고리즘을 선호했기 때문에 그 OS의 성공에 중요한 요소였던 것 같다.소프트웨어 디자인에서 너무 많은 다른 상반 관계와 마찬가지로 무차별 적이며 복잡하고 세밀하게 조정 된 영리한 선택은 엔지니어링에 정교하고 섬세한 심미적 판단을 요구하는 어려운 경우가 많습니다.

비.공학에 정통하고 심미적 인 판단을 얻는 동안 의심 할 여지없이 다른 결정을 내릴 것입니다.위의 "a"의 유효성에는 영향을주지 않습니다.