본문 바로가기

Database

(11)
[REAL MYSQL 8.0] MySQL 엔진 아키텍쳐 - (1) MySQL 구조 MySQL 은 크게 요청을 받아와서 이해하는 머리 역할의 MySQL 엔진과 그 처리를 담당하는 스토리지 엔진으로 구분할 수 있습니다. MySQL 엔진은 주로 각 프로그래밍 언어에 대한 연결과 SQL 분석 및 최적화를 담당합니다. 반면 스토리지 엔진은, MySQL 엔진에서 분석한 명령들을 실제로 디스크에 I/O 하는 기능을 주로 담당한다고 보면 됩니다. mysql> CREATE TABLE test(c1 INT, c2, INT) ENGINE=INNODB; ENGINE='엔진' 명령어는 해당 테이블에 대한 I/O 작업을 할 스토리지 엔진을 지정할 수 있습니다. 위 명령을 수행하면, InnoDB 스토리지 엔진이 test 테이블에 대한 CRUD 처리를 담당하게 됩니다. 핸들러 API MySQL 엔..
[Real MySQL 8.0] 계정과 역할 MySQL 은 계정 뿐 아니라 접속 호스트도 계정의 일부가 됩니다. 그래서 MySQL 은 계정을 언급할 때 항상 호스트도 같이 명시합니다. 'test'@'127.0.0.1' # MySQL 가 올라가 있는 서버의 로컬호스트 에서만 test 계정에 접속 가능. 'test'@'%' # 모든 호스트에서 접속이 가능 % 는 모든 호스트를 뜻한다. 만약 같은 계정에 대해 두거지 호스트 설정이 있다면, 항상 범위가 작은 것이 우선 선택됩니다. 만약 위 예시가 모두 설정이 되어있다면, 범위가 더 작은 로컬호스트만에서 접속이 가능한 정보가 적용이 됩니다. MySQL 의 계정은 일반적으로 시스템 계정과 일반 계정으로 나뉩니다. 계정의 종류 시스템 계정과 일반 계정의 가장 큰 차이는 타 사용자에 대한 동작을 제어하거나 변경..
[Real MySQL 8.0] MySQL 서버 설정과 시스템 변수 설정 파일 MySQL 은 일반적으로 유닉스 계열은 my.cnf 윈도우즈 계열은 my.ini 라는 이름의 하나의 설정파일을 사용합니다. MySQL 은 설정파일 Path 를 정적으로 지정하고 있지 않기 때문에, 지정된 디렉터리 내에서 순차적으로 탐색하여 최초 발견된 것을 사용합니다. 그렇다면 여러 설정파일을 만들었을때, 현재 MySQL 에서 어떤 설정파일을 바라보고 있는지가 필요할 때가 있을 것 입니다. 그럴때는 아래 명령어를 통하여 추리 할 수 있습니다. mysqld --verbose --help | grep my.cnf mysql --help | grep my.cnf 출력은 다음과 같습니다. order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/..