벨랜튜레이즈 알고리즘

인덱스 구조
blockA + blockL + fileA
8 + 4 + 4

같은 값이면 로우아이디순으로 소팅되어있음

인덱스사용못하는 경우
  • 인덱스를 가공 하는 경우 ( 인덱스는 like, <>, in 등 다 사용할수 있음) 
    •  좌변을 가공하지마라
    • 함수기반 인덱스 가용가능
  • NOT 부정형 조건 사용
    • bitmap index에서는 가능
  • NULL, NOT NULL
  • 옵티마이져가 취사선택
    • 의도적으로 인덱스 사용못하도록 하기
인덱스 머지 방식 실행계획

최근에 만들어진것 -> SQL 파싱할때 뒤에서 부터 파싱

힌트 / suppressing / 옵티마이저




컬럼의 형변환

NLS_DATE_FORMAT = ‘DD-MM-YY’ => ‘yyyyMMdd'



nul = chr ==> num = TO_NUM(chr)

6개컬럼 이상일때
분포도가 10~15% 이내일때
분포도가 이내가 아니여도 절대량이 많으면 클러스트링
손익분기점

인덱스 머지 보다 결합인덱스를 잘 사용하자.

인덱스머지가 불리한경우 . 분포도차이가 클때
인덱스머지가 유리한경우. 분포도차이가 적을때, 부분범위처리


Posted by 빨강토끼
,

개발자의 코드

독서/독서 2014. 4. 28. 15:37



카 와이 청 지음

상동도서관에서 빌림

2014년 4월 19일 ~ 4월 26일


02.은유

코팅을 할 시간을 자주 가져라.

오래된 코드는 주석처리하지말고 버려라.

다양성을 가져라.


03. 동기

특혜는 연봉에 있지 않고 일에 있다. 먼가를 아름답게 만들 수 있는 것에 동기를 부여하라.

시작하고 싶은 곳에서 시작하라.
- 가장 흥미로운 지점부터 바로 시작하라. 맨 처음부터 굳이 써내려 가려고 하지 마라. 나중에 리팩토링을 통해 품질을 개선 할 수 있다.

코드를 작성하기 전 아침에 소프트웨어를 테스트하라, 그 때가 가장 생생할 때이다.

침실 밖에서 일하라.
- 파킨스의 법칙  
"일은 일을 완료하기 위해 주어진 가용한 시간만큼 확장되는 경향이 있다. “

론칭자체는 별로 중요하지 않지만, 론칭날짜가 있는 것은 동기부여에 막강한 효과를 가져다준다.
합리적인 선에서 가능한 한 빨리 소프트웨어를 론칭하라.


04.생산성

마음대로 할 수 있어도, 마감일을 정하라.

훌륭한소프트웨어를 개발하기 원한다면 한도를 정하고 그것을 지켜라.

일정 수립시 세부사항은 잘라내고, 주기적으로 눈에 보이는 결과를 확인 할 수 있는 큰 덩어리로 일정을 잡아라.

매일 두 가지씩 제품을 개선 하라.

To-Do List 를 정리하라.

팀에 ‘일시 활동 중단 시간’을 만들어라.

작고 자율적인 팀에서 일하라.

생산성에서 ‘우리’를 제거하라.


05. 복잡성

코딩하기 어려운 것이 사용하기 어렵다. 단순한 로직을 유지하라.

너무 빠른 리팩토링의 위험하다. 너무 앞서가서 리팩토링을 하지마라.
설계패턴은 애플리케이션이 가까운 미래에 꼭 일어날 것 같은 업무에 필요한 정도로만 구현되어야한다.

예측하라, 하지만 주의 깊에 예측하라. 단지 작은 변화이든 큰 패턴 작업이든, 리팩토링의 결정에 따른 각각의 장단점을 주지하라.


06. 고객
서비스보다는 제품에 대한 비용을 청구하자
개발시간이 두번째 구축할때가 당연히 덜들겠지만 두번째고객에게도 그제품은 동일한가치가 있다. 대신 유연성, 전문성을 더 개선한것으로 정당화할수있고 오히려 더 높은 가격을 요구할 수도 있다


Posted by 빨강토끼
,

현재 Quartz 는 버젼이 2.2.1 까지 릴리즈됐음 (2013년 9월 24일)


JDK 1.6에서 빌드되어서 배포중 이다.


JAVA 1.5 에서 시스템을 운영중이라면 Quartz 1.7.3 이전버젼을 사용해야된다.

http://quartz-scheduler.org/downloads



Posted by 빨강토끼
,

절차형이 아니고 집합적적으로 생각하라.


정적 파티션과 동적파티션

정적파티션이 흔히 말하는 파티셔닝 테이블이다.


Skew 현상
데이터의 대량 삭제시 인덱스구조가 한쪽으로 쏠리는 현상

정기적으로 리빌드해주는것을 추천


블럭체이닝

다이나믹SQL , 스태틱SQL

스태틱SQL은 매번 SQL을 파싱하여 최적화하는 단계를 거침

다이나믹 SQL 은 컬럼등을 변수처리하여 파싱 및 최적화 단계를 건너뜀


Redo log

DB 장애등의 원복시 사용, Rollback 때도 아마 사용


http://www.techonthenet.com/sql/index.php

http://www.techonthenet.com/oracle/index.php

공부해올것


Posted by 빨강토끼
,

DB 솔루션은 개발자가 직접 작업을 컨트롤 하지 못한다.

다만 SQL 이라는 언어를 통하여 DB 솔루션과 대화를 하며 개발자가 원하는 데이터를 요청하고

응답 받을 있다.

 

이해를 쉽게 하기 위하여 도서관을 DB 솔루션이라고 가정하고

도서를 대여하기 원하는 우리를 개발자로 가정을 하고 설명을 하겠다.

그리고 도서관은 우리가 직접 서고로 찾아가서 책을 찾지 못하고

사서에게 자신이 원하는 책을 말하고 사서가 책을 서고에서 찾아서 도서를 대여해 준다.

 

우리는 도서관에 가서 원하는 책을 찾으려고 한.

우리가 원하는 책을 가장 빨리 사서를 통하여 찾는 방법은 바로

도서관의 책에 부여하는 도서 일련번호를 바로 말하는 것이다..

 

도서관은 도서들만의 유일한 코드를 가지고 있고

도서일련번호순서대로 도서를 관리하고 있으므로

도서일련번호만 말하면 사서는 바로 책을 잦아서 우리에게 대여를 해줄 있다.

이것이 쉽게 말하면 오라클의 rowid 이해할 있다.

 

다음으로는 대분류(장르) 소분류(세부장르) 구별된 사항과 책의 이름을 말하는 것이다.

물론 출판사나 저자의 이름도 유용하다.

 

장르, 세부장르, 출판사, 저자 들은 인덱스로 이해할 있다.

 

책의 색깔이나 페이지수 등은 책의 특징이라고 있다.

 

그렇다면  PK 무엇일까?

도서일련번호와는 다르게 도서관에서 분류 이해를 쉽게 하기 위하여

역시 책마다 유일하게 정의할 있도록 도서코드

( 예를 들어 대분류-소분류-출판사-출판사별책순서) 부여해 놓은 것이라고 있다.


# 도서코드

 o 대분류

 o 소분류

 o 도서이름

 o 저자

 o 출판사

 o 표지색상

 o 페이지수

 o 출판일

 o 대출횟수


 

그러면 옵티마이저는 무엇일까?

우리가 사서에게 대여를 원하는 책을 말할때

이렇게 수가 있겠다.

(당연히 책의 일련번호나 도서코드를 모르는 상태에서)

 

"빨간색 책인데요. 패이지수는 250페이지입니다.

도서이름은 인간관계론 입니다자기개발서적이구요.

아참! 저자는 데일 카네기입니다."


SELECT * FROM 도서

WHERE 표지색상='빨간색' 

  AND 페이지수=250 

  AND 도서이름='인간관계론'

  AND 소분류='자기개발'

  AND 저자='데일 카네기'


말을 듣고 만일 사서가 무식하게 도서관의 모든 책을 하나씩 보면서

  1. 표지색상: 빨간색
  2. 페이지수 : 250 페이지
  3. 도서이름 : 인간관계론
  4. 소분류 : 자기개발
  5. 저자 : 데일 카네기

위와 같은 순서로 책을 찾는다면 우리는 엄청난 시간을 사서가 책을 찾아오기까지 기다려야  것이다.

 

하지만 영리한 사서는 아마도 아래와 같은 순서대로 찾을 찾으려고 할것이다.

  1. 소분류 : 자기개발
  2. 저자 : 데일 카네기
  3. 도서이름 : 인간관계론
  4. 표지색상 : 빨간색
  5. 페이지수 : 250 페이지

 

보다 경험이 많은 사서는

  1. 소분류 : 자기개발
  2. 표지색상 : 빨간색 (빨간색 책은 몇권 안되므로)
  3. 도서이름 : 인간관계론 (저자보다 책이름이 크게 보임)
  4. 저자 : 데일 카네기
  5. 페이지수 :250 페이지

 

첫번째 사서는 교육시간에 배운 매뉴얼대로 찾은 것이고 (룰기반 옵티마이저)

두번째 사서는 오랜 경험으로 나름의 방법을 사용하는 찾는것 이다.(비용기반 옵티마이저)


그렇지만 결국에는 아무리 도서관 사서가 똑똑해도 우리가 도서를 대여할 정확하게 내가 찾고자 하는

책을 설명해줘야 된다는 것이다.

 

" 책이 제목이 인간.. 머였는데 두꺼웠어요. 아마 200 페이지는 넘을 거에요.

빨간색이였던건 기억나요. 저자는 외국인 이였어요."

 

SELECT * FROM BOOK

WHERE 도서이름 LIKE '인간%'

  AND 페이지수 > 200

  AND 표지색상 = 'red'


 

이렇게 말하면 사서도 고생 여러분도 고생이다.

Posted by 빨강토끼
,