MySQL(6)
-
MySQL Lock
Row Level Lock Shared Lock Shared Lock은 특정 Row를 읽을 때 사용되는 Lock 입니다. Shared Lock끼리는 동시에 접근이 가능합니다. 즉 하나의 row를 여러 트랜잭션이 동시에 읽을 수 있다는 것입니다. 하지만 Shared Lock이 설정된 Row에 Exclusive Lock을 사용할 수는 없습니다. 즉, 특정 Row를 누가 읽고 있음으로 Shared Lock이 설정되어 있는데, 다른 사용자가 그 데이터에 쓰기 작업을 하기 위해 Exclusive Lock을 걸 수 없다는 의미입니다. 일반적인 Select 쿼리는 Lock을 사용하지 않고 DB를 읽어 들입니다. 하지만 Select ... FOR Share 등 일부 Select 쿼리는 특정 Row를 읽을 때 InnoD..
2022.11.14 -
MYSQL 5.7 특징
JSON 지원 일반적으로 text 컬럼에 json 데이터를 넣으면 나중에 검색할 때 어려움이 많습니다. 데이터를 모두 읽어서 다시 파싱하고, 특정 항목을 찾아서 테이블의 별도 컬럼에 저장한 다음에 그 컬럼으로 인덱스 생성하는 등 작업할게 많습니다. 하지만 이제 native json 데이터 타입 컬럼에 넣어두면 이 모든 작업을 간편하게 진행할 수 있습니다. 쿼리 성능 향상 임시 테이블 엔진 변경 기존에는 sub query를 사용할 때 만들어지는 임시 테이블이 MyISAM이었습니다. 그런데 MYSQL 5.7부터는 INNODB 엔진으로 바꾸면서 성능이 더 좋아졌습니다. UNION ALL 수정 더 이상 UNION ALL을 진행할 때, 임시 테이블을 생성하지 않습니다. Optimizer Hint 수정 Optimi..
2022.04.23 -
MySQL 8 버전 특징
NoSQL MySQL Document Store는 개발자가 전통적인 SQL 관계형 응용 프로그램과 NoSQL, schema-free document 데이터 베이스 응용 프로그램일 개발하는데 최대한의 유연성을 제공합니다. 따라서 별도의 NoSQL document 데이터베이스가 필요하지 않습니다. MySQL Document Store는 multi-document 트랜젝션 지원과 schema-less JSON 문서를 위한 완전한 ACID 준수를 지원합니다. JSON MySQL 8은 NoSQL에 사용되는 JSON 데이터에 대한 다양한 함수들을 제공합니다. JSON Table Funciton: https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html J..
2022.02.23 -
MySQL
MySQL 아키텍처 MySQL의 전체 구조 MySQL 엔진 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룹니다. 요청된 SQL 문장을 분석하거나 최적화하는 등 DBMS 두뇌에 해당하는 처리를 수행합니다. 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어오는 부분을 전담합니다. MySQL 서버에서 MySQL 엔진은 하나지만 스토리지 엔진은 동시에 여러 개를 사용할 수 있습니다. 핸들러 API MySQL 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때는 각 스토리지 엔진에게 쓰기 또는 읽기를 요청하는데, 이러한 요청을 핸들러 요청이라고 하고 여기서 사용되는 API를 ..
2022.02.21 -
Public Key Retrieval is not allowed
MySQL 8.0 이상의 버전의 DB 로 접속하려고 하는데, Public Key Retrieval is not allowed라는 에러가 발생했습니다. MySQL 8.0 미만의 버전에서는 주소값, 데이터베이스, 드라이버이름, 유저아이디, 패스워드 등만 가지고 있으면 DB 접속이 가능했습니다. 하지만 MySQL 8.0 이상의 버전부터는 보안적인 이슈로 useSSL=false와 allowPublicKeyRetrieval=true 설정을 추가해줘야합니다.J JDBC 주소를 예시로 하자면 아래와 같습니다. jdbc:mysql://localhost:3306/database?allowPublicKeyRetrieval=true&useSSL=false
2022.01.22 -
MySQL Storage Engine
Storage Engine이란 Storage Engine의 개념 Storage Engine은 DBMS가 데이터베이스에 대해 데이터를 삽입, 추출, 업데이트 및 삭제하는데 사용하는 기본 소프트웨어 컴포넌트입니다. MySQL의 스토리지 엔진은 데이터베이스 엔진을 조작할 때, 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지부터 데이터를 읽어오는 부분을 DBMS 고유의 사용자 인턴페이스를 이용하는 방법과 포트 번호를 통해 하는 방법을 제공합니다. MySQL Storage Engine의 종류 MyISAM 특징 데이터 저장에 실직적인 제한이 없음 데이터를 매우 효율적으로 저장 빈번한 데이터 사용의 부하를 잘 소화함 B-tree, R-tree 그리고 Full-text Index를 지원 특정 Index에 대..
2020.11.25