InnoDB InnoDB 및 BDB 스토리지 엔진은 트랜젝션에 안전한 테이블을 제공하는 트랜잭션-세이프 스토리지 엔진이다. InnoDB는 모든 5.0 바이너리 배포판에 디폴트로 포함되어 있다. MyISAM과 비슷하지만 ORACLE처럼 많은 기능을 지원한다. commit, rollback, 장애복구, row-level locking, 외래키 등 다수의 사용자 동시접속과 퍼포먼스가 증가하여 대용량 데이터를 처리할 때 최대의 퍼포먼스를 내도록 설계되었습니다. CPU 효율은 어느 디스크 기반의 데이터 베이스와 비교해도 우수하고, 자체적으로 메인 메모리 안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀(pool)을 관리한다. MyISAM 과 다른 점으로 테이블과 인덱스를 테이블 스페이스에 저장을 하고 테이블 스페이스는 ..
MySQL 서버는 크게 머리 역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구성된다. 기본으로 제공되는 스토리지 엔진에는 InnoDB와 MyISAM 등이 있다. MySQL의 구조 및 MySQL 엔진MySQL 엔진은 다음과 같은 구성요소가 중심을 이룬다.접속 및 쿼리 요청을 처리하는 커넥션 핸들러SQL 파서전처리기옵티마이저- 옵티마이저가 중심 스토리지 엔진 실제 데이터의 저장과 조회는 스토리지 엔진이 담당하고 있다.특징MySQL 서버는 하나의 MySQL 엔진을 사용하지만, 여러 스토리지 엔진을 동시에 사용할 수 있다.테이블별로 사용할 스토리지 엔진을 지정이 가능하다.INSERT, UPDATE, DELETE, SELECT 등의 작업은 InnoDB 스토리지 엔진이 처리CREATE T..
MySQL에서 사용자 계정은 데이터베이스 시스템내에서 보안과 접근 제어를 관리하는데 필수적인 역할을 합니다.인증(Authentication): 사용자 계정은 데이터베이스에 접근하려는 개인이나 애플리케이션 신원을 확인하는데 사용됩니다. 무단 접근으로부터 시스템을 보호하는 데 중요한 역할을 합니다.권한 부여(Authorization): 사용자 계정을 통해 특정 데이터베이스, 테이블에 대한 접근 권한을 세밀하게 제어할 수 있습니다. 이를 통해 정보의 무결성과 보안을 유지할 수 있습니다.계정 관리(Account Management): MySQL에서는 사용자 계정을 생성, 수정, 삭제하는 등의 관리 작업을 할 수 있습니다. 이를 통해 유연한 관리가 가능해집니다.감사 및 로깅(Auditing and Logging)..
MySQL 설정 파일- my.cnf / my.ini 파일에 여러개의 설정 그룹을 담을 수 있다.MySQL 시스템 변수의 특징시스템 변수가 가지는 5가지 속성이 존재하는데 의미는 다음과 같다.Cmd-LineMySQL 서버의 명령행 인자로 설정될 수 있는지 여부를 나타낸다.이 값이 YES이면 명령행 인자로 이 시스템 변수의 값을 변경하는 것이 가능하다는 의미다.Option fileMySQL의 설정파일인 my.cnf로 제어할 수 있는지 여부를 나타낸다.옵션 파일이나 설정 파일 또는 컨피규레이션 파일 등은 전부 my.cnf 파일을 지칭하는 것으로 같은 의미로 사용된다.System Var시스템 변수인지 아닌지를 나타낸다. MySQL 서버의 설정 파일을 작성할 때 각 변수명에 사용된 하이픈(-)이나 언더스코어(_)..
MySQL 엔진, 스토리지 엔진 MySQL 엔진과 스토리지 엔진이 존재한다. 쿼리 파서 이 부분에서 기본 문법 오류는 이 과정에서 발견하고 사용자에게 오류 메세지를 전달하는 부분이다. 전처리기 내장 함수와 같은 개체를 매핑해 해당 객체의 존재 여부와 객체의 접근 권한 등을 확인하는 과정을 이 단계에서 수행한다. 또한, 파서 과정에서 만들어진 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점이 있는지도 확인 하는 부분이다. 옵티마이저 사용자의 요청으로 들어온 쿼리 문장을 저렴한 비용으로 가장 빠르게 처리할지를 결정하는 역할을 담당하고 사람이라고 치면 두뇌라고 한다. 쿼리 실행기 옵티마이저가 두뇌라고 하면 실행 엔진과 핸들러는 손과 발에 비유 할 수 있다. 예시로 옵티마이저가 GOURP BY 처리 하기 위해..
to_tsvector(), to_tsquery() 란? to_tsvector() 함수: to_tsvector() 함수는 텍스트 열을 Full-Text 검색을 위한 tsvector 데이터 형식으로 변환합니다. 이 함수는 텍스트에서 단어를 추출하고, 각 단어의 위치 및 가중치를 저장합니다. tsvector는 텍스트 검색 인덱스에 저장되며, 검색 쿼리를 빠르게 수행할 수 있도록 도와줍니다. to_tsquery() 함수: to_tsquery() 함수는 Full-Text 검색 쿼리를 위한 tsquery 데이터 형식으로 변환합니다. tsquery는 검색 쿼리를 나타내며, 검색하려는 단어 및 논리 연산자를 포함할 수 있습니다. 이 함수를 사용하여 텍스트 검색 쿼리를 생성하고 검색할 수 있습니다. Full-Text 검..
PostgreSQL vs MySQL PostgreSQL MySQL 성능 큰 데이터 세트에 대해 높은 성능을 제공합니다. 읽기-쓰기에 좋은 성능을 보인다. MVCC 모델을 사용함으로써 동시성 처리에 좋은 성능을 보인다. 작은 데이터 세트에서 빠른 성능을 보입니다. 읽기에 좋은 성능을 보인다. 왜냐하면 InnoDB 스토리지 엔진이 최적화가 잘되어 있기 때문이다. 확장성 수직 및 수평 확장이 용이합니다. 주로 수직 확장에 초점을 맞춥니다. 비용 오픈 소스로 무료입니다. Oracle 소유로, 상업적 이용시 비용이 발생할 수 있습니다. 그러나 오픈소스 버전도 있습니다. 지원 큰 커뮤니티와 많은 지원이 있습니다. 엄청난 사용자 커뮤니티와 넓은 범위의 지원을 제공합니다. 기능 매우 고급 기능을 제공하며, 객체-관계형..
Load Data 란? 파일 그 자체로 DB 테이블에 데이터를 넣는것이다. 아래의 속도 차원이 다르다. 속도: 대량의 데이터를 빠르게 로드할 때 "LOAD DATA"는 "INSERT"보다 훨씬 빠릅니다. "LOAD DATA"는 대부분의 데이터베이스 시스템에서 최적화되어 있어, 대량의 데이터를 빠르게 삽입할 수 있습니다. 공식 사이트 : https://dev.mysql.com/doc/refman/8.0/en/load-data.html LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)..
Mysql, PostgreSQL 에 각각 2,073,677 건의 데이터를 넣고 테스트를 진행하였다. DB 성능 분석을 할것이다. 똑같은 환경 똑같은 테스트코드로 진행할 예정이다. 또한, hibernate 에서 제공해주는 성능 체크를 할 예정이고, 프로덕션 코드가 아닌 단지 성능을 체크하기 위해 만들었기 때문에, hibernate 선택하여 진행하였다. git hub 저장소 : https://github.com/final-idea-rush/db-performance-check 테이블 구조 데이터는 1차 가공을 통해 사용하였습니다. 데이터 출처 : https://www.data.go.kr/data/15096283/standard.do 동일하게 2,073,677 건의 데이터로 진행할 예정이다. 전체 조회 Mys..
테이블 데이터 조회 - select select라는 sql 문은 기본적으로 테이블에 있는 데이터를 조회한다는 뜻이다. select를 통해서 원하는 데이터를 가져올 수 있고, 정렬, 숫자만큼 조회, 조건에 따른 데이터에 따라 데이터를 가져올 수 있다. 밑에는 간단한 sql 문으로 작성한 거다. select * from //모든 데이터 조회 select id from //id 의 데이터 조회 select id from where //id 중에 조건물을 걸어 나오는 데이터 조회 select * from order by id desc //id 값을 높은수 부터 정렬 select * from order by id asc //id 값을 낮은수 부터 정렬 select * from limit //숫자만큼만 조회 whe..