본문 바로가기

MySQL6

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.
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.
MySQL 권한 - 1 MySQL 8.0 권한(Privilege) MySQL 5.7 버전까지 권한은 글로벌 권한과 객체 단위의 권한으로 구분됐다. 데이터베이스, 테이블 외 객체에 적용되는 권한을 글로벌 권한, 데이터베이스나 테이블을 제어하는 데 필요한 권한을 객체 권한이라고 한다. 객체 권한은 GRANT 명령어로 권한을 부여할 때 특정 권한을 반드시 명시해야 한다. 글로벌 권한은 GRANT 명령어에서 특정 객체를 명시하지 말아야 한다. 하지만 ALL은 글로벌과 객체 권한 두 가지 용도로 사용될 수 있다. 특정 객체에 ALL 권한이 부여되면 해당 객체에 적용될 수 있는 모든 객체 권한을 부여하고 글로벌로 ALL이 사용되면 글로벌 레벨에서 사용 가능한 모든 권한을 부여한다. 권한 종류 글로벌 권한 FILE: File_priv 파일.. 2022. 9. 5.
MySQL 서버 튜닝, 최적화 검토 사항 (MySQL Server Tuning) 모든 운영체제에서 가장 중요한 모니터링 지표 중 하나인 CPU 사용률, mysql 서버를 운영한다면 DBA는 현재 mysql 서버가 성능적으로 안정적인 상태인지 자주 확인해야 한다. 모니터링을 통해 운영 중인 mysql 서버가 불안정한 상태를 보이거나 시스템 자원 부족으로 서비스에 문제가 발생할 가능성이 있다면 이를 인지하고 최적화까지 고려해야 한다. 1. CPU Iowait이 높은 케이스 CPU Iowait의 사용률이 높은 경우, 사용량의 절대량이 높거나 사용이 전체적으로 높다면 그중 CPU Iowait 사용량의 비율이 상대적으로 높으면 디스크의 IO 오퍼레이션에 의한 병목, 지연이 발생하고 있다고 볼 수 있다. 일반적인 원인 전체 쿼리 트래픽에 대한 서버의 처리량을 디스크 성능이 뒷받침하지 못하는 경.. 2022. 6. 14.