database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29463 게시물 읽기
No. 29463
mysql - lock 과 order by에 관하여
작성자
초보자(kth2893)
작성일
2009-12-10 10:51
조회수
6,850


안녕하세요.. 이문제로 며칠동안 헤매고 있습니다..ㅜㅜ

mysql을 사용하여 MyISAM 디비를 생성하였습니다.

웹사이트를 구축하여 운영하는 도중 슬로우 쿼리로 인하여 성능이 저하되더군요.

슬로우 쿼리로 인하여 테이블 lcok이 발생하여 다른 쓰레드에서 해당 테이블로 접근 할수 없다는걸 알게 되었는데요..

여기서 궁금한건..

1.A 테이블에 select를 한 상태에서 다른 쓰레드에서 A 테이블에 select를 하였을시에 lock이 발생하나요?

2.만약 lock이 발생한다면 결국 A 테이블에 select는 하나의 쓰레드만 가능하며 나머지는 대기상태로 있게 되는걸 의미하는지요?

3.또..A 테이블과 같은 뷰를 생성하여 동시에 뷰로 select를 하고 A 테이블에는 insert 혹은 update 시에 lock이 발생할까요?

4.슬로우 쿼리로 인하여 lock이 발생하게 되어 성능이 저하되는데 이걸 해결할수 있는 방법은 어떤것이 있을까요?

5.oreder by를 쿼리에 포함시키면 속도가 느려지는것을 테스트를 통해 확인하였는데요..만약 order by를 쓰지 않는다면 정렬 기능은 어떻게 구현할수 있을까요?

고수님들이 답변 부탁드립니다..ㅎ

이 글에 대한 댓글이 총 1건 있습니다.

일반적인 해결책이 있습니다.


일단, 마스터-슬레이브의 리플리케이션 환경을 구축하시고, 일반적인 쿼리나 INSERT들은 마스터 DB에, 어쩔 수 없이 오래 걸리는 쿼리들은 슬레이브 DB에 물리면 됩니다.


MyISAM은  Row-level lock이 지원되지 않는 엔진입니다. 따라서, 뷰를 만들던 뭘 하던, 하나의 작업에 의해 나머지 작업이 몽창 대기 상태로 빠지게 될 수 있습니다.


하지만, 모든 쿼리가 슬로우 쿼리라면 리플리케이션으로는 해결이 안되고, 테이블 재설계나 인덱스 설정을 통해 쿼리 자체를 빠르게 만들어야 하는 것이 옳습니다.


ORDER BY를 포함시키지 않으려면,  MSSQL과 같은 클러스터드 인덱스를 사용하지 않는 이상, 매번 테이블을 특정 기준에 의해 새로 정렬하는 방법밖에는 없습니다. (ALTER TABLE [테이블] ORDER BY .. ) 다만, 정렬하고자 하는 컬럼에 대해 인덱스를 적절히 생성하여 정렬 속도를 향상시킬 수는 있습니다.

박현우(lqez)님이 2009-12-11 09:50에 작성한 댓글입니다.
이 댓글은 2009-12-11 10:06에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
29466처음 DB 를 하는 초보자입니다. [1]
Danica
2009-12-11
7010
29465DB를 UTF-8로 설치 후 show variables 로 확인하면 latin 이? [1]
조현철
2009-12-11
7158
29464윈도우에 mysql 2개 설치하는 방법 or 하나의 mysql에 두개의 character-set 사용 방법 [3]
조현철
2009-12-11
12385
29463mysql - lock 과 order by에 관하여 [1]
초보자
2009-12-10
6850
29462ROW간 값의 차이를 구하고 싶습니다. [1]
이창화
2009-12-10
12043
29461Latin1으로 DB를 설치했는데, 한글 사용 문제 없나요? [1]
조현철
2009-12-10
6947
29460utf-8 로 설치한 DB에 기존 데이터(euc-kr)를 가져오면 문제가 되나요?
조현철
2009-12-09
6315
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다