C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[54237] Re: MYSQL 데이터베이스 사용시 속도 향상법
아제나 [azena] 3596 읽음    2008-08-06 12:05
하안인 님이 쓰신 글 :
: mysql 을 사용해서 한 1년 정도 되었는데요.
:
:
: 데이타가 30만개 정도 들어 가니 속도가 많이 떨어집니다.
:
: 데이타를 최적화하려면 어떻게 해야 하는지요.


일단 테이블 구조를 알아야 정확한 답변이 가능하고요.

30만이면 느려지기 시작하는 지점은 맞습니다.

SELECT에 WHERE 조건에 들어가는 필드에 인덱스가 없다면 걸어주시고요.

인덱스가 많아지면 delete, insert, update 작업에 시간이 많이 걸리기 때문에

WHERE 조건을 최적화 시켜서 인덱스 필드를 줄여줘야 하겠지요.

그리고 50만 레코드가 넘어가면 select count() 만 하더라도 오래 걸리게 되고요.

count()가 풀스캔을 하기 때문인데,

데이터베이스 성능에 가장 쥐약이 풀스캔인데

풀스캔을 줄이는 테크닉이 몇가지 있습니다.

일단, select 상황에서 order by 명령은 절대 쓰면 안 됩니다.

count()도 전체 레코드를 관리하는 필드를 따로 둬서 delete, insert 할 때마다

해당 필드를 ++, -- 해줘서 관리하거나 delete, insert가 실행될 때만

count() 해서 결과값을 보관해면 됩니다.

limit 등도 적절히 활용하시고요.

만약 결과값이 1개만 있을 경우에도 limit 1 을 넣어주세요. 속도 차이가 있습니다.

그리고 mysql의 큰 특징이 mysam과 innodb를 동시에 쓸 수 있다는 점인데

대용량 관리에는 mysam이 확실히 빠릅니다만... 트랜젝션이나 서브 쿼리 불가 등의

특징이 있으니... 이건 알아보시고 적절히 조절해서 쓰시고요.

mysql 설정 파일에 보면 각종 메모리 사용량과 디스크 사용량을 조절할 수 있습니다.

phpmyadmin 이란 툴로 보면 데이터베이스의 부하량이 나오는데 이 값을 가지고

my.ini (윈도우 버젼일 경우) 파일을 적절히 고쳐주시기 바랍니다.

+ -

관련 글 리스트
54225 [질문]mysql사용 속도가 떨어지는 경우 최적화 방법 하안인 1194 2008/08/05
54237     Re: MYSQL 데이터베이스 사용시 속도 향상법 아제나 3596 2008/08/06
54226     Re:[질문]mysql사용 속도가 떨어지는 경우 최적화 방법 장성호 1673 2008/08/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.