티스토리 뷰

출처 :짜집기

 

1.MySQL
- Innodb 전용 캐시 8GB 
- MyIsam Key Buffer 128M 
connect: 0.0011 
select sql_no_cache * from (50만건 InnoDB, 평균 row size 334Byte): 1.23 
select sql_no_cache * from (13만건 MyIsam, 평균 row size 866Byte):  0.2 

동일환경 PostgreSQL 

- 거북이 모드 off ,공유 버퍼 8G 
pconnect: 0.03(처음연결), 
0.001(다음연결) 

connect: 0.023 
select * from (13만건 평균 row size 866Byte):  
1.55 

=>MyIsam이 압도적으로 빠릅니다.


————————————————————————————————————————————————————

1. myisam 


장점...
mysql의 대표적인 스토리지 엔진 이며 
장점은  select 시 빠르며 풀텍스트 인덱스를 지원한다.
항상 테이블 명세에 row count를 가지고 있기 때문에 
select count(*) from TABLE 이런식의 명령을 사용할때 엄청 빠르다. 

단점...
뭐 수도 없이 많은데. 가장 큰것은 역시... row level locking 을 지원하지 못한다는것. 
select, insert, modify, delete 시 해당 Table 전체에 Locking 이 걸린다. 
따라서 row의 수가 커지면 커질수록 속도는 엄청나게 느려진다. 

또한 트랜젝션을 지원하지 못하기 때문에 delete update 잘못하면 ... 백업이 없다면 걍 끝..

————————————————————————————————————————————————————

2. innodb

장점...
트랜젝션 지원
row level Locking 지원 (ms-sql 의 경우도 마찮가지로 row level Locking 을 지원하지만 

한 테이블에 locking이 많아질경우 Lock Escalation 즉 테이블 전체에 락이 걸리는 경우가 있는데 mysql innodb에서는 그런 현상이 없다)

단점...
풀텍스트 인덱스를 지원못함
약간 느린속도? (이건 뒤에서 추가 설명)
테이블의 row수의 정보를 가지고 있지 않기 때문에 select count(*) from TABLE 이런식의 명령을 내릴때
innodb_buffer_pool 에 해당 테이블의 인덱스 정보가 모두 들어가 있지 않다면 다시 스토리지 엔진은 하나하나
수를 계산해서 결과를 보여주기 때문에 엄청 느리다.. (단 인덱스 컬럼으로 where 조건을 주어 count 를 하면 myisam 과 동일한 속도)

————————————————————————————————————————————————————


이거도 저거도좋겠지만

우리 회사에 맞는 DB는 어떤것일까?


 

댓글
댓글쓰기 폼