Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

Similar documents
SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

13주-14주proc.PDF

10.ppt

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Tina Admin

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

ALTIBASE HDB Patch Notes

90

FlashBackt.ppt

Microsoft PowerPoint - 10Àå.ppt

MySQL-.. 1

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

DBMS & SQL Server Installation Database Laboratory

TITLE

untitled

SQL Tuning Business Development DB

문서 템플릿

歯sql_tuning2

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

歯PLSQL10.PDF

Microsoft Word - SQL튜닝_실습교재_.doc

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

MS-SQL SERVER 대비 기능

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

휠세미나3 ver0.4

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

Microsoft Word - PLSQL.doc

PowerPoint 프레젠테이션

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

Tablespace On-Offline 테이블스페이스 온라인/오프라인

K7VT2_QIG_v3

윈도우시스템프로그래밍

<4D F736F F D203033C6C4C6BCBCC72DB8AEBFC0B1D7B9E6B9FD2E646F63>

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft Word - 기술노트[19회] Flashback.doc

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

<32B1B3BDC32E687770>

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

6자료집최종(6.8))

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Jerry Held


강의 개요

Spring Boot/JDBC JdbcTemplate/CRUD 예제

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

윈백및업그레이드 Tibero Flashback 가이드

ePapyrus PDF Document

PowerPoint Presentation

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

untitled

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

APOGEE Insight_KR_Base_3P11

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

- 이 문서는 삼성전자의 기술 자산으로 승인자만이 사용할 수 있습니다 Part Picture Description 5. R emove the memory by pushing the fixed-tap out and Remove the WLAN Antenna. 6. INS

Mango220 Android How to compile and Transfer image to Target

PowerPoint 프레젠테이션

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Microsoft PowerPoint - 27.pptx

Tina Admin


Microsoft PowerPoint Python-DB

歯815설치1.PDF

슬라이드 1

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

step 1-1

DocsPin_Korean.pages

H3050(aap)

DW 개요.PDF

CONTENTS January 2008, VOL IP Report 59 IP Column 101 IP Information 123 IP News

Chapter 1

Ç¥Áö-¸ñÂ÷

thesis

ORACLE EXADATA HCC 압축방식이해하기 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 시간이지나면서데이터는급속하게증가하고있다. 데이터가증가함에따라 DBMS 에서관리되어지는정보도급속하게증가하고있다. 이로인해저장공간의부족으로하드웨어비용의증가와데이터처리성능에많은문제점들

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

RDB개요.ppt

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

MySQL-Ch10

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

6장. SQL

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

Relational Model

Simplify your Job Automatic Storage Management DB TSC

슬라이드 제목 없음

용어사전 PDF

목 차

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

Oracle Database 10g: Self-Managing Database DB TSC

PowerPoint Presentation

Tina Admin

개요 AXSR5 레코더에 연결 시 NEXFS700 전용 RAW 포맷으로 변환되어 AXSR5 에서 녹화됩니다(PMWF55, F65 용 RAW 포맷과 다름). 또한 이 제품의 간단한 플레이백 기능을 사용하여 AXSR5에서 레코딩 된 비디오를 볼 수 있습니다. 플레이백 되는

5장 SQL 언어 Part II

Transcription:

특정 Column 통계정보갱신가이드 유니원아이앤씨 DB 사업부이대혁 2015 년 03 월 02 일 문서정보프로젝트명서브시스템명 버전 1.0 문서명 특정 Column 통계정보갱신가이드 작성일 2015-03-02 작성자 DB사업부이대혁사원 최종수정일 2015-03-02 문서번호 UNIONE-201503021500-LDH 재개정이력 일자내용수정인버전 문서배포이력 발신자수신자배포목적일자비고 유니원아이앤씨 특정 Column 통계정보갱신가이드 2015-03-02.

Table of Contents 1 개요... 3 2 테스트계정접속... 3 2.1 테스트계정접속... 3 2.2 테스트용테이블생성... 4 2.3 생성된테이블에데이터생성... 5 2.4 생성된테이블통계정보확인... 6 2.5 TEST 테이블통계정보생성... 7 2.6 새로운컬럼추가... 7 2.7 추가된컬럼에데이터값입력... 8 3 추가된컬럼통계정보생성... 9 3.1 ID3 Column만통계정보생성... 9 4 참고자료... 10 APPLIES TO:... 11 GOAL... 11 SOLUTION... 11 2/13

1 개요 특정컬럼에대해서만통계정보를갱신하는방법을소개하는문서입니다. 테스트에서는테이블에데이터를생성후특정컬럼을추가한뒤해당컬럼만갱신하여확인합니다. 2 테스트계정접속 테스트계정은 Scott 유져로진행하도록하겠습니다. 2.1 테스트계정접속 SQL> conn scott/tiger Connected. SQL> SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------------------------------------------------------------- -------------- ---------- DEPT EMP BONUS SALGRADE DUMMY 3/13

2.2 테스트용테이블생성 SQL> SQL> CREATE test 2 ( id1 NUMBER(20) 3, id2 NUMBER(20) 4, cont VARCHAR2(20) 5 ); Table created. SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------------------------------------ -------------- ---------- DEPT EMP BONUS SALGRADE DUMMY TEST TEST 테이블을생성합니다. 4/13

컬럼은 id1, id2, cont 3 개의컬럼을 Varchar2 형태로생성하였습니다. 2.3 생성된테이블에데이터생성 SQL> SQL> DECLARE x NUMBER := 100; BEGIN FOR i IN 0..80100 LOOP IF MOD(i,2) = 0 THEN -- i is even INSERT INTO test VALUES (i, x, 'i is even'); ELSE INSERT INTO test VALUES (i, x, 'i is odd'); END IF; x := x + 100; END LOOP; COMMIT; END; / PL/SQL procedure successfully completed. procedure 를이용하여데이터 80100 건입력 5/13

2.4 생성된테이블통계정보확인 SQL> set lines 200 SQL> column COLUMN_NAME format a5 heading COL SQL> column NUM_DISTINCT format 99990 SQL> column LOW_VALUE format 99990 SQL> column HIGH_VALUE format 99990 SQL> column NUM_BUCKETS format 99990 SQL> column SAMPLE_SIZE format 99990 SQL> col LOW_VALUE for a20 SQL> col HIGH_VALUE for a20 SQL> SQL> select COLUMN_NAME,NUM_DISTINCT,LOW_VALUE,HIGH_VALUE,DENSITY,NUM_NULLS, 2 NUM_BUCKETS,LAST_ANALYZED,SAMPLE_SIZE,HISTOGRAM 3 from user_tab_columns 4 where table_name = 'TEST' ; COL NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE HISTOGRAM -------- --------------------- -------------------- ------------------- -------------- ------------------- ---------------------- ------------------------- ----------------- -------------------------- ID1 ID2 CONT NONE NONE NONE 테이블생성후데이터값을입력하였으나통계정보와 HISTOGRAM 없음을확인할수있습니다. 6/13

2.5 TEST 테이블통계정보생성 SQL> exec DBMS_STATS.GATHER STATS (NULL,'TEST', method_opt => 'FOR ALL COLUMNS SIZE 1'); PL/SQL procedure successfully completed. 통계정보생성완료 SQL> select COLUMN_NAME,NUM_DISTINCT,LOW_VALUE,HIGH_VALUE,DENSITY,NUM_NULLS, 2 NUM_BUCKETS,LAST_ANALYZED,SAMPLE_SIZE,HISTOGRAM 3 from user_tab_columns 4 where table_name = 'TEST' 5 / COL NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE HISTOGRAM ---------- -------------------------- ------------------------------------- ----------------------- ----------------- -------------------- -------------------------- ---------------------------- --------------------- ------------------------- ID1 80101 C106 C3090161.000012484 0 1 2015-02-07:01:34:49 80101 NONE ID2 80101 C207 C4090162.000012484 0 1 2015-02-07:01:34:49 80101 NONE CONT 2 69206973206576656E 69206973206F6464 5 0 1 2015-02-07:01:34:49 5482 NONE 통계정보생성후재확인결과통계정보와 HISTOGRAM 이생성된것을확인할수있습니다. 2.6 새로운컬럼추가 현재 TEST 테이블은 ID1, ID2, CONT 컬럼밖에존재하지않으며새로운컬럼 ID3 을추가합니다. SQL> alter table test add (id3 char(1)); 7/13

Table altered. SQL> desc test Name Null Type ------------------------ ------------ ------------------------------- ID1 NUMBER(20) ID2 NUMBER(20) CONT VARCHAR2(20) ID3 CHAR(1) ID3 컬럼이추가되었음을확인가능합니다. 2.7 추가된컬럼에데이터값입력 추가된 ID3 컬럼의데이터를입력후통계정보를확인합니다. SQL> update test set id3='y' where id1<=50000; 50001 rows updated. SQL> update test set id3='n' where id1>50000; 30100 rows updated. SQL> commit; Commit complete. SQL> select COLUMN_NAME,NUM_DISTINCT,LOW_VALUE,HIGH_VALUE,DENSITY,NUM_NULLS, 8/13

2 NUM_BUCKETS,LAST_ANALYZED,SAMPLE_SIZE,HISTOGRAM 3 from user_tab_columns 4 where table_name = 'TEST' 5 / COL NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE HISTOGRAM --------- -------------------------- ---------------------------- ------------------------------ ----------------- --------------------- --------------------------- ---------------------------- ----------------------- ------------------------ ID1 80101 C106 C3090161.000012484 0 1 2015-02-07:01:34:49 80101 NONE ID2 80101 C207 C4090162.000012484 0 1 2015-02-07:01:34:49 80101 NONE CONT 2 69206973206576656E 69206973206F6464.5 0 1 2015-02-07:01:34:49 5482 NONE ID3 NONE ID3 컬럼에만여전히통계정보가없음을확인하실수있습니다. 3 추가된컬럼통계정보생성 3.1 ID3 Column 만통계정보생성 SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, method_opt=>'for columns <column_name>') Syntax 구문은위와같습니다. SQL> exec dbms_stats.gather_table_stats(null, 'TEST', cascade=>false, method_opt=>'for columns ID3'); PL/SQL procedure successfully completed. 9/13

통계정보확인 SQL> select COLUMN_NAME,NUM_DISTINCT,LOW_VALUE,HIGH_VALUE,DENSITY,NUM_NULLS, 2 NUM_BUCKETS,LAST_ANALYZED,SAMPLE_SIZE,HISTOGRAM 3 from user_tab_columns 4 where table_name = 'TEST' 5 / COL NUM_DISTINCT LOW_VALUE HIGH_VALUE DENSITY NUM_NULLS NUM_BUCKETS LAST_ANALYZED SAMPLE_SIZE HISTOGRAM --------- -------------------------------- ---------------------------- --------------------------- ---------------- ---------------------- --------------------------- ---------------------------- ------------------------ ------------------ ID1 80101 C106 C3090161.000012484 0 1 2015-02-07:01:34:49 80101 NONE ID2 80101 C207 C4090162.000012484 0 1 2015-02-07:01:34:49 80101 NONE CONT 2 69206973206576656E 69206973206F6464.5 0 1 2015-02-07:01:34:49 5482 NONE ID3 0 0 80101 0 2015-02-07:01:56:18 NONE 통계정보의 LAST_ANALYZED 시간확인시 ID3 컬럼의통계정보만갱신됨을확인 4 참고자료 Metalink 참조문서 How To Quickly Add/Remove Column Statistics (Histograms) For A Column ( 문서 ID 390249.1) In this Document 10/13

Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 8.1.7.4 and later PeopleSoft Enterprise PT PeopleTools - Version 8.54 to 8.54 [Release 8.4] Information in this document applies to any platform. GOAL In some situations it is necessary to quickly add or remove histograms from a particular column (also known as column statistics.) This article shows how to accomplish this with one command. The commands given in this article will not affect column statistics currently gathered for other columns, they will only touch the specified column. Column statistics can be: - so called minimal consisting of just 1 bucket (2 endpoints) with min/max value information required by the Optimizer - histograms with between 2 and 254 buckets (3 and 255 endpoints respectively) - absent with no column information recorded in the data dictionary (not normally recommended) SOLUTION Assuming you are connected as the owner of the table. To add column statistics use one of the following varieties: using up to the default number of buckets 75: SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, meth od_opt=>'for columns <column_name>'); 11/13

using the appropriate number of buckets for the data distribution (will be minimal when not skewed) : SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, meth od_opt=>'for columns <column_name> size skewonly'); using maximum number of buckets (up to 254) : SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, meth od_opt=>'for columns <column_name> size 254'); using up to specified number of buckets N (N is between 2 and 254) : SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, meth od_opt=>'for columns <column_name> size N'); gathering statistics for multiple columns with different bucket sizes : SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, method_opt => 'for columns size N <column_name1>,<column_name2> for columns size M <column_name3>,<column_name4>'); gathering statistics for multiple columns with different bucket sizes plus minimal information for the remaining columns: SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, meth od_opt => 'for all columns size 1 for columns size N <column_name1>,<column_name2> for columns size M <column_name3>,<column_name4>'); To delete histograms from a column leaving behind base column statistics i.e. minimal information required for the Optimizer (this is for pre-oracle11g versions:) SQL> exec dbms_stats.gather_table_stats(null, '<table_name>', cascade=>false, method_opt= >'for columns <column_name> size 1'); To completely erase all types of column statistics/histograms for a column including minimal statistics: 12/13

SQL> exec dbms_stats.delete_column_stats(null, '<table_name>', '<column_name>'); This is generally not recommended as the Optimizer needs at least the minimal (size 1) information. In Oracle11g there is new syntax to delete the histogram for a column while still leaving behind the base column statistics: SQL> exec dbms_stats.delete_column_stats(null, '<table_name>', '<column_name>', col_stat_type=>'histogram'); Additionally there is functionality to delete histograms for a partition: exec dbms_stats.delete_column_stats(ownname=>'<owner>',tabname=>'<table_name>', colname=>'<column_name>',partname=>'<partition_name>', col_stat_type=>'histogram') and to delete column histograms for the table and all its partitions: exec dbms_stats.delete_column_stats(ownname=>'<owner>',tabname=>'<table_name>', colname=>'<column_name>',cascade_parts=>true,col_stat_type=>'histogram') 13/13