개발 공부 기록하기/02. DB & SQL 24

내맘대로 정리하는 Real MySQL #3장) 아키텍처 - MySQL 아키텍처 편

시리즈는, 책을 읽으며 몰랐던 내용을 위주로 정리한 내용 그대로 포스팅하는 시리즈입니다 ^^ 원문의 문맥이 궁금하면 (좋은 책이니) 이 참에 하나 장만하는 것은 어떤가요?? MySQL 전체 구조 MySQL 엔진 커넥션 핸들러 : 클라이언트로부터의 접속 및 쿼리 요청 처리 SQL 파서 및 전처리기 옵티마이저 : 쿼리의 최적화된 실행에 도움 성능 향상을 위한 MyISAM의 키 캐시나 InnoDB같은 보조 저장소 기능 스토리지 엔진 : 실제 데이터를 디스크에 저장하거나 디스크로부터 데이터를 읽어오는 부분 핸들러 요청 : MySQL 엔진 → 스토리지 엔진에 보내는 요청 핸들러 API : 핸들러 요청에서 사용되는 API, SHOW GLOBAL STATUS LIKE 'Handler%'로 확인 가능하다. 스레드 구조..

내맘대로 정리하는 Real MySQL #2장) 설치와 설정

시리즈는, 책을 읽으며 몰랐던 내용을 위주로 정리한 내용 그대로 포스팅하는 시리즈입니다 ^^ 원문의 문맥이 궁금하면 (좋은 책이니) 이 참에 하나 장만하는 것은 어떤가요?? 설치에 대해서는 정리하지 않는다. MySQL 서버는 단 하나의 설정 파일만 사용한다. 유닉스 계열에서는 my.cnf 라는 이름을 사용하고 윈도우 계열에서는 my.ini라는 이름을 쓴다. MySQL 서버는 시작될 때만 이 설정 파일을 참조하며, 처음 발견된 my.cnf 파일을 사용하게 된다. mysqld --verbose --help 혹은 mysql --help를 통해 설정 파일을 읽어들이는 경로 순서를 알 수 있다. mysqld : 서버 프로그램 mysql : 클라이언트 프로그램 MySQL 서버는 가동하면서 설정 파일의 내용을 읽어 ..

SQL group by와 having 이해하기

직원에 대한 테이블 emp가 있다고 하자 emp는 3가지 column을 가지고 있다. id : primary key dept : 근무 부서 번호 salary : 월급 이 테이블 안에는 다음과 같은 데이터들이 있다고 하자 (1, 1, 1000) // 1번 부서에서 1000원을 받고 일하는 사람 (2, 1, 2000) (3, 1, 3000) (4, 2, 4000) (5, 2, 5000) (6, 3, 6000) (7, 3, 7000) (8, 2, 8000) 이런 상황에서 내가 근무 부서 당 월급의 총합을 알고 싶다고 하자. group by를 모르는 상황에서는 이렇게 할 수 있다. 1. 우선 근무 부서 번호의 종류를 확인한다 SELECT DISTINCT(dept) FROM emp; 2. 그 다음 각 근무 부서 ..

SQL JOIN 이해하기

JOIN : 두 개 이상의 테이블이나 데이터베이스를 연결하여 검색하는 방법 보통 PK 또는 FK로 두 테이블을 연결함 Inner Join 교집합이라고 많이 설명한다. 여기서 교집합이라는 것은, 특정 조건에 맞는 행들만 포함시키고 그렇지 않은 행들은 제외시킨다는 뜻이다. 예를 들어, 두 테이블이 있다고 하자 유저(user) 테이블 id : PK name : 유저 이름 자동차(car) 테이블 id : PK user_Id : FK (유저 테이블) name : 자동차 이름 이 테이블에 다음과 같은 값들이 있다고 하자 유저(user) 테이블 (1, 김철수) (2, 홍길동) (3, 김영희) (4, 박상식) 자동차(car) 테이블 (1, 1, "SM3") (2, 1, "그렌져") (3, 2, "소나타") (4, 3,..