본문 바로가기

DB/MySQL52

SQL 명령문의 최적화 17장에서 인덱스를 사용하여 특별한 명령문의 실행시간을 향상시킬 수 있다는 것을 보여주었다. 최적화기가 모든 명령문에 대하여 최적 처리 기법을 전개하는지에 대한 의문은 남아있다. 그 대답은 "NO" 어떤 명령문은 최적화기가 가장 빠른 처리 기법을 전개 할 수 없는 형식으로 작성된다. 이러한 상황은 WHERE 절이 아주 복잡하거나 최적화기가 잘못된 상태로 들어갈 때 주로 발생한다. 게다가 인덱스를 사용할 수 있을지라도 최적화기는 이러한 명령문에 대하여 순차적인 처리 기법을 선택한다. 더 빠르게 실행할 수 있도록 명령문을 구성하는 방법을 소개하고자 한다. 모든 최적화기는 동일하지 않다. 최적화기의 특성은 다양한 제품에 따라 커다란 차이점이 있다. 어떤 최적화기는 다른 최적화기에 비하여 많은 명령문에 대하여 .. 2012. 3. 21.
락(LOCK) 데이터베이스를 백업하거나 테이블의 스키마 구조를 변경하거나 기타 중요한 작업을 진행할 때 다른 사람이 해당 테이블에 작업을 하지 못하도록 막기 위해 locking을 한다. 모든 락은 deadlock-free 이다. - 언제나 질의를 시작할 때 한번에 모든 필요한 락을 요청하고 언제나 같은 순서대로 테이블에 락을 걸어 관리한다. LOCK 종류에는 READ,WRITE LOCK가 있다. - READ LOCK을 사용하면 다른 사용자가 해당 테이블을 읽기만 가능하고 쓰기를 할 때에는 LOCK이 걸린다. 실질적으로 SELECT문은 실행할 수 있찌만, INSERT,UPDATE,DELETE를 실행 할 수 없다. - WRITE을 사용하면 다른 사용자가 해당 테이블에 대해 읽기와 쓰기를 할 때 모두 LOCK이 걸린다. 즉.. 2012. 3. 21.
innodb 설정 innodb 설정 이 글에서는 간단한 설명과 설정 위주로 하고, 넘어 가겠습니다. mysql에서 스토리지 엔진(Storage Engine)으로 사용하는 방식은 기본으로 MyISAM입니다. MyISAM은 일반적인 입출력 상황에 최적화된 기본 엔진 입니다. 하지만 웹서비스와 같이 로딩이 많은 서비스에서 더 좋은 성능을 위한 다른 스토리지 엔진이 innodb입니다. 간단하게 innodb는 데이터를 처리하는 엔진으로 로딩이 많은 데이터처리 엔진이라고 생각하면 됩니다. 스토리지 엔진에 대해 자세히 알고 싶으시면 "MySQL Storage Engine"를 참고하세요. 그럼 설정 방법을 알아 보겠습니다.// 설정파일 편집 # vi /etc/my.cnf // ftp 서버 시작 (컴파일 설치) innodb_data_ho.. 2012. 3. 21.
트랜잭션(Transaction) 은행 현금인출기(ATM)에서 돈을 인출하는 과정을 생각해 봅시다. 현금인출을 하겠다고 기계에게 알려준뒤 현금카드를 넣어서 본인임을 인증받고, 인출할 금액을 선택하면 ATM 기는 돈을 내어줍니다. 이러한 거래에 있어서 지켜져야 할 중요한 것이 있습니다. 기계의 오동작 등으로 인하여 전산상으로는 돈을 인출한 것으로 입력이 되었는데 돈은 안나온다거나, 돈은 나왔는데 일련의 에러나 문제로 인하여서 돈을 인출한 것이 전산상으로 입력이 안되면 상당히 심각한 문제가 발생하겠죠. 때문에 전산상으로도 입력이 정상적으로 잘 되고, 돈도 인출이 정상적으로 잘 됨을 확인하고 나서야, 인출하는 하나의 과정이 정상적으로 처리되었음을 확인할 수 있습니다. 여기서 돈을 인출하는 일련의 과정이 하나의 묶음으로 처리되어야 함을 이해하실.. 2012. 3. 21.