[Mysql] MYISAM table lock issue

MYISAM lock 이슈에 대해 사전 조사 중 읽어 볼만한 블로그 포스트가 있어 소개한다.

http://devoluk.com/mysql-myisam-table-lock-issue.html

위 내용은 다 읽을 필요 없고 이 문장 뒤로 읽어보면 된다.

It turned out we were having a classic table locking issue

And due to table level locking no write (INSERT) statement was allowed to run until the read (SELECT) query is finished.

non indexed select query 에서 지연이 발생하는데 insert는 우선순위가 select에 비해 낮아 insert query가 수행이 끝나기를 기다리느라 발생한 이슈라고 한다.(MYISAM)

2007년이라 좀 그렇긴 하지만 위에 언급한 내용과 동일하다.

http://nileshbansal.blogspot.kr/2007/07/mysql-lock-contention.html

After investigating a bit in why a SELECT was blocking other SELECT operations, I found an explanation in MySQL docs.

결국 원인은 slow query이며 Query 튜닝은 반드시 하여 slow Query가 발생하지 않도록 미연에 방지 하는 것이 중요하겠다.

Advertisements

[mysql] 테이블 상태 보기

까먹지 말자!

개발하기 전에 반드시 먼저 확인해 보아야 하는 것이 Transaction 지원 여부다.

Mysql에서는 엔진마다 트렌젝션 정책이 다르기 때문에 개발 전에 확인이 필요하다.

use ‘databasename’;
SHOW TABLE STATUS WHERE `Name` = ‘tablename’;

engine : MyISAM, InnoDB..등등..