2016년 8월 22일 월요일

04day SQL tunning

시퀀스
--주의사항 : 시퀀스는 연속된 값을 보장하지 않는다
--공유가능한 객체

--시퀀스 만들기
SQL> create sequence dept_deptno_seq
  2  start with 1
  3  increment by 1
  4  minvalue 1
  5  nocycle
  6  nocache;
--시퀀스 사용
SQL> insert into dept
  2  values(dept_deptno_seq.nextval, 'A','B');
--롤백
SQL> rollback;
--시퀀스 소모
SQL> select dept_deptno_seq.nextval
  2  from emp;

--시간 체크
SQL> set time on

--sql문 저장
19:35:21 SQL> save t1
--host로 잠깐 감
19:35:30 SQL> host
--저장파일 찾기
C:\Users\user>dir t1.sql
--notepad로 파일 열기
C:\Users\user>notepad t1.sql
--다시 sql로 돌아옴
C:\Users\user>exit

--마지막 sql문 1개 저장된것 불러옴
19:37:56 SQL> @t1

--앞으로 화면의 모든내용저장
19:38:14 SQL> spool b1
--저장 마침
19:39:13 SQL> spool off
--host로 가서 파일 확인하고 돌아옴
19:39:50 SQL> host
C:\Users\user>b1.lst
C:\Users\user>exit

--시간보니는것 없앰
19:41:44 SQL> set time off

--명령문 실행시 걸린시간 보임
SQL> set timing on
--취소
SQL> set timing off

**같은 명령을 2번 실행하면 두번째 명령문이 더 빠름, 왜냐하면 테이블이 없으면 읽어오는 작업을 앞에서 수행했기 때문


SGA(system global area)
  • shared pool
    • library cache : sql문장 + 실행계획 보관
  • data buffer cache
    • table에 대한 정보가 올라감
    • cache --임시저장소
    • buffer --속도차이를 극복
  • read log buffer
  • java pool
  • ...
compile : c, java...
Script : javascript , R...

parsing : 컴파일형 언어 아닌것 변환
  1. Syntax check : 문법검사
  2. privilege check :  권한검사
  3. parse form :
  4. parse tree : 옵션을 트리구조로 만듦
  5. execute plan : 명령어 수행 방법 결정 
    • optimizer =최적화기 : db의 가격 대부분 결정 (현존 최고의 AI)
  6. execute

--SYS 접속해서 DB껏다킴
C:\Users\user>sqlplus sys/oracle as sysdba
SQL> startup force
--SCOTT접속해서 명령문 실행
SCOTT>SELECT * FROM DEPT;
--SQL실행문 검색  (EXECUTIONS 명령문 실행횟수)
SQL> SELECT SQL_TEXT, EXECUTIONS
  2  FROM V$SQL
  3  WHERE SQL_TEXT LIKE '%FROM DEPT%';
--SCOTT접속해서 명령문 다시실행
SCOTT>SELECT * FROM DEPT;
--SYS최근 SQL문 다시 실행
SQL> /
--같은 명령문 대소문자 다르게 실행 (SQL문은 대소문자 구분안하지만, DB는 대소문자를 구분함)
SCOTT>Select * FROM DEPT;
--SYS최근 SQL문 다시 실행
SQL> /


**zommit -- 프리젠테이션 보조 도구

--로그인 시
SELECT 1 FROM member WHERE id='qwer' AND pw='123';
--열이름이 아니라 1을 선택하면 1byte이므로 네트웍트래픽을 줄일 수있음
--sql문은 똑같은 id, pw만 달라짐 DB는 다른 명령으로 인식함
--in,pw넣는 자리에 bind변수(PreparedStatement) 물음표를 넣으면 하나의 명령을 재사용 할 수 있음

댓글 없음:

댓글 쓰기