MariaDB/Admin 18

기타 기능2

파티션 MariaDB 10.0에서 파티션 최대 개수가 1024개에서 8192개로 확장 명시적 파티션 지정 명시적 파티션 지정 기능으로 대부분의 DML 문장과 SELECT 쿼리에서 사용할 수 있음 명시적 파티션 지정 사용법 테이블 생성 데이터 입력 데이터 입력 – 파티션을 지정해서 데이터를 입력할 수 있음 데이터 입력 – 파티션을 지정하여 데이터를 입력할 때, 범위와 맞지 않으면 에러 발생 데이터 확인 데이터 확인 – 파티션을 지정해서 데이터를 조회할 수 있음 명시적으로 파티션을 지정했을 때 pruning 확인 조건절로 특정 파티션에 있는 데이터를 조회했을 때 pruning 확인 명시적 파티션 지정 기능의 용도 옵티마이저가 파티션 프루닝을 처리하지 못할 때 NOT DETERMINISTIC(함수의 결과를 예..

MariaDB/Admin 2015.10.26

[MariaDB][Admin]스토리지 엔진 - InnoDB

1.InnoDB 스토리지 엔진 - 멀티스레드 기반의 언두 퍼지(Multi threaded purge) - InnoDB는 MVCC와 롤백을 위해서 언두 영역(언두 스페이스,롤백 세그먼트)를 별도로 관리 한다. 1.1 언두퍼지(Undo purge) - 많은 클라이언트 커넥션에서 데이터를 변경하게 되면 언두 로그 영역에 수많은 변경 전 정보들이 쌓이게 되는데,이렇게 쌓인 언두 로그를 언젠가는 삭제를 하고 빈 공간을 마련해야 이후의 변경 이력을 저장 할 수 있게 한다. InnoDB에서는 언두퍼지를 전담하는 별도의 스레디가 존재하며, Innodb_purge_threads 시스템 설정 변수로 언두 퍼지 개수 설정 가능.값이 0이면 마스터 스레드 사용(5.5 이전 메커니즘), 1이면 1개의 언두 퍼지 , 2이상이면 ..

MariaDB/Admin 2015.10.20

스토리지 엔진 2

InnoDB 스토리지 엔진 버퍼 풀 성능 개선 NUMA 버퍼 풀 메모리 초기 할당 리눅스에서는 InnoDB 버퍼 풀에 할당된 메모리를 점유하는 것이 아니라 사용할 것이라고 예약만 해두고 실제 응용 프로그램에서 접근할 때에만 리눅스가 응용 프로그램으로 할당해줌 장점 : 사용자의 실수를 막을 수 있음, 메모리 낭비를 막을 수 있음 단점 : 메모리 할당에 대해서 db 서비스를 시작할 때 관리자가 알 수 없음 -> 잘못된 메모리 할당으로 스왑을 사용하게 되거나 프로세스가 강제 종료 될 수 있음 단점을 보완하기 위해서 XtraDB는 버퍼 풀로 할당된 메모리 공간을 운영체제로부터 미리 모두 할당 받는 기능이 추가됨 -> 메모리 사용량 고정 InnoDB 잠금 세분화 (MySQL 5.6) mutex를 세분화해서 잠금 ..

MariaDB/Admin 2015.10.20

MariaDB 최적화 1

풀 테이블 스캔 다음과 같은 조건일 때 주로 풀 테이블 스캔 테이블의 레코드 건수가 너무 적어서 풀 테이블 스캔이 빠른 경우 WHERE, ON 절에 인덱스를 이용할 수 있는 조건이 없는 경우 조건에 일치하는 레코드 수가 너무 많은 경우 Read ahead 풀 테이블 스캔 시 대량의 페이지를 한번에 읽어올 수 있는 기능 Innodb나 XtraDB 스토리지 엔진은 테이블의 연속된 데이터 페이지가 읽히면 백그라운드 스레드에 의해서 Read ahead 작업이 자동으로 시작 포그라운드 스레드가 페이지를 읽다가 특정 시점부터는 백그라운드 스레드가 읽기 시작하는데 한번에 4 ~ 8개의 페이지를 읽다가 증가시킴. 최대 64개. innodb_read_ahead_threshold의 시스템 변수가 낮을수록 더 자주 Read..

MariaDB/Admin 2015.10.14

MariaDB 옵티마이저 힌트 및 실행 계획 분석 시 주의사항

옵티마이저 힌트 힌트사용법 힌트는 SQL 일부로 해석되기 때문에 잘못 사용할 경우 오류를 발생시킨다. SELECT * FROM employees USE INDEX (PRIMARY) where emp_no=10001; SELECT * FROM employees /*! USE INDEX ( PRIMARY) */ WHERE emp_no=10001; CREATE /*! 32302 TEMPORARY */ TABLE temp_emp_stat … STRAIGHT_JOIN 조인의 순서를 FROM 절에 명시된 테이블 순서대로 고정시키는 힌트 (오라클 ORDERED) 다음 기준일 경우 힌트 사용을 권고함 임시 테이블과 일반 테이블 -> 일반적으로 임시 테이블을 드라이빙 테이블로 선정하는 것이 좋으나, 일반 테이블에 조인 ..

MariaDB/Admin 2015.10.12

MariaDB 실행 계획 분석 1

옵티마이저 -> 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업 담당 쿼리 실행 절차 옵티마이저의 종류 규칙 기반 최적화 대상 테이블의 레코드 건수나 선택도를 고려하지 않고 옵티마이저에 내장된 우선순위에 따라 실행 계획을 수립 비용 기반 최적화 실행 계획 별 비용 산출 후 최소 비용이 소요되는 처리 방식을 선택해서 실행 통계정보 MariaDB에서 기본적으로 관리되는 통계 정보는 대략의 레코드 건수와 인덱스의 유니크한 값의 개수 정도 MySQL 5.6의 통계 정보 InnoDB 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적으로 관리할 수 있게 개선 innodb_index_stats/innodb_table_stats 테이블에서 인덱스 조회 가능 영구적으로 통계 정보 저장 여부 옵션 -> S..

MariaDB/Admin 2015.10.06

MariaDB 설치

2.1 다운로드 https://downloads.mariadb.org/ 2.2 설치 설치 프로그램을 이용한 설치 – 데이터 디렉토리나 데이터베이스, 설정 파일이 생성된다. 윈도우 -> msi 리눅스 -> rpm 압축파일을 이용한 설치 – 데이터 디렉토리나 데이터베이스, 설정 파일을 직접 생성해 주어야 한다. 윈도우 -> zip 파일 리눅스 -> tar.gz 2.3 업그레이드 동일 소스코드 베이스 버전(버전에서 앞 두자리) 간의 호환성을 보장해 주기 때문에 마이그레이션 시 데이터베이스를 덤프/임포트 할 필요는 없다. 소스코드 베이스 버전이 변경되는 경우, mysql_upgrade 유틸리티를 사용하여 인증이나 기본 딕셔너리 정보 테이블의 구조를 업그레이드 해주어야 한다. MySQL -> MariaDB 임시테..

MariaDB/Admin 2015.10.05