Technique/RDBMS
-
MEMORY 스토리지 엔진 아키텍처Technique/RDBMS 2016. 5. 19. 22:10
MEMORY 스토리지 엔진은 HEAP 스토리지 엔진이라고도 하는데, 이름 그대로 데이터를 메모리에 저장하는 것이 특징이다. MEMORY 스토리지 엔진은 데이터의 크기가 작고 아주 빠른 처리가 필요한 경우에만 적합한 스토리지 엔진이다. 주의 사항 - 테이블의 최대 크기저장할 수 있는 데이터의 최대 용량이 정해져 있다. 최대 데이터 크기는 max_heap_table_size 파라미터로 정의한다.여기 지정한 메모리의 용량이상의 데이터는 가질 수 없으며, 그 이상의 데이터를 INSERT 하려고 하면 데이터 저장이 실패하고 에러 메시지가 출력된다. 이 변수는 글로벌 변수임과 동시에 세션 변수이고, 동적으로 변경 가능한 변수라, 해당 커넥션에서만 파라미터를 재 설정할 수 있다. - 고정 길이 컬럼만 지원모든 컬럼은..
-
MyISAM 스토리지 엔진 아키텍처Technique/RDBMS 2016. 5. 19. 21:49
InnoDB의 버퍼 풀과 비슷한 역할을 하는 것이 MyISAM의 키 캐시 ( Key Cache, 키 버퍼 라고도 한다 )이다.이름 그대로 MyISAM키 캐시는 인덱스만 대상으로 작동하며 또한 인덱스의 디스크 쓰기 작업에 대해서만 부분적으로 버퍼링 역할을 한다. 키 캐시의 효율성을 나타내는 수식은 아래와 같다. 키 캐시 히트율 ( Hit rate ) = 100 - ( Key_reads / Key_read_requests * 100 ) - Key_reads : 인덱스를 디스크에서 읽어들인 횟수를 저장하는 상태 변수- Key_read_requests : 키 캐시로부터 인덱스를 읽은 횟수를 저장하는 상태 변수. 매뉴얼에서는 일반적으로 키 캐시를 이용한 쿼리의 비율 ( 히트율 ) 을 99% 이상으로 유지하라고 권..
-
복제 ( Replication )Technique/RDBMS 2016. 5. 17. 22:14
복제는 2대 이상의 MySQL 서버가 동일한 데이터를 담도록 실시간으로 동기화 하는 기술이다. 일반적으로 MySQL의 복제에는 INSERT나 UPDATE와 같은 쿼리를 이용해 데이터를 변경할 수 있는 MySQL 서버와 SELECT 쿼리로 데이터를 읽기만 할 수 있는 MySQL 서버로 나뉜다.MySQL 에서는 쓰기와 읽기의 역할로 구분해, 전자를 마스터( Master ) 라고하고 후자를 슬레이브 ( Slave ) 라고 하는데, 일반적으로 MySQL 서버의 복제에서는 마스터는 반드시 1개이며 슬레이브는 1개 잇아으로 구성할 수 있다. 하나의 MySQL이 일반적으로는 마스터 또는 슬레이브 가운데 하나의 역할만을 수행하지만, 때로는 MySQL 서버 하나가 마스터이면서 슬레이브 역할까지 수행하도록 설정하는 것도 ..
-
플러그인 스토리지 엔진 모델Technique/RDBMS 2016. 5. 16. 22:21
MySQL의 독특한 구조중 대표적인 것이 바로 플러그인 모델이다. 플로그인해서 사용할 수 있는 것이 스토리지 엔진만 가능한 것은 아니다. MySQL 5.1 버전부터는 전문 검색 엔진을 위한 검색어 파서도 플러그인 형태로 개발해서 사용할 수 있다.이미 기본적으로 많은 스토리지 엔진을 가지고 있지만, 이 사셍의 수많은 사용자의 요구조건을 만족시키기 위해 기본적으로 제공되는 스토리지 엔진 이외에 부가적인 기능을 더 제공하는 스토리지엔진이 필요할 수 있으며, 이러한 요건을 기초로 다른 전문 개발 회사 또는 직접 스토리지 엔진을 제작하는 것도 가능하다. 대부분의 MySQL 작업은 엔진에서 처리가되며, 마지막인 "읽기/쓰기" 만이 스토리지 엔진에 의해 처리된다. ( 즉 새로운 스토리지 엔진을 만든다 하더라도 전체 ..
-
메모리 할당 및 사용 구조Technique/RDBMS 2016. 5. 16. 22:11
글로벌 메모리 영역의 모든 메모리 공간은 MySQL 서버가 시작되면서 무조건 운영체제로부터 할당 된다.운영체제의 종류에 따라 다르겠지만 요청된 메모리 공간을 100% 할당해줄 수도 있고, 그 공간 만큼 예약해두고 필요할 때 조금씩 할당해주는 경우도 있다. 글로벌 메모리 영역과 로컬 메모리 영역의 차이는 MySQL 서버 내에 존재하는 많은 스레드가 공유해서 사용하는 공간인지 아닌지에 따라 구분된다. 글로벌 메모리 영역일반적으로 클라이언트 스레드의 수와 문관하게 일반적으로는 하나의 메모리 공간만 할당된다. 단 필요에 따라 2개 이상의 메모리 공간을 할당받을 수도 있지만 클라이언트의 스레드 수와 무관하며, 생성된 글로벌 영역이 N개라 하더라도 모든 스레드에 의해 공유된다. 로컬 메모리 영역세션 메모리 영역이라..
-
MySQL 스레딩 구조Technique/RDBMS 2016. 5. 16. 21:57
MySQL 서버는 프로세스 기반이 아니라 스레드 기반으로 작동하며 포그라운드 ( Foreground ) 스레드와 백그라운드( Background ) 스레드로 구분할 수 있다. 포그라운드 스레드 ( 클라이언트 스레드 ) 최소한 MySQL 서버에 접속된 클라이언트의 수만큼 존재하며, 주로 각 클라이언트 사용자가 요청하는 쿼리 문장을 처리하는 것이 임무다. 클라이언트 사용자가 작업을 마치고 커넥션을 종료하면,ㅡ 해당 커넥션을 담당하던 스레드는 다시 스래드 캐시 ( Thread pool ) 로 되돌아 간다.이미 스레드 캐시에 일정 개수 잇아의 대기중인 스레드가 있으면 스레드 캐시에 넣지 않고 스레드를 종료시켜 일정 개수의 스레드만 스레드 캐시에 존재하게 한다. 포그라운드 스레드는 데이터를 MySQL의 데이터 버..
-
MySQL 아키텍처Technique/RDBMS 2016. 5. 16. 21:43
MySQL은 일반 사용 RDBMS에서 제공하는 대부분의 접근법을 모두 지원한다.MySQL고유의 C API부터 시작해 JDBC나 ODBC 그리고 .NET의 표준 드라이버를 제공하며, 이러한 드라이버를 이용해 C/C++, PHP, JAVA, Perl, Python, Ruby, .NET, COBOL등 모든 언어를 이용해 MySQL 서버에서 쿼리를 사용할 수 있게 지원한다. MySQL 엔진클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 그리고 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 그리고 성능 향상을 위해 MyISAM의 키 캐시나 InnoDB의 버퍼풀과 같은 보조 저장소 기능이 포함돼 있다.MySQL은 표준 SQL( ANSI SQL-92) 문법을 지원..
-
MySQL InnoDB storageTechnique/RDBMS 2016. 4. 10. 21:50
InnoDB 스토리지 엔진MySQL에서 사용할 수 있는 스토리지 엔진 중에서 거의 유일하게 레코드 기반의 잠금을 제공하고 있으며, 때문에 높은 동시성 처리가 가능하고 또한 안정적이며 성능이 뛰어나다. InnoDB스토리지 엔진의 특징 프라이머리 키에 의한 클러스터링InnoDB의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링되어 저장된다. 즉, 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이며, 이로 인해 프라이머리 키에 의한 레인지 스캔은 상당히 빨리 처리될 수 있다. 결과적으로 쿼리의 실행 계획에서 프라이머리 키는 기본적으로 다른 보조 인덱스에 비해 비중이 높게 설정( 쿼리의 실행 계획에서 다른 보조 인덱스보다 프라이머리 키가 선택될 학률이 높음 )된다. 오라클 DBMS의 IOT( I..