[MySQL] MySQL 성능 디버깅, 이 3개면 충분하다
·
💻 개발/📀 MySQL
MySQL에서 쿼리 성능을 분석하거나 최적화할 때, 꼭 알아야 할 세 가지 명령어가 있다. 바로 EXPLAIN, SHOW PROFILE, SHOW PROFILES이다. 각각의 역할과 사용 방법, 결과 해석법까지 살펴보자. EXPLAIN의미: 쿼리가 실행되었을 때, MySQL이 어떤 방식으로 처리할지 "실행계획"을 보여주는 도구이다.예시EXPLAIN SELECT * FROM users WHERE id = 5;실행 결과컬럼명설명주요 의미 / 해석성능 분석 팁id쿼리의 고유 식별자서브쿼리/조인의 순서 구분숫자가 클수록 먼저 실행됨select_typeSELECT 유형SIMPLE, PRIMARY, SUBQUERY 등서브쿼리 사용 시 구조 분석table접근 대상 테이블각 단계에서 조회되는 테이블 이름조인 순서 확..
[혼자공부하는SQL] Summary3
·
💻 개발/📀 MySQL
15강1. 인덱스의 개념SELECT를 사용해서 테이블을 조회할 때 결과를 빠르게 도출하도록 도와주는 기능이다.인덱스가 반드시 필요한 것은 아니지만, 실무에서는 데이터의 양이 엄청 많기 때문에 인덱스가 필요하다1) 인덱스의 장점과 단점(1) 장점SELECT문으로 검색하는 속도가 매우 빨라진다.그 결과 컴퓨터의 부담이 줄어들면서 결국 전체 시스템의 성능이 향상된다.(2) 단점인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요하다.대략 테이블 크기의 10% 정도의 공간이 추가로 필요하다.처음에 인덱스를 만드는 데 시간이 오래 걸릴 수 있다.찾아보기가 없는 책에 새로 찾아보기를 만드는 것과 마찬가지로 작업 시간이 필요하다.SELECT가 아닌 데이터의 변경 작업(INSERT, UPDATE, DELET..
[혼자공부하는SQL] Summary2
·
💻 개발/📀 MySQL
9강1. 데이터 형식1) 정수형(1) 종류데이터 형식바이트 수TINYINT1 (-128 ~ 127)SMALLINT2 (-32,768 ~ 32,767)INT4 (약 -21억 ~ + 21억)BIGINT8 (약 -900경 ~ + 900경)(2) UNSIGNED: 값의 범위가 0부터 시작되고, 음수까지의 범위가 양수로 더해진다.ex) TINYINT UNSIGNED → (0 ~ 256)2) 문자형(1) 종류데이터 형식바이트 수특징CHAR(개수)1~255고정형 문자형VARCHAR(개수)1~16383가변형 문자형- BINARY, VARBINARY도 있지만, 잘 사용하지 않는다.  (2) 고정형 문자형인 CHAR의 공간 낭비: CHAR는 글자의 개수가 고정된 경우, VARCHAR는 글자의 개수가 변동될 경우에 사용하는..
[혼자공부하는SQL] Summary1
·
💻 개발/📀 MySQL
1강1. DBMS(Database Management System)1) 의미: 데이터베이스를 관리하고 운영하는 소프트웨어2) 조건대용량 데이터여러 사용자와 동시에 공유3) 종류계층형(Hierarachical)망형(Network)관계형(Relational) → 가장 많이 사용되고 있다.객체지향형(Object-Oriented)객체관계형(Object-Relational)2. SQL (Structured Query Language)1) 의미: 구조화된 쿼리 언어로, 관계형 DBMS에서 사용되는 언어이다.2) 특징국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있다. (표준 SQL)표준 SQL이 존재하지만, DBMS 제품별로 기능 차이가 존재한다.3강1. 데이터베이스 모델링1) 의미: 테이블의 구조를 미리..
[혼자공부하는SQL] 20강
·
💻 개발/📀 MySQL
07-3 자동으로 실행되는 트리커0. 시작하기 전에트리거는 자동으로 수행하여 사용자가 추가 작업을 잊어버리는 실수를 방지해준다.INSERT, UPDATE, DELETE가 실행되면, 방아쇠가 당겨져서 트리거를 자동으로 작동한다.ex) 직원 테이블에서 사원을 삭제하면, 해당 데이터를 자동으로 퇴사자 테이블에 들어가도록 설정할 수 잇다. 즉, 트리거를 사용하면 데이터에 오류가 발생하는 것을 막을 수 있고, 이런 것을 데이터 무결성이라고 부르기도 한다.1. 트리거의 기본1) 트리거의 개요트리거란? 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생하면 실행되는 코드이다.ex) 해당 데이터가 삭제 되기 전에 다른 곳으로 자동으로 저장해주는 기능이 있다면, 사용자는 더 이상 행 데이터를 삭제하기 전에..
[혼자공부하는SQL] 19강
·
💻 개발/📀 MySQL
07-2. 스토어드 함수와 커서1. 스토어드 함수스토어드 함수는 앞에서 배운 스토어드 프로시저와 비슷하다.하지만 사용 방법이나 용도가 조금 다르니, 별개로 알아둘 필요가 있다.1) 스토어드 함수의 개념과 형식MySQL에서 제공하는 함수 외에, 사용자가 원하는 함수를 직접 만들 수 있다.이를 스토어드 함수라고 한다.(1) 생성 형식DELIMITER $$CREATE FUNCTION 스토어드_함수_이름(매개변수) RETURNS 반환형식BEGIN - 이 부분에 프로그래밍 코딩 RETURN 반환값;END $$DELIMITER ;SELECT 스토어드_함수_이름();RETURNS 문으로 반환할 값의 데이터 형식을 지정한다.본문 안에서는 RETURN 문으로 하나의 값을 반환해야 한다.스토어드 함수의 매..
[혼자공부하는SQL] 18강
·
💻 개발/📀 MySQL
07-1. 스토어드 프로시저 사용 방법01. 시작하기 전에스토어드 프로시저(Stored Procedure) : SQL에 프로그래밍에 기능을 추가해서 일반 프로그래밍 언어와 비슷한 효과를 낼 수 있다.1. 스토어드 프로시저 기본1) 스토어드 프로시저의 개념과 형식스토어드 프로시저는 쿼리 문의 집합으로도 볼 수 있다.어떠한 동작을 일괄 처리하기 위한 용도로도 사용한다.자주 사용하는 일반적인 쿼리를 반복하는 것보다는, 스토어드 프로시저로 묶어 놓고, 필요할 때마다 간단히 호출만 하면 훨씬 편리하게 MySQL을 운영할 수 있다.(1) 스토어드 프로시저 생성DELIMITER $$CREATE PROCEDURE 스토어드_프로시저_이름 (IN 또는 OUT 매개변수)BEGIN-- 이 부분에 SQL 프로그래밍을 코드를 작..
3주 동안 진행된 SQL 스터디를 돌아보며
·
✍🏻 회고
다음 학기인 25년도 1학기에는 데이터베이스라는 과목을 수강하게 된다. 지금껏 해당 과목에서는 팀프로젝트가 있었고, 대부분 지인들과 팀을 미리 꾸린 상태에서 학기를 시작하게 된다. 감사하게도 24년도 2학기에 나도 팀원들을 구하게 되었고, 이번 겨울 방학에 간단하게라도 SQL에 대한 스터디를 진행해보자고 했었다.   그렇게 동계 방학이 시작되고 절반 이상 정도 지났을 무렵, 개강까지 한 달 정도 남은 시점이었기에 스터디를 시작해야 한다고 생각했었다. 그래서 위의 사진과 같이 관련 노션 페이지를 만들고, 2월 4일에 킥오프를 하게 되었다. 그리고 총 4회차의 스터디를 진행한 결과, 약 3주 정도 만에 스터디를 마무리 지을 수 있었다. 해당 스터디를 마무리 지으면서 회고록 작성의 필요성을 느끼게 되어 포스팅..
[혼자공부하는SQL] 17강
·
💻 개발/📀 MySQL
06-3. 인덱스의 실제 사용0. 시작하기 전에1) 인덱스 생성CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 (열_이름) [ASC | DESC]2) 인덱스 제거DROP INDEX 인덱스_이름 ON 테이블_이름1. 인덱스 생성과 제거 문법1) 인덱스 생성 문법테이블을 생성할 대 특정 열을 키본 키, 고유 키로 생성하면, 인덱스가 자동 생성된다는 것은 이미 학습했다.Primary Key 문법을 사용하면 클러스터형 인덱스가, Unique 문법을 사용하면 보조 인덱스가 자동으로 생성된다.그 외에 직접 인덱스를 생성하려면 어떻게 해야 할까?(1) 직접 인덱스를 생성하는 문법CREATE [UNIQUE] INDEX 인덱스 이름 ON 테이블_이름 (열_이름) [ASC | DESC]이렇..
[혼자공부하는SQL] 16강
·
💻 개발/📀 MySQL
06-2. 인덱스의 내부 작동0. 시작하기 전에클러스터형 인덱스와 보조 인덱스는 모두 내부적으로 ‘균형 트리’로 만들어진다.1) 균형 트리란?: 균형 트리(Balanced tree, B-tree)는 ‘자료 구조’에 나오는 범용적으로 사용되는 데이터 구조이다.나무를 거꾸로 표현한 자료 구조로, 트리에서 제일 상단의 뿌리를 루트, 줄기를 중간, 끝에 달린 잎을 리프라고 부른다.1. 인덱스의 내부 작동 원리인덱스의 내부 작동 원리를 이해하면, 인덱스를 사용해야 할 경우와 사용하지 말아야 할 경우를 선택할 때 도움이 된다.인덱스가 늘 좋은 것은 아니므로, 정확히 판단하는 것이 중요하다.1) 균형 트리의 개념균형 트리에서 데이터가 저장되는 공간을 노드(Node)라고 한다.(1) 용어 정리루트 노드(root nod..