잠시만 기다려 주세요

     '참사 일주일이 지났다.. 민주당은 눈치만 보며 아무것도 하지 않는다... 세월호 시즌2가 되어간다.. 뉴스가 사라지고 점점 잊혀지고 있다. 민주당의 방조 살인이 또 다시 시작되고 있다.'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (16)  |  여러가지 팁 (1059)  |  추천 및 재미 (156)  |  자료실 (22)  |  
시사, 이슈, 칼럼, 평론, 비평 (613)  |  끄적거림 (136)  |  문예 창작 (716)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    mariadb, mysql

mariadb, mysql - mysql storage engine의 양대산맥 myisam vs innodb
이 름 : 바다아이   |   조회수 : 9255         짧은 주소 : https://www.bada-ie.com/su/?461591820802




MySQL의 Storage Engine에는 위에 보시는 그림처럼 여러가지가 존재합니다.
그 중 제일 많이 사용하는 두 가지가 바로, MyISAM과 InnoDB인데요~
오늘은 이 두 가지를 비교 분석하는 포스팅을 해볼까 합니다.

       

 먼저 MyISAM과 InnoDB가 무엇인지와 각각의 특징을 알아봅시당!

        
 

 

1. MyISAM

 

 

 

 MyISAM은 ISAM(Indexed Sequential Access Method) 의 단점을 보완하기 위해 나온 업그레이드 버젼으로,

 

 이 엔진은 비-트랜젝션-세이프(non-transactional-safe) 테이블을 관리합니다.

 

       

 

MyISAM은 후에 소개하는 InnoDB에 비하여 별다른 기능이 없으므로 데이터 모델 디자인이 단순하다는 것이 장점입니다.

 

따라서 전체적으로 속도가 InnoDB 보다 빠릅니다. 특히 Select 작업 속도가 빠르므로 읽기 작업에 적합합니다!

 

Full-text 인덱싱이 가능하여 검색하고자 하는 내용에 대한 복합검색이 가능하답니다.

 

       

 

But! 그러나 데이터 무결성에 대한 보장이 되지 않습니다. MyISAM을 쓸 때의 무결성은 개발자나 DBA가 해야 합니다 ㅠ_ㅠ
또한 트랜잭션에 대한 지원이 없기 때문에 작업도중 문제가 생겨도 이미 작성된 내용들은 DB로 쏙 들어가버립니다.

 

가장 강조되는 단점으로는 Table-level Lock을 사용하기 때문에 쓰기 작업(INSERT, UPDATE) 속도가 느립니다.

 

변경을 많이 요하는 작업이라면 Table 단위의 Lock을 사용하는 MyISAM의 사용을 권하지 않습니다.

 

이렇게 기능이 없다니… 빠르기라도 해야겠네영!

 

       

 

따라서 MyISAM의 사용이 적합한 곳은 트랜잭션 처리가 불필요하며,

 

위에서 언급한 것 처럼 Select의 속도가 빠르므로 주로 조회작업이 많은 경우에 사용됩니다.

 

     

 

   

 

2. InnoDB

 

       

 

MyISAM과는 달리 InnoDB는 트랜잭션을 지원하므로 트랜잭션-세이프 스토리지 엔진에 해당됩니다.

 

Commit, Rollback, 장애복구, row-level locking, 외래키 등 다양한 기능을 지원합니다!

 

MyISAM의 부족했던 기능에 실망했던 사람들이라면 InnoDB로 갈아탔겠죠?

 

        

 

InnoDB의 장점을 살펴보면, 우선 데이터 무결성에 대한 보장이 됩니다.

 

제약조건, 외래 키의 생성이 가능하며, 동시성 제어가 가능합니다.

 

특히 MyISAM이 Table 단위의 Lock이었다면 InnoDB는 Row-level Lock (행 단위 Lock) 을 사용하기 때문에

 

변경 작업(INSERT, UPDATE, DELETE)에 대한 속도가 빠르다는 것이 큰 장점입니다.

 

       

 

그러나, 이렇게 여러가지 기능을 제공하다보니 InnoDB의 데이터 모델 디자인에는 많은 시간이 필요합니다.

 

또한 시스템 자원을 많이 사용한다는 단점 또한 가지고 있습니다. Full-text 인덱싱이 불가능하다는 것 역시 단점으로 보여집니다.

 

       

 

InnoDB의 경우는 트랜잭션 처리가 필요한 작업을 수행하며, 데이터 입력 및 수정과 같이 변경이 빈번한!

 

높은 퍼포먼스를 요구하는 대용량 사이트 등에서 효율적으로 사용될 수 있습니다.

 

       

 

        
 

 

여기서 질문! 이 두 종류의 DB를 함께 사용할 수 있을까요?

 

물론 함께 사용할 수는 있습니다. 하지만 백업 방법에 차이가 있어,

 

백업이 번거로워지고 Lock에 대한 Level이 다르기 때문에 사용에 문제가 생길 수 있다고 봅니다.

 

(MyISAM은 Table 단위로 Lock이 걸리고, InnoDB는 Row 단위로 Lock이 걸리니까요~)

       



 

위의 내용을 표로 정리해봅시당

  

  

MyISAM

InnoDB

출시일자

더 먼저 출시됨 

이후에 출시 됨 

구조의 복잡성

지원하는 기능이 별로 없어서

구조가 단순하다.

  

외래키, 제약조건, 동시성 제어 등

다양한 기능 지원으로 구조가 복잡. 

기능 지원

Full-text 인덱싱 가능 

외래 키, 제약 조건, 동시성 제어,

트랜잭션 등에 대한 지원!

  

Lock의 단위

Table Level-Lock 

Row Level-Lock 

복구 능력

나쁨 

좋음 

        
출처 : http://ojava.tistory.com/25
 

| |





      1 page / 2 page
번 호 카테고리 제 목 이름 조회수
33 mariadb, mysql Mysql, mariadb The table '' is full 바다아이 1725
32 mariadb, mysql Mariadb MySQL , mysql mariadb ... , mariadb mysql ... , mariadb , mysql ... 바다아이 1915
31 mariadb, mysql MariaDB , ... 바다아이 2132
30 mariadb, mysql MYSQL Locked , , 바다아이 6289
29 mariadb, mysql MySQL - LOCK , MyISAM , , 바다아이 4989
28 mariadb, mysql mysql Index , 바다아이 7485
27 mariadb, mysql MySQL DB , 바다아이 12409
26 mariadb, mysql mysql, mariadb , , , , left, substring, right, concat 바다아이 10708
25 mariadb, mysql mysql, mariadb DISTINCT GROUP BY 바다아이 10870
24 mariadb, mysql mysql 5.x my.cnf 바다아이 9358
23 mariadb, mysql mysql lock , 바다아이 10182
22 mariadb, mysql , MySQL, mariadb , 바다아이 10330
21 mariadb, mysql mysql , , , unixtime 바다아이 13397
20 mariadb, mysql Mysql , Join (Left, Right, Outer, Inner Join) 바다아이 8965
19 mariadb, mysql mariadb, MySQL 17 바다아이 11287
18 mariadb, mysql mysql, mariadb 바다아이 9323
17 mariadb, mysql mysql .. time 바다아이 8878
16 mariadb, mysql Mysql(MariaDB) ? 바다아이 9857
15 mariadb, mysql [MySQL] ,insert 바다아이 10087
14 mariadb, mysql [MySQL] - SQL 바다아이 9622
13 mariadb, mysql MySQL JOIN UPDATE 바다아이 9250
12 mariadb, mysql mysql update 바다아이 9842
현재글 mariadb, mysql mysql storage engine myisam vs innodb 바다아이 9256
10 mariadb, mysql Mysql Replication Master DB Slave DB 바다아이 9910
9 mariadb, mysql Mysql 바다아이 9041
8 mariadb, mysql MySQL Partition , 바다아이 11594
7 mariadb, mysql MySQL Session() ( ) 바다아이 9678
6 mariadb, mysql mysql ... 바다아이 9097
5 mariadb, mysql UNION (Mysql table ) 바다아이 9271
4 mariadb, mysql mysql 바다아이 8955
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.13169
to webmaster... gogo sea. gogo sea.