본문 바로가기

IT31

MysqlDB - Where Like '%%' 텍스트 검색 성능 개선 (n-gram) * 사용하는 환경은 AWS Aurora Mysql8.0 DB입니다. LIKE 절에서 '%'를 앞뒤로 사용하면 인덱스를 사용할 수 없기 때문에 성능 저하가 발생합니다. 이 문제를 해결하기 위해 다음과 같은 몇 가지 방법을 고려해 볼 수 있습니다. 1. Full-text 검색 사용: MySQL은 전체 텍스트 검색 기능을 지원합니다. 이를 사용하면 대량의 텍스트 데이터에서 빠르게 검색할 수 있습니다. FULLTEXT 인덱스를 생성하고, MATCH() ... AGAINST() 구문을 사용하여 검색할 수 있습니다. 예시) CREATE FULLTEXT INDEX idx_fulltext_column_name ON table_name(column_name); SELECT * FROM table_name WHERE MA.. 2023. 4. 25.
리눅스 디렉터리 구조 디렉터리 구조 *개념 -리눅스의 디렉터리는 최상위에 해당하는 루트(/)를 중심으로 하위 디렉터리에 다수의 디렉터리가 존재하는 형태인 역 트리(tree) 구조를 하고 있다. 그리고 명령어의 종류와 성격, 사용권한 등에 따라 각각의 디렉터리들로 구분된다. 리눅스 배포판들은 '리눅스 파일 시스템 표준'인 FSSTND(LINUX FILE System Standard)라는 표준을 준수하므로 대부분의 리눅스 배포판들은 그 기본 골격이 같다. *디렉터리 종류 및 구조 /(루트) -root 디렉터리라 한다. -최상의 디렉터리인 루트 디렉터리를 의미하며, 리눅스의 모든 디렉터리들의 시작점이다. 즉, 모든 디렉터리들을 절대 경로로 표기할 때에 이 디렉터리로부터 시작해야 한다. /bin -일반적으로 bin은 binary의 .. 2022. 10. 5.
MySQL 아키텍처 - 2 1. 글로벌 메모리 글로벌 메모리 영역은 클라이언트의 스레드 수와 관계없이 한 개의 메모리 공간만 할당이 된다. 하지만 필요에 따라 2개 이상의 메모리 공간을 할당받기도 하지만, 스레드 수와는 관계없으며, 생성된 글로벌 영역이 다수라 하더라도 모든 스레드에 의해 공유된다. InnoDB 버퍼 풀 InnoDB 어댑티브 해시 인덱스 InnoDB 리두 로그 버퍼 테이블 캐시 2. 로컬 메모리 로컬 메모리는 세션 메모리 영역이라 표현하기도 하며, DB 서버상에 존재하는 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모리 영역이다. 클라이언트가 DB 서버에 접속하면 DB 서버에서는 클라이언트 커넥션으로부터 요청 처리를 위해 스레드를 하나씩 할당하게 된다. 클라이언트 스레드가 사용하는 메모리 공간이라고 해서 클라.. 2022. 9. 27.
MySQL 아키텍처 - 1 1. 개요 1) MySQL 엔진: 사람으로 치면 두뇌역할 2) MySQL 스토리지 엔진: 사람으로 치면 손, 발 역할 (InnoDB, MyISAM) 2. MySQL 엔진 구조 MySQL은 다른 RDBMS와 마찬가지로 대부분 프로그래밍 언어로부터 접근을 지원한다. JDBC, ODBC 등 의 표준 드라이버를 이용해 자바나 파이썬 등 MySQL 서버에서 쿼리를 사용할 수 있도록 지원한다. 1) MySQL 엔진 요청된 SQL 문장을 분석하거나 최적화 등 두뇌에 해당하는 처리를 수행한다. 클라이언트로부터 접속이나 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 쿼리 최적화된 실행을 위해 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL 문법을 지원하기 때문에 다른 RDBMS에 호환될 수 .. 2022. 9. 26.
MySQL 사용자 계정 관리 - 1 1. 식별 관리 MySQL의 사용자 식별은 다른 DBMS와 조금 차이가 있다. 사용자의 계정뿐만 아니라 사용자의 접속 지점(클라이언트가 실행된 호스트명 도메인, IP 주소 등)도 계정의 일부가 된다. MySQL의 계정의 개념을 말할 때는 항상 아이디와 호스트를 함께 명시해야 한다. 아이디와 IP 주소를 감싸고 있는 역 따옴표 (`)는 MySQL에서 식별자를 감싸는 따옴표 역할을 하는데 홑 따옴표(')로 변경하여 사용하기도 한다. 아래 사용자 계정은 항상 MySQL 서버가 가동 중인 로컬 호스트에서 test_id라는 아이디로 접속할 때만 사용할 수 있는 계정이다. 만약 사용자 계정에 다음 계정만 등록돼 있다면 다른 컴퓨터에서는 test_id라는 아이디로 접속할 수 없다. 'test_id'@'127.0.0... 2022. 9. 21.
MySQL 정적 변수와 동적 변수 1. 개념 MySQL DB 서버의 시스템 변수는 MySQL이 가동 중인 상태에서 변경이 가능한지 여부에 따라 동적 변수 및 정적 변수로 나뉜다. MySQL DB의 파라미터 값(변수)은 디스크에 저장된 My.cnf, my.ini 파일을 변경하는 경우와 가동 중인 MySQL DB의 메모리에 있는 MySQL DB 시스템 파라미터를 변경하는 경우로 구분 가능하다. 디스크에 저장된 설정 파일의 설정이 변경되더라도 MySQL DB 서버를 재시작하기 전에는 적용되지 않는다. 하지만 SHOW 명령어로 MySQL DB 서버에 적용된 변숫값을 확인(LIKE 검색처럼 %를 사용해서 검색 가능), SET 명령어로 변숫값을 변경할 수도 있다. 예) SHOW GLOBAL VARIABLES 'wait_timeout'; SHOW G.. 2022. 9. 19.