MySQL에서 문자열 패턴 비교 연산자인 REGEXP, LIKE에 대해서 알아보고 자주 쓰이는 패턴에 대해서 정리해보고자 한다. 문자열 패턴 매칭 연산자 REGEXP 연산자 문자열 값이 어떤 패턴을 만족하는지 확인하는 연산자로, `RLIKE(Regular Expression)`와 동일한 역할을 수행한다. SELECT 'abc' REGEXP '^[x-z]'; 연산자의 좌측: 비교 대상(문자열 값 또는 문자열 칼럼) 연산자의 우측: 검증하고자 하는 정규 표현식 `REGEXP` 연산자는 정규 표현식을 토대로 하는 패턴 매칭 연산을 제공하는데, POSIX 표준으로 구현되어 있어 POSIX 정규 표현식에서 사용하는 패턴 키워드를 그대로 사용할 수 있다. POSIX? - Portable Operating Syste..
Real MySQL 8.0 - 10.3.4 partitions 칼럼 부분을 공부하는데 파티션에 대한 이해도가 부족해서 설명이 완벽하게 이해되지 않았다. 그래서 해당 내용을 이해하기 위해 필요한 부분 위주로 간단히 정리해보고자 한다. 파티션이란? 대용량 테이블이나 인덱스를 작은 논리적 단위로 나누는 것 파티션 기능은 테이블을 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리해서 관리할 수 있게 해 준다. 파티션이 필요한 경우는? 주로 대용량의 테이블을 여러 개의 소규모 테이블로 분산하는 목적으로 사용함 인덱스 크기가 과도하게 커질 때 인덱스가 커지면 SELECT 뿐만 아니라 INSERT, UPDATE, DELETE 작업도 함께 느려진다. `인덱스의 크기 > MySQL이 사용 가능한 메모..
히스토그램(Histogram)이란? 칼럼의 데이터 분포를 시각적으로 나타내는 통계 정보로 MySQL 8.0 버전부터 사용 가능하다. 데이터의 빈도를 그룹화하여 각 그룹의 빈도를 막대그래프로 표시한다. 데이터의 분포를 빠르게 이해하고 이상치를 감지하는 데 도움이 되며, MySQL의 옵티마이저가 쿼리 실행 계획을 수립할 때 활용된다. 히스토그램 정보 수집 과정 1. 다음 명령을 실행하여 히스토그램 정보를 수동으로 수집 및 관리 (자동 수집 X) ANALYZE TABLE 테이블명 UPDATE HISTOGRAM ON 칼럼명; 2. 수집된 히스토그램 정보를 시스템 딕셔너리에 저장 3. MySQL 서버가 시작될 때 딕셔너리의 히스토그램 정보를 `information_schema` 데이터베이스의 `column_sta..
지난 게시글에서 OAuth에 대해서 알아보았으니, 이제 구글 간편 로그인을 구현해보자! 그런데! 그냥 구현하는게 아니라 `Firebase Authentication`을 추가로 적용할 것이다. Firebase Authentication Google, 이메일, 휴대폰 등의 인증 방식을 쉽게 자신의 서비스에 붙일 수 있도록 도와주는 SaaS 서비스 Firebase Authentication은 OAuth2의 Authrorization Server 역할을 수행한다. 또한 Client에서 Authorization Server를 통해 인증하는 로직, Resource Server에서 Authorization Server에 접근하는 로직을 제공한다. 2~5 로직과 7~8 로직을 Firebase 라이브러리에서 제공하여, ..
프로젝트를 진행하면서 로그인 기능을 구현해야 했는데, WebRTC 기능 구현에 많은 시간을 빼앗겨서😭 간편하고 빠르게 로그인 기능을 구현할 수 있는 `간편 로그인` 기능을 채택하게 되었다. 기능 구현에 앞서, 간편 로그인 기능을 구현하기 위해 알아야 할 `OAuth`에 대해 정리해보고자 한다. OAuth 2.0(Open Authorization 2.0, OAuth2) 인증을 위한 개방형 프로토콜 서드 파티(Third Party) 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공한다. 애플리케이션이 사용자를 대신해서 사용자의 자원에 대한 제한된 액세스를 얻기 위해 승인 상호 작용을 함으로써 애플리케이션이 자체적으로 액세스 권한을 얻도록 한다. 구글..
InnoDB 스토리지 엔진은 특정 테이블의 연속된 데이터 페이지가 읽히면 백그라운드 스레드에 의해 리드 어헤드(Read ahead) 작업이 자동으로 시작된다. - Real MySQL 8.0의 9.2.1 책에서 리드 어헤드에 대해서 간단히 언급하고 지나갔는데, 더 자세히 알아보고 싶어서 정리하게 되었다. 풀 테이블 스캔 `풀 테이블 스캔(Full Table Scan)`은 인덱스를 사용하지 않고, 테이블의 데이터를 처음부터 끝까지 읽어서 요청된 작업을 처리하는 작업으로, 테이블의 레코드 건수가 너무 작거나 적절한 인덱스가 없을 때 이 방식을 사용한다. 풀 테이블 스캔 방식의 문제점은 테이블의 모든 행을 순차적으로 읽어오기 때문에 상당히 많은 디스크 I/O가 필요하다는 것인데, 대부분의 DBMS는 성능 최적화..