MySQL's Storage Engies - MyISAM Engine

2019. 10. 22. 16:58·Database/MySQL
반응형
MyISAM
 
** 개요
  1. 5.1 버전 이하 default storage engine 이다.
  2. full-text 인덱싱, 압축, spatial functions 등 다양한 기능들을 제공 한다.
  3. Transaction 이나 row-level lock 은 제공 안 한다.
  4. 가장 큰 취약점은 충돌에서 안전하지 않다는 점이다.
    (The fact it isn't even remotely crash-safe)
 
 
** 왜 충돌에서 안전하지도 않고 non-transaction 인 MyISAM을 계속해서 사용 하는 것일까??
(저자 : 모든 부분에서 나쁘지는 않다. Non-trasaction, non-crash-safe를 한다면... )
  • 만약 read-only 혹은 데이터가 크지 않거나, 복구에 마음이 아프지 않을려면 묻지 말고 이거 사용해라.
    (저자 : 하지만 제발 InnoDB 사용해라. (But Please, Don't use it. Use InnoDB instead) zzz )
 

 
** Storage
 
  1. 각 table 마다 data file 과 index file 두개의 파일을 저장한다.(.MYD, .MYI 확장자)
  2. table 은 dynamic or static rows를 포함할 수 있다.
    (첨에 MySQL 개발자들이 table 정의에 기초로한 포맷을 사용하기로 해서 그렇다능)
  3. 5.0 버전부터 6-byte 포인터를 사용해 256 TB 까지 사용할 수 있으며, 8-byte까지 키울 수 있다.
    (전 버전은 4-byte 포인터로 4 GB 까지 사용)
    포인터 사이즈 변경을 위해서, MAX_ROWS 와 AVG_ROW_LENGTH 를 위해 Alter table 을 해야 한다.
    (인덱스는 다시 쓰여질 것이며, 시간이 오래 걸릴 수 있다.)
 

 
** Featrues
 
Locking and Concurrency(잠금과 동시병행)
  • row 가 아니라 table 전체를 Lock 건다.
  • Reader는 읽을 table 전체를 read lock 얻으며, 
    Writer는                 write lock 얻는다.
  • 하지만, 너는 Select Query가 진행중이라 해도 Insert 가 가능하다.
 
 
Repair(복구)
  • Table 복구에 대한 수동 메뉴얼과 자동 기능을 제공한다.
    (Transaction 과 Crash recovery 와 혼돈하지 마라)
  • 오래 걸리는 Table 복구 후, 일부 데이터가 없어진 것을 발견할 것이다.ㅋㅋㅋㅋ
    그렇다면? CHECK TABLE [table] + REPAIR TABLE [table] 명령어로 에러 확인 및 복구 해라
 
 
Index features(인덱스 특징)
  • Table에서 첫 BLOB and TEXT 컬럼의 500 캐릭터 인덱싱할 수 있다. ?? 먼소리야?
  • 복잡한 검색과 독립적인 단어들에 대해 full-text 인덱싱을 제공한다.
 
 
Compressed tables
  • 어떤 테이블은 생긴 이후로 영원히 변경이 없다면? 이거슨 MyISAM 이다.
  • myisampack 유틸리티로 압축할 수 있지만 후에 수정이 불가하다.(압축 풀고 수정 하고 압축하고 뭔 짓)
    압축 한다면, Disk 에서 적은 용량과 빠른 성능을 제공 한다.
    (최근의 하드웨어와 프로그램을 덕분에 한 row에 대해서 수정하는 것이 과부하가 오지는 않을 것)
 

 
** Performance
 
  • Compact 한 데이터 저장과 간단한 디자인을 통한 적은 과부하 덕분에 특정 방식에서는 꽤 좋은 성능을 보여 줄 수 있다.
  • It does have some severe scalability limitations, including mutexes on key caches.
    (MariaDB offers a segmented key cache that avoids this problem)
    (먼소리야?)
  • 성능에서 공통적인 문제점은 table lock.
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728x90
반응형
'Database/MySQL' 카테고리의 다른 글
  • Isolation level (트랜잭션 고립(격리) 수준)
  • MySQL's Storage Engines - InnoDB Engine
  • 프로시저 언제 사용해야 하나?
  • 트랜잭션 너는 누구니?
상쾌한기분
상쾌한기분
  • 상쾌한기분
    상쾌한기분
    상쾌한기분
  • 전체
    오늘
    어제
    • 분류 전체보기 (251)
      • Python (44)
        • Python (26)
        • Django (6)
        • Flask (4)
        • Open Source (6)
      • Kotlin & Java (5)
        • Spring (2)
        • 프로젝트 (1)
      • Go (11)
      • Database (24)
        • MySQL (21)
        • Redis (3)
      • Infrastructure (2)
        • CDC (4)
        • Kafka (5)
        • Prometheus (2)
        • Fluentd (11)
        • Docker (1)
        • Airflow (2)
        • VPN (2)
      • IT (26)
        • AI (9)
        • Langchain (8)
        • Web (18)
        • Git (8)
        • 리팩토링 (9)
        • Micro Service Architecture (8)
        • Clean Code (16)
        • Design Pattern (0)
        • 수학 (1)
        • 알고리즘 (14)
      • OS (14)
        • Centos (10)
        • Ubuntu (3)
        • Mac (1)
      • Search Engine (2)
        • ElasticSearch (1)
        • Lucene Solr (1)
      • PHP (2)
        • Laravel (1)
        • Codeigniter (1)
  • 블로그 메뉴

    • Github 방문
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Redis
    백준
    파이썬
    Kafka
    performance
    오블완
    ollama
    python
    MYSQL
    Langchain
    LLM
    go
    티스토리챌린지
    CDC
    Golang
    docker
    http
    prompt
    fluentd
    git
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상쾌한기분
MySQL's Storage Engies - MyISAM Engine
상단으로

티스토리툴바