일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Elk
- enablekafkastreams
- spring-batch
- RabbitMQ
- aws
- kafka streams
- 플레이 프레임워크
- reactive
- 카프카
- coursera
- confluent
- gradle
- kafkastream
- kafka interactive query
- Slick
- spring-cloud-stream
- 한빛미디어
- Logstash
- springboot
- Elasticsearch
- spring-kafka
- play framework
- scala
- kafkastreams
- Spring
- Kafka
- avo
- scala 2.10
- statestore
- schema registry
- Today
- Total
목록RealMysql (13)
b
6.3.6 테이블 조인 INNER JOIN(일반적으로 부르는 JOIN) : 어느 테이블을 먼저 읽어도 결과가 달라지지 않으므로, 옵티마이저가 조인의 순서를 결정해서 최적화 할 수 있다. SELECT * FROM emp e, sal s WHERE e.emp_no = s.emp_np; SELECT * FROM emp e INNER JOIN sal s ON s.emp_no = e.emp_np; SELECT * FROM emp e INNER JOIN sal s USING (emp_no) 문법은 다르지만, 전부 같은 쿼리이다. OUTER JOIN : 반드시 OUTER가 되는 테이블을 먼저 읽어야 해서 최적화 할 수 없다. (어느 테이블을 먼저 읽느냐는 조인에서 아주 중요한 요소이다) outer table은 반드시..
6.3 MySQL의 주요 처리 방식 스토리지 엔진에서 읽은 레코드를 MySQL엔진이 아무 작업도 하지 않고 사용자에게 반환하면 최고의 베스트 하지만 대부분의 쿼리는 그렇지 않다. MySQL엔진이 처리하는데 오래 걸리는 작업의 원리를 알아두면 도움이 될 것 6.3.1 풀 테이블 스캔 - 레코드 건수가 매우 작아, 인덱스보다 유리할 경우(보통 1개 page) - WHERE, ON절에 적절한 인덱스를 이용할 수 없을 경우 - 인덱스 레이지 스캔이지만, 실행계획에서 일치 레코드 개수가 너무 많을 경우 등등 MySQL의 MyISAM은 Read ahead 작업의 갯수를 선언할 수 없다. 그래서, 한번에 한개씩 읽어오지만, InnoDB는 다르다. 처음에는 Foreground thread가 페이지를 1개씩 읽지만 이후..
6.2.3 table 칼럼 실행계획읜 '테이블 기준', 테이블을 사용하지 않으면 NULL 을 표시한다. 이 칼럼에 처럼 로 명시되는 경우는 임시 테이블을 뜻한다. ** MySQL은 다른DBMS와 달리 FROM에 사용된 서비쿼리는 반드시 별칭을 가져야 한다. ==> SELECT * FROM (SELECT de.emp_no FROM dept_emp de) ==> Error Code: 1248 Every derived table must have its own alias 6.2.4 type칼럼 (중요) MySQL이 각 테이블을 어떤 방식으로 읽었는가를 뜻한다 (인덱스, 풀 테이블 스캔 등..) (MySQL 메뉴얼에서는 '조인 타입'으로 명명) ALL : 풀스캔, 나머지:index이용 type종류 (위쪽일수록 ..
6.2 실행 계획 분석 사용 문법 : EXPLAIN SELECT 쿼리 문장 사용 예제 : EXPLAIN SELECT e.emp_no FROM `employees` e, `salaries` s LIMIT 10; 결과 : 각 라인은 쿼리 문장에서 사용된 테이블(임시포함) 갯수만큼 출력된다. 실행순서는 위-> 아래(UNION, SUB쿼리는 순서대로가 아닐 수 있다) 특징 : 다른DBMS아 달리 실행 계획을 산출하기 위해 쿼리 일부분을 직접 실행할때도 있다 ->실행계획 조회도 느릴수 있다. ->UPDATE, INSERT, DLETE는 실행계획조회를 할 수 없다. (WHERE-SELECT를 이요해서하라) 6.2.1 id 칼럼 -하나의 SELECT는 다시 1개 이상의 SUB- SELECT 문장을 포함 할 수 있다...
* 지은이의 말 사람들이 NoSQL에 상당한 관심을 가지고 있지만, 실제로는 몽고DB나 카산드라같이 유명한하고 사용처는 많지 않다. 사용하더라도, 성능에 대해 괴로움이 많다고 한다. 지은이도 관심을 가지는 Hbase를 포함한 NoSQL은 INSERT,UPDATE 쓰기 동작이 빠르지만, MySQL의 SELECT 조회처럼 퍼모먼스를 내긴 어렵다. 이처럼 명백하게 나뉜다. * 초급 내용 6장, 7장, 8장, 9장, 11장, 13장, 14장, 15장, 16장 6장. 실행계획 6.1 개요 6.1.1 쿼리 실행 절차 MySQL 실행되는 과정 1. SQL파싱 단계 : SQL문장을 잘게 쪼개 MySQL이 이해할 수 있는 수준으로 분리 MySQL 파서 모듈이 수행한다 문법 오류는 여기서 걸러지고. SQL파스트리가 생성된..