분류 전체보기
바인드 변수를 이용한 오라클 SQL 튜닝 소개
저번 시간에 내부 프로시저를 재사용해야 쿼리 수행시 비용이 감소한다고 공부하였다. 그렇게 재사용성을 높이기 위해서 어떻게 해야하는지 알아보자. 바인드 변수 사용 사용자 정의 함수/프로시저, 트리거등은 별도의 이름이 있어 생성하여 계속해서 재사용할 수있다. 하지만 SQL은 이름이 없어서 내부 프로시저에 저장하여 사용한다. 그렇듯 SQL은 별도의 이름이 아닌 그 자체가 이름처럼 고유의 값으로 사용된다. 그럼 공백이나 대,소문자가 달라도 다른 객체인가? 아래 쿼리를보자. 12345678select * from t where empno = 7695;select * from t where empno = 7695 ; select * from T where empno = 7695;select * from t WHER..
오라클 옵티마이저의 소프트파싱(soft parsing)와 하드파싱(hard parsing)
소프트파싱와 하드파싱 이전장에서 설명하였듯이 옵티마이저가 쿼리를 수행하기 위해서 파싱, 최적화, 로우 소스 생성과정을 통해 내부 프로시저를 만든다. 이렇게 만든 내부프로시저를 반복해서 재사용할 수 있도록 캐싱해두는 메모리 공간을 라이브러리 캐시라고 한다. 라이브러리캐시는 System Global Area(SGA) 구성요소이다. SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간이다. 사용자가 작성한 SQL 문장을 실행할 때 SGA에 캐시되어있는 내부 프로시저를 찾으면 바로 사용하는데 이를 소프트 파싱이라고 하고 내부 프로시저가 존재하지 않아 다시 처음부터 파싱, 최적화, 로우 소스 생성 단계를 거쳐야하는 것을 하드파싱이라고 한다. 그럼 소프트 파싱..
옵티마이저에게 사용할 인덱스(index) 힌트주기
기본적으로 옵티마이저가 SQL을 수행할 때 인덱스를 통계정보를 이용하여 선택하지만 그것은 정확한 것이 아니라 자신이 알고 있는 수준까지 정보를 가지고 판단하기에 정확한 인덱스를 사용자가 선택하여 수행할 수 있다. 그 방법으로 쿼리 수행시 힌트를 부여하는 것이다. 힌트를 부여하는 방법은 다음과같다.1select /*+ 인덱스명(t) */ * from t where deptno = 10 and no = 1;cs - /*+ 인덱스 */를 사용하여 힌트를 부여한다.- 인덱스명을 여러개 나열하고 싶을때는 공백으로 구분하여 나열한다. ,를 사용하는 경우 앞에 인덱스만 사용된다.- 인덱스 내부에 테이블을 적을때 스키마명까지 입력하면 안된다. index(scott.tmp)- From 절에 Alias를 사용했다면 힌트에..
SQL 최적화 과정과 옵티마이저 소개 및 역할안내
SQL 최적화 과정 오라클을 기준으로 SQL의 최적화 과정은 다음과 같다. 1. SQL 파싱-> 파싱트리 생성-> 문법적 오류 확인-> 의미상 오류 확인 (없는 컬럼, 테이블 접근)2. SQL 최적화-> 옵티마이저가 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 가장 최적의 실행경로로 선정 3. 로우 소스 생성-> 선정된 실행경로를 실제 실행 가능 코드로 변경 (Row-Source Generator)가 역할 수행 그럼 이런 최적화를 진행하는 옵티마이저는 어떤것이고 또 어떻게 진행이되는가? SQL 옵티마이저란?- 옵티마이저는 사용자의 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 액세스 경로를 선택해주는 DBMS 엔진을 말한다. 최적화 단계 - 쿼리를 수행할 실행계획 찾기- Data Dicti..
블록체인 합의 방법 작업증명(pow, proof-of-work) 지분증명 (Pos, proof-of-stake) 소개
오늘 회사에서 샌프란시스코 대학교 블록체인 관련 교수인 정은진 교수님에게 블록체인 관련된 세미나를 들었다. 오늘 강의를 통해 그 동안 내가 블록체인에서 의구심을 가졌던 내용을 정리해보았다. 블록체인이란?우선 앞에 글에서도 설명하였듯이 블록체인은 hash의 연결이다. hash는 y=f(x)로 이루어져 있는 함수로써 함수에 들어간 값에 따라 y의 값이 바로바로 나온다. 이때 사용되는 해쉬는 sha256이다. x값으로 y의 값을 찾는데 어렵지 않으나, y의 값으로 x의 값을 찾는 것은 무지 어렵다. 이런 y값으로 x의 값을 찾는 것이 결국 비트코인을 채굴한다는 의미와 같다. 블록체인은 아래 그림과 같이 각 블록이 hash 값으로 연결되어 있다. 앞에 hash 값은 이전의 블록의 hash 값이 포함되어 있으므로..
input 태그에 선택한 항목이 label로 출력되게 해주는 choices.js 소개
현재 공부하려고 개인적으로 만들고 있는 프로젝트 위들포스에서 사용자를 검색하고 input 박스위에 레이블처럼 보여주는 기능이 필요했다. 아무리 찾아보아도 좋은 라이브러리가 없었는데 choices.js의 이미지를 보니 좀 좋아보여서 적용해 보았다. 우선 내 프로젝트에 적용된 하면은 이렇다. [홈페이지 및 github] https://joshuajohnson.co.uk/Choices/ https://github.com/jshjohnson/Choices 홈페이지에는 예제가 여러개 나열되어 있고, 필요에 따라 소스보기를 통해 참고할 수 있다. github에는 document가 있어서 사용할 수 있는 속성들이 나열되어 있다. [사용방법] 간단한 사용방법은 github에서 소스를 받거나 npm install cho..
div내에 overflow scroll 옵션에 따라 스크롤 생성 시 제일 밑으로 스크롤 내리기
채팅 프로그램을 요새 만들고 있는데 채팅의 경우 스크롤이 새로운 내용이 추가되면 맨 밑으로 이동되어야 한다. 그래서 jquery를 통해 좀 쉬게 이동하게 할 수 없나 싶어서 찾아보다가 있어서 정리해본다. const $messageTextBox = $('#messageTextBox'); $messageTextBox.scrollTop($messageTextBox[0].scrollHeight); div의 태그를 잡아서 해당 스크롤의 높이를 scrollTop 메서드로 잡아주면 자동으로 밑으로 내려가게된다. 어려워 어려워.
2018년 개봉작 쥬라기월드 폴른킹덤 감상 후기 및 줄거리
어벤저스와 데드풀2가 지나간 영화관은 크게 볼 것이 없었다. 날씨도 덥고 어디 가기도 애매할 때 마침 쥬라기월드가 상영하길래 예매하였다. 쥬라기 공원은 10년전인가 티비로 쥬라기공원1을 보고 어린 마음에 너무 무서웠던게 생각났다. 그래도 이번에는 가디언즈 오브 갤럭시에 나오는 크리스 프랫이 나와서 친숙하기도 하고 재미도 있을것 같았다. [줄거리] 영화는 공룡을 유전자를 호박에서 찾아서 생명공학 기술을 이용해서 공룡을 다시 만들어냈다. 그리고 그 공룡들을 모아놓은 쥬라기 공원이 있는데 이 지역의 화산이 폭발하게 되어 공룡을 이주시키는 내용부터 시작된다. 여자 주인공인 클레어는 남자주인공 오웬과 함께 공룡을 구하러 가는데 그중 블루라고 랩터라는 공룡을 데리러갔다. 블루는 오웬이 공룡 심리를 연구하던 시절에 ..
Mac에서 일반 키보드 연결시 Home/End 버튼 사용방법
맥북을 사용하다보면 다 좋은데 키보드 연결해서 사용하려고 할때 일반 키보드와 단축키가 너무 달라서 불편한 경우가 굉장히 많다. 특히 개발할 때 홈버튼과 엔드 버튼을 자주 사용하는데 너무 불편했다. 이를 해결하기 위한 방법을 구글링해서 찾았고, 공유 및 정리하기 위해서 글을 올린다. 다른 글이나 동영상 보면 karabinder를 사용하라고 하는데 나는 아무리 해도 적용이 안됐다... 이 글을 보고 나와 같은 문제를 격는 사람들이 문제를 해결 했으면 좋겠다. 1. 먼저 터미널을 실행 시키고 다음 경로로 이동한다. $ cd ~/Library $ mkdir KeyBindings $ cd KeyBindings $ vi DefaultKeyBinding.dict 2. 그리고 vi 편집기로 실행시킨 텍스트에 아래 내용..
스타필드 하남 스타벅스 리저브 카페
스타벅스에오면 항상 스타벅스 리저브 카페에 들린다. 원두를 내가 직접 취향에 맞게 고를수 있고 과자까지 줘서 좋다. 대게 먹는 원두는 니카라과 라 라구나를 먹는다. 가격은 7000원 사이즈옵 하면 8000원이다.