검색결과 리스트
실행계획 에 해당되는 글 5건
- 2009/11/15 콘솔의 내용을 파일로 자동저장하기
- 2009/07/13 [실행계획 읽기] 1. PLAN_TABLE 생성하기
- 2009/01/05 오라클 실행계획 보기
- 2008/12/31 CBO와 관련된 잘못된 편견
- 2008/11/24 비용기준 옵티마이저 (Cost_based Optimizer)
2009/11/15 09:56
콘솔의 내용은 개발을 하면서 빼놓을 수 없는 중요한 정보입니다.
요즘 여러 디버깅 툴들이 나와있지만 그래도 아직은 콘솔을 보지 않고 개발하기는 어렵습니다.
그런데 이 콘솔의 내용을 파일로 저장하고 싶어하는 분들이 많이 계십니다.
그래서 제가 예전에 사용하던 방법을 올립니다.
사실 저도 프로젝트를 하면서 얻은 지식입니다. ^^;;
@ECHO OFF TITLE Console2File set LOG_DIR=.\nohup set PREFIX=%DATE:~4%_%TIME:~0,-3% set PREFIX=%PREFIX::=% set PREFIX=%PREFIX:-=% set PREFIX=%PREFIX: =0% ren %LOG_DIR%\nohup.out nohup.out.%PREFIX% start /B startup.bat > %LOG_DIR%\nohup.out 2>&1 set LOG_DIR=.\nohup set PREFIX=%DATE:~4%_%TIME:~0,-3% set PREFIX=%PREFIX::=% set PREFIX=%PREFIX:-=% set PREFIX=%PREFIX: =0% ren %LOG_DIR%\nohup.out nohup.out.%PREFIX% start /B startup.bat > %LOG_DIR%\nohup.out 2>&1 set PREFIX=%DATE:~4%_%TIME:~0,-3% set PREFIX=%PREFIX::=% set PREFIX=%PREFIX:-=% set PREFIX=%PREFIX: =0% ren %LOG_DIR%\nohup.out nohup.out.%PREFIX% start /B startup.bat > %LOG_DIR%\nohup.out 2>&1 ren %LOG_DIR%\nohup.out nohup.out.%PREFIX% start /B startup.bat > %LOG_DIR%\nohup.out 2>&1 start /B startup.bat > %LOG_DIR%\nohup.out 2>&1
- 위 내용을 nohup.cmd(혹은 nohup.sh)로 저장 후 bin 폴더에 넣어주세요.
- nohup.cmd 실행파일 위치에서 nohup폴더를 만들고 그 안에 nohup.out 파일을 만들어 주세요.
- tomcat 최신버전의 경우 startup.bat의 57라인의 start를 run으로 바꿔주세요.
- startup.bat 대신에 nohup.cmd를 실행합니다.
실행을 하게되면 현재 실행되고 있는 콘솔의 내용은 nohup.out파일에 실시간으로 기록되게 됩니다.
그리고 서버를 내렸다가 다시 올리게 되면 기존의 내용은 'nohup.out.날짜_시간'으로 저장되게 됩니다.
이 방법은 콘솔의 내용을 간단하게 파일로 저장할 수 있지만 단점은 파일의 용량을 제한해서 분할할 수 없다는 점이 단점입니다.
실제로 사용해 보면서 100M가 넘는 로그파일이 생기는 경우도 있엇는데 이런 경우 에디터로 파일을 열 경우 상당히 오래걸리고 버벅대게 됩니다. 그럴때는 파일을 나누는 프로그램으로 나눈 후에 보시는 방법을 추천합니다.
혹시라도 다른 방법을 알고 계신분이 계시다면 제보 부탁드립니다.^^
'개발 이야기 > Java' 카테고리의 다른 글
| [Tomcat5] 톰캣 Context 설정하기 (0) | 2010/09/26 |
|---|---|
| [MySQL] MySQL에서 log4sql이 동작하지 않을 때 해결방법 (2) | 2010/03/22 |
| 콘솔의 내용을 파일로 자동저장하기 (0) | 2009/11/15 |
| 제우스에서 log4sql 사용하기 (4) | 2009/07/29 |
| 제 10회 한국자바개발자 컨퍼런스 (0) | 2009/02/19 |
| 프리미티브 타입과 Wrapper 클래스, 자동 Boxing, 자동 UnBoxing (2) | 2009/01/09 |
2009/07/13 20:18
※ 이 글은 "실전 SQL 튜닝" 강의를 듣고 개인적인 의견과 함께 정리한 내용입니다.
실행계획이란 DB가 SQL문을 어떻게 실행할 것인가에 대한 계획입니다. 말 그대로 계획이기 때문에 실제로 SQL문이 실행되었을 때 실행계획과 다른게 실행될 수도 있습니다. 하지만 이런 경우는 거의 보기 힘듭니다. 만약 실행계획과 실행이 다른 것 같다면 Trace를 사용해서 확인 하셔야 합니다.
어렵진 않으니 걱정하지 마세요. 다음 순서대로 따라하시면 됩니다.
만약 sqlplus에 접속하는게 어려우시다면 아래 경로를 찾아서 sql문을 복사해 와서 툴에서 실행시키셔도 됩니다.
만약 파일을 찾지 못했거나 찾기가 힘들면 그냥 아래 sql을 실행하세요.
실행계획이란 DB가 SQL문을 어떻게 실행할 것인가에 대한 계획입니다. 말 그대로 계획이기 때문에 실제로 SQL문이 실행되었을 때 실행계획과 다른게 실행될 수도 있습니다. 하지만 이런 경우는 거의 보기 힘듭니다. 만약 실행계획과 실행이 다른 것 같다면 Trace를 사용해서 확인 하셔야 합니다.
사전 준비
만약 한번도 실행계획을 실행해보지 않으셨다면 먼저 plan_table을 먼저 생성해야 합니다. plan_table이란 실행계획의 결과를 저장하는 테이블입니다. 보통 별도로 테이블을 생성하신 적이 없다면 직접 만들어줘야 합니다.어렵진 않으니 걱정하지 마세요. 다음 순서대로 따라하시면 됩니다.
- sqlplus에 접속합니다.
- '@utlxplan.sql'을 입력하고 엔터~
- 만약 기존의 객체가 이름을 사용하고 있다(ORA-00955)고 나온다면 'drop table plan_table;'을 입력하고 엔터~
- 다시 2번을 실행하세요.
만약 sqlplus에 접속하는게 어려우시다면 아래 경로를 찾아서 sql문을 복사해 와서 툴에서 실행시키셔도 됩니다.
오라클이 설치되어 있는 폴더/rdbms/admin/utlxplan.sql
만약 파일을 찾지 못했거나 찾기가 힘들면 그냥 아래 sql을 실행하세요.
more..
'개발 이야기 > DataBase' 카테고리의 다른 글
| [Oracle 10g XE] CHARACTERSET 바꾸기 (0) | 2010/04/08 |
|---|---|
| [MySQL] GRANT 명령어를 사용해서 사용자 생성하기 (0) | 2010/01/25 |
| [실행계획 읽기] 1. PLAN_TABLE 생성하기 (0) | 2009/07/13 |
| 오라클 SQL to_char 날짜 관련 정리 (0) | 2009/05/22 |
| Cost Based Optimizer의 작동 원리 (0) | 2009/01/08 |
| 오라클 실행계획 보기 (0) | 2009/01/05 |
2009/01/05 08:41
오라클에서 실행계획을 보는 방법은 여러가지가 있습니다. 토드나 오렌지 등의 툴을 이용하면 간편하고 쉽지만 sql만을 사용해서 봐야 하는 경우가 종종 있습니다. 그럴 경우는 다음과 같이 sql을 사용하면 됩니다.
[code]
explain plan for
select * from emp;
[/code]
위와 같이 sql을 사용한 후 아래 sql을 실행시키면 실행계획을 볼 수 있습니다.
[code]
select * from table(dbms_xplan.display);
[/code]
아래와 같은 방법도 있습니다.
[code]
explain plan
set statement_id = 'stmt1' for
select * from emp;
select * from table(dbms_xplan.display('plan_table','stmt1','all'));
select * from table(dbms_xplan.display('plan_table','stmt1','typical'));
select * from table(dbms_xplan.display('plan_table','stmt1','basic'));
[/code]
[code]
explain plan for
select * from emp;
[/code]
위와 같이 sql을 사용한 후 아래 sql을 실행시키면 실행계획을 볼 수 있습니다.
[code]
select * from table(dbms_xplan.display);
[/code]
아래와 같은 방법도 있습니다.
[code]
explain plan
set statement_id = 'stmt1' for
select * from emp;
select * from table(dbms_xplan.display('plan_table','stmt1','all'));
select * from table(dbms_xplan.display('plan_table','stmt1','typical'));
select * from table(dbms_xplan.display('plan_table','stmt1','basic'));
[/code]
'개발 이야기 > DataBase' 카테고리의 다른 글
| 오라클 SQL to_char 날짜 관련 정리 (0) | 2009/05/22 |
|---|---|
| Cost Based Optimizer의 작동 원리 (0) | 2009/01/08 |
| 오라클 실행계획 보기 (0) | 2009/01/05 |
| CBO와 관련된 잘못된 편견 (0) | 2008/12/31 |
| CBO에서의 Cost란? (1) | 2008/12/10 |
| 옵티마이저 모드 (OPTIMIZER MODE) (1) | 2008/11/25 |
2008/12/31 08:15
※ 이 글은 "실전 SQL 튜닝" 강의를 듣고 개인적인 의견과 함께 정리한 내용입니다.
CBO와 관련된 잘못된 편견
- 항상 주기적으로 통계정보를 생성해야 한다.
- sql문의 실행계획은 통계정보가 바뀌면 항상 바뀌는 것은 아니지만 바뀔수도 있습니다. 평소에 잘 돌아가던 sql도 통계정보가 변경됨으로써 실행계획이 바뀌어서 기존보다 느려질 수도 있습니다. 하지만 대부분의 sql은 통계정보를 생성하면 통계정보가 크게 바뀐게 아니라면 기존과 큰 차이가 없을 것입니다. - CBO의 가장 적게 드는 COST가 실제로도 가장 적게 드는 COST인가?
- 위 말을 간단하게 표현하자면 '최적의 실행계획이 실제로도 가장 최적인가?'입니다. 하지만 불행히도 실제로는 100% 맞다고 할 수 없습니다. 이는 CBO가 사용하는 자료가 통계적인 자료이기 때문에 sql과 data에 따라서 달라질 수 있기 때문입니다. - Oracle 10g에서는 RBO를 지원하지 않는다.
- 10g에서는 기본이 CBO 입니다. 그러나 RBO의 기능은 존재합니다. 하지만 RBO에 관한 성능 및 기술지원은 보장하지 못합니다.
'개발 이야기 > DataBase' 카테고리의 다른 글
| Cost Based Optimizer의 작동 원리 (0) | 2009/01/08 |
|---|---|
| 오라클 실행계획 보기 (0) | 2009/01/05 |
| CBO와 관련된 잘못된 편견 (0) | 2008/12/31 |
| CBO에서의 Cost란? (1) | 2008/12/10 |
| 옵티마이저 모드 (OPTIMIZER MODE) (1) | 2008/11/25 |
| 비용기준 옵티마이저 (Cost_based Optimizer) (0) | 2008/11/24 |
2008/11/24 08:43
※ 이 글은 "실전 SQL 튜닝" 강의를 듣고 개인적인 의견과 함께 정리한 내용입니다.
Cost_based Optimizer는 통계정보를 바탕으로 실행계획을 수립한다. 이는 Rule_based Optimizer보다 진보된 방법이지만 옵티마이저가 통계정보를 바탕으로 실행계획을 수립하기 때문에 sql이 작성자 의도대로 실행되지 않는 경우가 있기 때문에 실행계획 예측이 어렵다. 하지만 이런점은 초보자가 작성한 sql이라도 어느정도 성능을 보장해 주는 역할을 하기도 한다.
실제 경험상 Oracle 9i에서 10g로 업그레이드만 했을 뿐인데도 쿼리의 실행 속도가 현저하게 빨라진 경우를 본적이 있다. 둘다 Cost_based Optimizer이긴 하지만 10g의 옵티마이저가 좀더 똑똑하다는(다양한 통계정보를 이용해서 실행계획을 잘 짜는) 이야기다. 이렇게 옵티마이저가 발전할 수록 옵티마이저는 최소한의 성능을 보장해 주고 좀더 빠른 실행속도를 보장해 줄 것이다.
Cost_based Optimizer가 이용하는 통계정보
Cost_based Optimizer는 통계정보를 바탕으로 실행계획을 수립한다. 이는 Rule_based Optimizer보다 진보된 방법이지만 옵티마이저가 통계정보를 바탕으로 실행계획을 수립하기 때문에 sql이 작성자 의도대로 실행되지 않는 경우가 있기 때문에 실행계획 예측이 어렵다. 하지만 이런점은 초보자가 작성한 sql이라도 어느정도 성능을 보장해 주는 역할을 하기도 한다.
실제 경험상 Oracle 9i에서 10g로 업그레이드만 했을 뿐인데도 쿼리의 실행 속도가 현저하게 빨라진 경우를 본적이 있다. 둘다 Cost_based Optimizer이긴 하지만 10g의 옵티마이저가 좀더 똑똑하다는(다양한 통계정보를 이용해서 실행계획을 잘 짜는) 이야기다. 이렇게 옵티마이저가 발전할 수록 옵티마이저는 최소한의 성능을 보장해 주고 좀더 빠른 실행속도를 보장해 줄 것이다.
Cost_based Optimizer가 이용하는 통계정보
- 테이블의 로우 수와 블럭 수
- 블록당 평균 로우 수
- 로우의 평균길이
- 컬럼별 상수값의 종류
- 분포도
- 컬럼내의 NULL값의 수
- 클러스터링 팩터
- 인덱스의 깊이(Depth, Level)
- 컬럼의 최대, 최소값
- 리프(Leaf) 블록수
- 가동 시스템의 I/O, CPU정보
'개발 이야기 > DataBase' 카테고리의 다른 글
| 오라클 실행계획 보기 (0) | 2009/01/05 |
|---|---|
| CBO와 관련된 잘못된 편견 (0) | 2008/12/31 |
| CBO에서의 Cost란? (1) | 2008/12/10 |
| 옵티마이저 모드 (OPTIMIZER MODE) (1) | 2008/11/25 |
| 비용기준 옵티마이저 (Cost_based Optimizer) (0) | 2008/11/24 |
| 규칙 기준 옵티마이저 (Rule_based Optimizer) (0) | 2008/11/24 |
utlxplan.sql