본문 바로가기

DB/MySQL7

[Real MySQL 8.0] #4 아키텍처 Real MySQL 8.0 (1권)을 읽고 요약한 자료입니다. 4.1 MySQL 엔진 아키텍처4.1.1 MySQL의 전체 구조MySQL 엔진커넥션 핸들러, SQL 파서, 전처리기, 옵티마이저 등요청된 SQL 문장을 분석 최적화스토리지 엔진(동시에) 여러 스토리지 엔진을 사용할 수 있다.MyISAM, InnoDB, Memory 4.1.2 MySQL 스레딩 구조SELECT thread_id,name , type,processlist_user , processlist_host FROM performance_schema.threadsORDER BY type,thread_id;마지막 'thread/ sql/ one_connection' 스레드만 실제 사용자의 요청을 처리하는 Foreground Thre.. 2024. 9. 8.
MySQL에서 sysdate() 와 now() 의 차이 SQL을 작성하다 보면 현재 시간이 필요할 때가 있다. 이 때 활용할 수 있는 함수가 MySQL 에는 두 가지가 있다. sysdate()now() 어떤 차이가 있을까? 둘 다 현재 날짜 값을 가져오는 기능을 한다. 다만 현재라는 기준이 다소 다를 뿐이다. 아래 예시를 참고해 보자. (본 예시는 MySQL 공식문서에서 가져온 내용이다.) 두 번째 예제를 보면 sysdate() 사이에 차이가 있음을 확인할 수 있다. 정리를 해 보면 아래와 같이 정리할 수 있다. sysdate() : 함수 호출 시간now() : 쿼리 수행 시간 그렇다면 하나의 쿼리에서 여러 번의 현재 날짜를 저장해야 하는 컬럼이 있다면 now() 를 사용하는 것이 맞다. 하지만 개발된 코드를 보면 그냥 기준 없이 사용되는 경우가 있을 것이다.. 2017. 10. 31.
MySQL에서 VALUES(col_name) 의 의미는? MySQL 에서 insert 쿼리 수행시 Key 중복이 있는 경우 해당 row를 업데이트 하기 위해서 insert ~ on duplicate key update ~ 를 사용한다. 문법 INSERT INTO tb_temp (a, b, c) VALUES(1, 2, 3) ON DUPLICATE KEY UPDATE c = c + 1 tb_temp 테이블에 PK(unique index)가 a 라고 했을 때를 가정하자. 위 SQL은 a=1 인 row 가 이미 존재한다면 c 컬럼을 갱신한다는 의미이다. 예를 들어 위 SQL을 두 번 수행하면? c는 4가 된다. 그럼 Bulk insert 에서의 duplicate key update 쿼리는 어떻게 작성이 될까? 두 개의 insert 구문이 있다고 가정하자. INSERT.. 2017. 9. 7.
MySQL에서 multi row를 insert 하는 방법 대량으로 insert를 수행하다 보면 성능을 고려하게 된다. MySQL에서는 multi row을 어떻게 빠르게 insert 할 수 있을까? One Transaction 처리 Insert ~ Select Bulk Insert LOAD DATA INFILE 구글링을 해 보니 4가지로 요약되는 것 같다. One Transaction 처리 start transaction; insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c) values (1, 2, 3); commit transaction; 하나의 트랜젝션으로 묶어서 처리하는 방식이다. SQ.. 2017. 8. 29.