본문 바로가기

분류 전체보기270

[MySql] 쿼리 실행 구조 쿼리 실행 구조 쿼리 실행 구조는 기능별로 다음과 같이 나눠질 수 있다. 1. 파서(Parser) 파서는 사용자 요청으로 들어온 쿼리 문장을 토큰(MySql이 인식할 수 있는 최소 단위의 어휘나 기호)으로 분리해 트리 형태의 구조로 만들어 내는 작업을 의미한다. 이 때, 만들어진 트리 형태를 파스트리(parse tree) 라고 한다. 쿼리 문장의 문법 오류는 이 과정에서 발견되어 사용자에게 오류 메시지를 전달한다. 2. 전처리기(PreProcessor) 파서 과정에서 만들어진 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점이 있는지 확인한다. 각 토큰을 테이블 이름이나 컬럼 이름 또는 내장 함수와 같은 개체를 매핑해 해당 객체의 존재 여부와 객체의 접근 권한 등을 확인하는 과정을 이 단계에서 수행한다... 2019. 6. 22.
OS - 메모리 관리 메모리 관리를 하기 전에, 왜 메모리 관리를 해야할까? 1. OS는 각 프로세스들이 메모리에 올라왔을 때 다른 프로세스의 메모리 공간을 접근하는 것을 막아야 한다. 이를 위해 메모리에서 프로세스의 시작 위치를 저장하는 Base register와 프로세스에게 할당 된 메모리 크기인 Limit Register 값을 이용해 프로세스들의 메모리 공간의 경계를 나눈다. 즉, 실제 메모리가 가지는 범위는 Base Register 2019. 6. 18.
아파치 카프카(Apache Kafka) 카프카 (Kafka) 아파치 카프카(Apache Kafaka) 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트이다. pub-sub모델 의 메세지 큐이며, 분산환경에 특화되어 설계되어 있다. 그로인해 기존의 RabbitMQ와 같은 다른 메세지 큐와의 성능 차이가 있다.(훨씬 빠르다.) 이 외에도 클러스터 구성, fail-over, replication과 같은 여러가지 특징을 가지고 있다. pub-sub 모델 : 메시지를 보내고(Publish : 발행) 받는 (Subscribe : 구독) 형태의 통신 Publisher는 메세지를 topic을 통해 카테고리화 한다. Receiver는 해당 topic을 구독(Subscribe) 함으로써 메세지를 읽어 올 수 있다. Publisher는 .. 2019. 6. 17.
Oracle VARCHAR2 MAX값 구하기, 마지막 레코드 구하기 seq 테이블이 VARCHAR2 타입으로 구현되어 있었다. 그럼 MAX값을 가져오고 싶은데 어떻게 가져오지? 다행히 이런 경우에도 가져오는 방법이 있기는 했다. MAX(to_number(해당 컬럼 명)) from 테이블 명 group by 그룹 아이디. 이렇게 하면 MAX인 VARCHAR2 값을 뽑을 수 있다. 그렇다면 MAX인 레코드 전체를 구하고 싶으면 어떻게 할까? Oracle에서 제일 마지막 레코드를 구하는 쿼리문 # 사용방법 SELECT * FROM (SELECT * FROM 테이블명 WHERE 조건 AND 조건 ORDER BY 필드명 DESC) WHERE ROWNUM = 1 select * from (select max(to_number(seq)), reg_dt, reg_id,content f.. 2019. 5. 27.
스프링부트 parameterType alias 지정하기 소스코드 SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); //아래 두줄 추가 sqlSessionFactoryBean.setVfs(SpringBootVFS.class); sqlSessionFactoryBean.setTypeAliasesPackage ("DTO/VO 클래스가 있는 패키지 경로"); 기존의 Config 클래스에 위의 두줄을 추가해주기만하면 끝이다. 추가 후 Mybatis의 xml 파일로 가서 ParameterType에 클래스 명을 그대로 사용할 수 있다. 여기서 나오는 VFS는 Virtual File System의 약자로 .. 2019. 5. 27.
Controller에서 Parameter를 받는 방법 httpServletRequest.getParameter() - 가장 흔히 사용하는 일반적인 방법 @RequestMapping("/test") public String test(HttpServletRequest req){ String userId = req.getParamenter("userId"); return "test"; } httpServletRequest.getAttribute() getParameter()와 비슷하다. 차이점은 getParameter는 String 객체로 처리하고, getAttribute는 Object로 처리한다. User user = (User)req.getAttribute("user"); String userId = user.getUserId(); @RequestParam .. 2019. 5. 23.