본문 바로가기
728x90

MySQL14

MySQL FTS(Full Text Search) Full Text Search게시글의 내용 검색 시 키워드를 사용해 검색을 하게 된다.제목과 달리 내용에는 매우 긴 문자열을 포함하기 때문에 검색 성능을 높이기 위해서 인덱스를 사용할 것이다.여기서 한 가지 주의해야할 점은 like 검색을 할 때는 단어% 형식(해당 단어가 접두사)일때만 인덱스 검색이 가능하다는 것이다.어떤 단어를 검색하기 위해서는 %단어% 형식으로 검색을 하게 되는데 이와 같은 형식으로 검색을 한다면 인덱스를 사용하지 않고 검색하게 된다.이와 같은 문제를 해결하기 위해서 Full Text Search가 존재한다.Full Text Search는 InnoDB와 MyISAM 엔진에서만 지원한다.FULLTEXT 인덱스는 text, char, varchar 타입 컬럼에만 생성 가능인덱스 힌트의 .. 2024. 11. 5.
MySQL 파티션 파티션테이블 혹은 인덱스를 여러 부분으로 쪼개서 저장하는 방식을 파티션이라고 한다.파티션을 활용하면 특정 파티션에만 접근하여 검색을 하거나 조작을 할 수 있기 때문에 성능이 향상된다. 사용자는 쿼리를 할 때 파티션과 관계 없이 기존과 똑같이 쿼리를 하면 되고, 내부에서는 미리 설정한 파티션 대로 나눠진다. RANGE 파티션테이블을 생성할 때 파티션 키를 함께 지정한다. CREATE TABLE partTbl( userId CHAR(8) NOT NULL, name VARCHAR(10) NOT NULL, birthYear INT NOT NULL, addr CHAR(2) NOT NULL)PARTITION BY RANGE(birthYear) ( PARTITION part1 VALUES .. 2024. 11. 5.
MySQL 테이블 스페이스 테이블 스페이스테이블 스페이스는 테이블이 저장되는 논리적 공간으로, 물리적 공간인 데이터 파일에 매핑된다.일반적으로 DBMS 사용 시 어떤 논리적·물리적 공간에 저장되는지에 대해서는 상관하지 않고 CRUD 작업을 한다.하지만 대용량 데이터를 저장하는 경우에는 성능 향상을 위해 테이블 스페이스에 대해 고려하는 것이 좋다.테이블 스페이스를 지정하지 않는 경우가장 일반적인 경우로, 시스템 테이블 스페이스에 저장된다.innodb_data_file_path 변수에 시스템 테이블 스페이스의 데이터파 일 경로가 담겨져 있다.show variables like 'innodb_data_file_path'; -- ibdata1:12M:autoextend위 명령어를 사용해 데이터 파일 경로를 확인한 결과 ibdata에 담겨.. 2024. 11. 5.
MySQL 스토어드 프로그램 (2) 함수 스토어드 프로그램스토어드 함수스토어드 함수는 프로시저와 비슷하지만 반환타입과 반환값을 따로 지정하여 사용한다.또한 예측 가능한 결과를 반환해야 한다는(결정성, 일관성 유지) 특징을 가지고 있다.함수 목적단순한 계산 및 조회데이터 조작 없이 값 반환쿼리 내에서 사용프로시저는 CALL을 사용해 호출하지만, 함수는 SELECT를 사용해 호출하기 때문에 쿼리 내에서 함수 사용 가능결과의 예측 가능성CREATE FUNCTION 함수 생성DELIMITER //CREATE FUNCTION 스토어드함수명(파라미터) RETURNS 반환형식BEGIN 코드블록... RETURN 반환값END //DELIMITER ;SELECT 스토어드함수명();위 구문으로 함수를 생성할 수 있지만, 따로 처리를 .. 2024. 11. 5.
MySQL 스토어드 프로그램 (1) 프로시저 스토어드 프로그램스토어드 프로시저스토어드 프로시저(이하 프로시저)는 여러개의 명령을 묶어서 실행할 수 있는 기능이다.복잡한 비즈니스 로직을 구현하고, 트랜잭션을 처리하는 목적을 가진다.그렇기 때문에 스토어드 함수와는 달리 비결정성을 허용한다.프로시저 목적복잡한 비즈니스 로직 구현데이터 변경자동화된 작업 수행CREATE PROCEDURE 프로시저 생성DELIMITER //CREATE PROCEDURE 프로시저명()BEGIN DECLARE var1 INT; SET var1 = 100; SELECT * FROM 테이블명1; SELECT * FROM 테이블명2;END //DELIMITER ;프로시저명 뒤에 오는 괄호 내부에 파라미터를 줄 수도 있다.파라미터 종류입력 파라미터IN 파라미터명 데이터형식출력 .. 2024. 11. 5.
MySQL SQL 프로그래밍(스토어드 프로그램) 스토어드 프로그램스토어드 프로그램은 DB 내에서 실행되도록 작성된 SQL 코드 블록이다.복잡한 비즈니스 로직을 실행하거나 작업을 자동화하기 위해서 사용한다. 스토어드 프로그램 종류스토어드 프로그램은 실행 목적과 특징에 따라서 다음과 같이 구분된다.스토어드 프로시저스토어드 함수트리거이벤트DELIMITER 델리미터 지정SQL 코드 블록을 작성하기 위해서는 델리미터 지정이 필요하다.델리미터(DELIMETER)란 한 명령(문장)이 끝났음을 알리는 기호이다.기본 델리미터는 ';'이나, 필요에 따라서 델리미터를 변경 가능.DELIMITER //델리미터가 //으로 변경되었고, 이제 //이 입력되기 전까지는 한 문장이다. //이 입력되야만 실행된다.프로시저나 트리거의 BEGIN, END 구문 내부에서 사용되는 ;과 한.. 2024. 11. 5.
MySQL Pivot, JSON Pivot피벗은 한 열에 포함된 여러 정보를 각각의 열 정보로 변환하는 것을 의미한다. ex) 계절 컬럼 -> 봄, 여름, 가을, 겨울 컬럼으로 변환집계함수 sum()과 if(조건, 참, 거짓)을 함께 사용하여 피벗을 구현계절 이름으로 pivot을 구현하는 경우-- season 컬럼의 계절 이름 정보를 각각의 column으로 분리select uname, sum(if(season = '봄', amount, 0)) as '봄', sum(if(season = '여름', amount, 0)) as '여름', sum(if(season = '가을', amount, 0)) as '가을', sum(if(season = '겨울', amount, 0)) as '겨울', sum(amount) as '합.. 2024. 11. 5.
MySQL 대용량 데이터 업로드 / 다운로드 MySQL 대용량 데이터 업로드INSERT INTO movietbl VALUES(1, '쉰들러 리스트', '스필버그', '리암 니슨', LOAD_FILE('C:/SQL/movies/Schindler.txt'), LOAD_FILE('C:/SQL/movies/Schindler.mp4'));LOAD_FILE(PATH) : 해당 경로의 파일을 업로드 문제 상황LONGTEXT, LONGBLOB의 대용량 데이터 INSERT 시 NULL 값 발생원인** LONGTEXT, LONGBLOG의 MAX 값 조정 필요**=> max_allowed_packetSHOW VARIABLES LIKE 'max_allowed_packet' 로 원래 값 확인 가능** LOAD_FILE(PATH) 사용시 해당 경로를 보안 폴더로.. 2024. 11. 5.
728x90