반응형

Storage Engine 종류

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

MyISAM

  • 장점
    • 일반적으로 SELECT 쿼리시 빠름
    • 풀 텍스트 인덱스 지원
    • 조회만 빈번하게 일어날 경우 유리함
  • 단점
    • ROW LEVEL LOCK을 지원하지 않고, TABLE LEVEL LOCK을 사용하기 때문에 ROW가 늘어날 수록 성능 저하 발생
    • 트랜잭션 처리나 복구 처리가 어려움

InnoDB

  • 장점
    • ROW LEVEL LOCK을 지원하여 ROW가 늘어나도 성능 저하 없음
    • 트랜잭션 처리가 필요한 대용량 데이터 관리에 유리함
    • CRUD 모두 빈번하게 일어날 경우 유리함
  • 단점
    • 풀 텍스트 인덱스를 지원하지 않음
    • 많은 기능을 지원하기 때문에 설계가 비교적 복잡
    • 리소스 사용량도 비교적 높음

특정 테이블 engine 확인하기

mysql> SELECT table_schema, table_name, engine
    -> FROM information_schema.tables
    -> WHERE table_name = 'user';
+--------------+------------+--------+
| table_schema | table_name | engine |
+--------------+------------+--------+
| mysql        | user       | MyISAM |
| test         | user       | InnoDB |
+--------------+------------+--------+

테이블 engine 변경하기

mysql> use test;
mysql> ALTER TABLE user ENGINE = MyISAM;
mysql> SELECT table_schema, table_name, engine
    -> FROM information_schema.tables
    -> WHERE table_name = 'user';
+--------------+------------+--------+
| table_schema | table_name | engine |
+--------------+------------+--------+
| mysql        | user       | MyISAM |
| test         | user       | MyISAM |
+--------------+------------+--------+

참고

반응형

'Development > MySQL' 카테고리의 다른 글

[MySQL] Lock  (0) 2021.02.26
[MySQL] JOIN  (0) 2021.02.25
[MySQL] Transaction Isolation Level  (0) 2020.12.29
[MySQL] 쿼리  (0) 2020.12.29
[MySQL] 설치하기  (0) 2019.09.29

+ Recent posts