MySQL, MariaDB 96

MySQL/MariaDB 아키텍처 – 쿼리 캐시(Query Cache)

MySQL/MariaDB 아키텍처 – 쿼리 캐시(Query Cache) Version : Mariadb 5.5.4.2-WinX64 MySQL / MariaDB 쿼리 캐시(Query Cache)는 타 DBMS에는 없는 기능을 적절히 설정만 잘한다면 상당한 성능 향상 효과를 얻을 수 있다. 쿼리 캐시는 SQL문장을 캐시하는 것이 아니라 쿼리의 결과를 메모리에 캐시해 두는 기능이다. 쿼리 캐시의 구조는 간단한 키와 값의 쌍으로 관리되는 맵과 같은 데이터 구조로 구현돼 있다. 쿼리 캐시에서 데이터를 내보내기 전에 다음과 같은 과정이 필요하다. 쿼리 캐시는 MySQL의 어떠한 처리보다 앞 단에 위치하며 캐시된 결과를 찾기 위해 쿼리 문장을 분석해서 복잡한 비교 과정을 거치는 것이 아니기 때문에 아주 간단하고 빠르..

MySQL, MariaDB 2015.07.22

MySQL/MariaDB 백업 & 복원 - mysqldump

MySQL/MariaDB 백업 & 복원 - mysqldump Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 백업 및 복원에 대해서 알아본다. 이번 백업은 MySQL 시절부터 널리 알려진 mysqldump를 사용한다. mysqldump는 논리적 백업을 수행한다. 데이터 크기가 비교적 작은 경우 유연하게 사용할 수 있다. 백업파일은 SQL 형식으로 백업 파일을 생성한다. 이렇게 생성된 백업 형식은 MariaDB, MySQL 또는 완전히 다른 DBMS에서 쉽게 가져올 수 있다. mysqldump는 테이블 및 트리거를 덤프한다. 저장 프로시저나 뷰 등은 명시적으로 추가 매개변수를 사용하여 명시적으로 작성해야 한다. [기본 사용 문법] -p 옵션 후 명시적으로 패스워드를 적지..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – 쿼리 실행 구조

MySQL/MariaDB 아키텍처 – 쿼리 실행 구조 Version : Mariadb 5.5.4.2-WinX64 MySQL / MariaDB 쿼리 실행 구조에 대해서 알아본다. 쿼리 실행 구조는 타 DB와 거의 동일하다. [쿼리 실행 순서] 클라이언트는 서버로 SQL 문을 전송 한다. 서버는 쿼리 캐시를 확인하여 캐시에 저장된 데이터가 있다면 저장된 결과를 반환한다. 그렇지 않으면 다음 단계로 통과 시킨다. 서버는 구분 분석 및 전처리기에서 쿼리에 구조적 문제가 없는지 확인하고 옵티마이저는 SQL 쿼리를 최적화 한다. 쿼리 실행 엔진은 스토리지 엔진 API를 호출하여 계획을 실행 한다. 서버는 클라이언트에게 결과를 반환한다. [Parser] 파서는 사용자 요청으로 들어온 쿼리 문장을 토큰(SQL엔진이 인..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조

MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조 Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 메모리 공간은 크게 글로벌 메모리 영역과 로컬 메모리 영역으로 구분할 수 있다. 글로벌 메모리 영역은 MySQL 서버가 시작되면서 무조건 운영체제로부터 할당된다. 글로벌 메모리 영역과 로컬 메모리 영역의 차이는 MySQL서버 내에 존재하는 스레드가 공유해서 사용하는 공간인지 아닌지에 따라 구분된다. MySQL/MariaDB Memory 관련 설정 변수 : http://sqlmvp.kr/220365937569 MySQL 서버의 메모리사용량 = (글로벌 메모리) + (각 클라이언트 스레드 사용 메모리) [글로벌 메모리 영역] 일반적으로 클라이언트 스레드의 수와 ..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – 스레딩 구조

MySQL/MariaDB 아키텍처 – 스레딩 구조 Version : Mariadb 5.5.4.2-WinX64 MySQL./MariaDB 서버는 프로세스 기반이 아닌 스레드 기반으로 작동하며 크게 포그라운드(Foreground) 스레드와 백그라운드(Background)스레드로 구분할 수 있다. [포그라운드 스레드 (클라이언트 스레드)] 포그라운드 스레드는 최소한 MySQL/MariaDB 서버에 접속된 클라이언트의 수만큼 존재한다. 클라이언트 사용자가 작업을 마치고 커넥션을 종료하면 해당 커넥션을 담당하던 스레드는 다시 스레드풀(Thread pool)로 반환된다. 이때 스레드풀에 일정 개수 이상 대기 스레드가 있으면 스레드 풀로 반환하지 않고 스레드를 종료한다. 스레드풀의 크기는 다음 명령으로 확인할 수 있..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – Overview

MySQL/MariaDB 아키텍처 – Overview Version : Mariadb 5.5.4.2-WinX64 MariaDB 아키텍처는 MySQL 아키텍처와 동일하다. (당연히 동일 엔진이기에..) MySQL 아키텍처는 아래 그림과 같다. 기본적으로 커넥션 API를 이루고 있는 응용 프로그램 부분과 커넥션풀, SQL Interface, Parser, Optimize, Caches&Buffers 로 이루어진 MySQL 엔진, 그리고 스토리지 엔진 및 실제 데이터를 저장하는 파일 시스템인 하드웨어 영역으로 구분할 수 있다. MySQL은 일반 상용 RDBMS에서 제공하는 대부분의 접근법을 지원한다. C API 부터 JDBC, ODBC, Perl, .NET 표준 드라이버까지 다양하게 제공한다. ASP.NET에..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 복제구축

MySQL/MariaDB 복제구축 Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 복제구축 방법에 대해서 알아본다. 복제를 구축하기 위해서는 최소 2대의 서버가 준비되어 있어야 한다. [복제 구축 전 준비 사항] MySQL/MariaDB는 설치되어 있는가? 복제에 사용할 포트는 열려 있는가? (기본 포트 3306) Slave에서 사용할 계정은 생성되어 있는가? 바이너리 로그는 활성화 되어 있는가? Master, Slave의 Server-id는 고유한가? 이번 실습에서는 Master 서버의 호스트명이 'KSW_2012_2' 이며 포트는 Master, Slave 모두 기본 포트 3306을 사용하였다. [복제 설정 준비] 복제를 구축하기 전에 복제에 사용할 수 있도록 바이너..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB Connection 관련 설정 변수

MySQL/MariaDB Connection 관련 설정 변수 Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 서버에서 커넥션 관련 설정 변수와 현재 설정되어 있는 값을 확인하고 이 항목이 어떤 의미를 뜻하지는지 알아본다. 설정 가능한 변수 목록은 show variables 명령을 사용하여 확인 할 수 있다. show variables; max_connections : MySQL 서버가 최대한 허용할 수 있는 클라이언트의 연결 수를 제한하는 설정이다. max_connection 값을 수천 수만으로 늘릴수록 MySQL 서버가 응답 불능 상태로 빠질 가능성이 높아지며 이 설정값을 낮출수록 MySQL 서버가 응답할 수 없게 될 확률이 줄어든다. 이 설정은 동적으로 변경할 수 ..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB Memory 관련 설정 변수

MySQL/MariaDB Memory 관련 설정 변수 Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 서버에서는 메모리 관련된 설정이 중요하다. MySQL에서 스토리지 엔진별로 주요 메모리 공간이 공유되지 않기 때문에 사용하는 스토리지 엔진에 맞게 메모리 사용을 제한하는 것이 중요하다. 여기에서는 중요한 변수 몇 가지만 소개한다. 자세한 내용은 공식 매뉴얼을 참고한다. 설정 가능한 변수 목록은 show variables 명령을 사용하여 확인 할 수 있다. show variables; innodb_buffer_pool_size : 디스크에서 데이터를 메모리에 캐싱함과 동시에 데이터의 변경을 버퍼링하는 역할을 수행한다. 일반적으로 전체 메모리의 50% ~ 80%까지 설정하..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 프로세스 강제 종료

MySQL/MariaDB 프로세스 강제 종료 Version : Mariadb 5.5.4.2-WinX64 특정 스레드에서 실행 중인 쿼리나 커넥션을 종료하는 방법에 대해서 알아본다. 현재 실행 중인 쿼리는 SHOW PROCESSESLIST 명령어로 확인 할 수 있다. 실행 중인 쿼리 리스트에서 ID 컬럼의 값은 접속된 커넥션의 요청을 처리하는 고유한 키 값으로 사용된다. MySQL/MariaDB 현재 실행중인 쿼리 보기 : http://sqlmvp.kr/220362742203 show processlist; 프로세스를 강제로 종료하기 위해서는 KILL 명령어를 사용한다. 아래 명령어는 Query ID가 3인 스레드의 쿼리만 강제로 종료하는 명령이다. kill query 3 아래 명령어는 Query ID 가..

MySQL, MariaDB 2015.07.16