MySQL

· MySQL
FULLTEXT with N-GRAM 전문 검색을 사용해 보자  들어가며웹사이트를 사용하다 보면 검색 기능을 쉽게 접할 수 있습니다. 기본적으로 많은 웹사이트는 엘라스틱서치(Elasticsearch)를 사용하여 손쉽게 검색 기능을 구현하고 개선합니다. 그러나 MySQL에서도 FULLTEXT와 N-GRAM을 지원하여 검색 기능을 최적화할 수 있습니다. 이번 포스팅에서는 MySQL을 사용하여 검색 기능을 최적화하는 방법에 대해 알아보겠습니다.  FullText IndexFULLTEXT 검색은 관계형 데이터베이스에서 텍스트 기반의 검색 기능을 제공하는 중요한 기술입니다. 특히 MySQL과 같은 데이터베이스에서는 FULLTEXT 인덱스를 통해 이 기능을 구현할 수 있습니다. 이 인덱스는 텍스트 필드 내의 단어들..
· MySQL
MySQL에서 데이터를 Import 및 Export 해보자!  들어가며로컬 환경에서 작업한 데이터를 AWS 또는 다른 데이터베이스(DB)로 효율적으로 이관하는 방법을 LOAD DATA INFILE을 사용하는 방법이 있습니다. 이 방법은 데이터를 빠르게 로드할 수 있어 사용하는 방법을 한번 알아보도록 하겠습니다. 설정 확인하기LOAD DATA INFILE을 사용하기 전에 먼저 환경 설정을 확인해야 합니다.SHOW VARIABLES LIKE 'local_infile'; 위 명령어를 통해 해당 Mysql의 설정 정보를 확인해 줍니다. 만약 Value가 Off로 되어있다면 아래 명령어를 입력해 On으로 변경해줍니다.SET GLOBAL local_infile=1; 설정파일 변경 시(Windows 기준)C:\Pro..
· MySQL
MySQL scheduled event 들어가며 프로젝트를 진행하던 중.... 비밀번호 찾기의 로직을 구현 중에 어떻게 해야 안전하게 비밀번호를 변경할 수 있을까 고민이 들게 되었다. 그래서 처음에는 static 변수에 선언해서 구현을 하는 도중.. 다른 사용자가 비밀번호 찾기 기능을 사용한다고 하면 이전사용자의 정보는 바뀌게 되어 사용할 수 없는 치명적인 오류가 발생하는 것이었다. 그래서 현재 프로젝트에서는 NoSQL을 사용하고 있지 않아서 MySQL에서 지원하는 event를 사용을 하도록 했다. 이번 포스팅에서는 어떻게 event를 사용하는지 알아보도록 하자 MySQL scheduled event란 MySQL에서의 이벤트는 일정한 주기나 특정한 시간에 자동으로 쿼리를 실행해주는 작업이라고 할 수 있습..
· MySQL
"R-Tree, 전문검색(n-gram), 함수 기반, 멀티 밸류, 클러스터링, 유니크"인덱스에 대해서 알아보자 들어가며 이전 포스팅에서는 B-Tree 인덱스에 대해서 알아보았다 .이번 포스팅에서는 MySQL에서 지원하는 나머지 인덱스에 대해서 알아보도록 하자. R-Tree 인덱스 R-Tree 인덱스란? 공간인덱스 R-Tree 인덱스 알고리즘을 이용해 2차원의 데이터를 인덱싱 하고 검색하는 목적의 인덱스이다. 세 가지 기능이 포함돼 있다. 공간 데이터를 저장할 수 있는 타입 공간 데이터의 검색을 위한 공간 인덱스(R-Tree 알고리즘) 공간 데이터의 연산 함수(거리 또는 포함 관계의 처리) 구조 및 특성 Mysql에서 지원하는 도형 데이터 타입 POINT : 점 LINE : 선 POLYGON : 도형 GE..
· MySQL
MySQL의 인덱스(Index)-B-Tree를 알아보자 인덱스란? 인덱스는 값을 찾기 편리하게 만들어주는 도구입니다. 쉽게 비유하자면 책의 마지막 부분에 있는 찾아보기 페이지가 인덱스와 비슷합니다. 자바의 컬렉션을 예로 들어보면, SortedList와 ArrayList가 있습니다. SortedList는 저장된 값을 항상 정렬된 상태로 유지하는데, 이는 찾아보기에서 "ㄱ", "ㄴ", "ㄷ"와 같이 정렬된 것과 유사합니다. 그러나 SortedList는 데이터가 저장될 때 항상 정렬된 값을 가져야 하므로 저장 과정이 복잡하고 속도가 느릴 수 있지만, 조회 과정은 매우 빠르게 동작합니다. 반면에 ArrayList는 값을 저장하는 순서를 그대로 유지하는 구조입니다. DBMS의 인덱스는 SortedList를 사용하..
· MySQL
암호화에 대해서 알아보자 들어가며 데이터를 저장할 때 암호화를 하지 않으면 악의적인 공격자가 데이터를 빼내어 사용할 수 있는 위험이 있습니다. 이러한 상황에서 데이터를 안전하게 보호하기 위해서는 저장할 때 암호화를 통해 데이터를 안전하게 보호해야 합니다. 데이터를 암호화 함으로써 데이터가 유출되더라도 암호화된 상태로 노출되기 때문에 해독하는데 어려움이 생겨 안전하게 보호할 수 있습니다. MySQL 서버의 데이터 암호화 데이터 암호화는 데이터 파일을 읽고쓰는 InnoDb I/O 레이어에서 암호화 및 복호화 과정이 실행된다. 사용자는 암호화가 되어있는지 없는지 확일할 필요가없다. 암호화가 실행되어 있더라고 MySQL 내부와 사용자 입장에서는 아무런 차이가 없다. 이런 방식의 암호화를 TDE(Transpare..
· MySQL
MySQL에서의 데이터 압축 기술 들어가며 데이터베이스에서는 대량의 데이터가 저장되고 검색되기 때문에 효율적인 데이터 관리가 필수적입니다. 이에 따라 데이터 압축은 저장 공간을 절약하고 데이터베이스 성능을 향상하는 데 중요한 역할을 합니다. MySQL 서버에서는 페이지 압축과 테이블 압축 두가지의 방식이 존재합니다. 페이지 압축이란 페이지 압축이란 "Transparent Page Compression" 이라 불린다. MySQL 서버가 디스크에 저장하는 시점에 압축되며, 데이터를 읽어올 때 압축이 해제되는 형식이다. 즉 버퍼풀에 데이터 페이지가 적재되면 InnoDB스토리지 엔진은 압축이 해제된 상태로만 데이터를 관리한다. 그래서 MySQL 서버 내부 코드에서는 압축 여부와 관계없이 "투명(Transpare..
· MySQL
MySQL의 트랜잭션과 잠금에 대해서 알아보자 트랜잭션이란? 트랜잭션의 완정송을 보장해주는 것이다. 즉 성공했을 때 COMMIT를 하고 실패했을떄는 ROLLBACK을 하는것이다. 기본적인 트랜잭션의 개념은 "트랜잭션이란" 포스팅을 참고해주세요 MySQL에서의 트랜잭션 기본적으로 위에서 설명한 대로, 트랜잭션은 논리적으로 성공할 경우(COMMIT) 또는 실패할 경우 이전 상태로 롤백(ROLLBACK)되는 것을 보장합니다. MySQL에서는 InnoDB와 MyISAM 엔진을 사용합니다. 두 엔진 간의 트랜잭션에 대한 차이를 먼저 살펴보겠습니다 create table tab_myisam (fdpk int NOT NULL, primary key(fdpk) ) engine=MyISAM; insert into tab..
코드기록사
'MySQL' 카테고리의 글 목록