일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Oracle
- 인덱스
- DBA
- 컬렉션프레임워크
- 인스턴스
- Swing
- 클래스
- 깃허브
- DB
- Spring
- java
- 백준
- SQL
- 서버
- 자바
- 친절한 SQL 튜닝
- springboot
- 오라클
- Undo
- socket
- 친절한 sql튜닝
- 클라이언트
- SQLP
- 카카오코딩테스트
- 인덱스 튜닝
- 멀티쓰레드
- 메소드
- 생성자
- 상속
- db버퍼캐시
- Today
- Total
목록DataBase (9)
프리 정보 컨텐츠

PostgreSQL 실행 계획PostgreSQL 17버전에서 실행 계획을 효율적으로 보는 방법과 테스트 데이터로 INDEX 성능 테스트 하는 방법에 대해서 알아보자. EXPLAIN [ ( option [, ...] ) ] statementEXPLAIN [ ANALYZE ] [ VERBOSE ] statement 보통 EXPLAIN 으로 실행계획을 보면 되지만 Datagrip 사용하는 필자는 귀찮아서 단축키 커스텀마이징 설정함 ㅎㅎ 1. 쿼리 실행 계획 순서 보는 방법동일 위치에선 위에서 아래로 실행되며그룹 내에 계층구조에서는 가장 아래부터 시작합니다.실제로 엄청 긴 실행 계획을 보면 어지러우니가장 쉽게 보는 방법은 역시 툴을 사용하는 방법입니다..밑에 링크 들어가서 json 형식이나 실행계획 긁어서 복붙..
아래는 Lock 걸려 있는 상태 조회하는 명령어 입니다.SELECT pid, queryFROM pg_stat_activitywhere state = 'active' and wait_event_type = 'Lock'; 특정 락 종료을 종료시킬 때 조회한 pid를 파라미터 값으로 입력하여 하나하나 종료하고 있었으나SELECT pg_terminate_backend(6450);아래 명령어를 입력하면 현재 Lock 쿼리들 모두 다 취소시킬 수 있습니다.SELECT pg_cancel_backend(pg_stat_activity.pid)FROM pg_stat_activityWHERE state = 'active' and wait_event_type = 'Lock' AND pid pg_backend_pid()..
인덱스 설정시 테이블 Lock 해제PostgreSQL에서는 인덱스를 생성하는 동안에는 해당 테이블에 읽기전용 Lock (잠금)이 적용됩니다.그래서 실제 서비스 운영 중에 인덱스를 적용하게 되면, 조회 기능외에는 작동하지 않아 서비스 장애가 발생할 수 있습니다.그래서 읽기 Lock을 회피하기 위해 CONCURRENTLY 옵션을 추가해서 실행하면 읽기 Lock 없이 인덱스를 추가/삭제 할 수 있습니다.(단, DDL은 여전히 막혀있습니다.)CREATE INDEX CONCURRENTLY idx_pay_1 ON pay (pay_method); 다만, 이렇게 할 경우 기존 인덱스 추가 방식 보다는 훨씬 더 오랜 시간동안 인덱스 추가 작업이 진행되는 점을 유의해야 합니다.

select ASCII('a') r1, chr('65') r2, chr(ASCII('c')) r3, INITCAP('asd erd') r4, INSTR('seexefrxew', 'x', 2) r5, least('2', '3', '5') r6, LENGTH('오라클oracle') r7, lpad('80', 3, '0') r8, lower('AFEISue') r9, TRIM(' AAA ') r10, LTRIM('@@@AAA@@@', '@') r11, RTRIM('@@@BBB@@@', '@') r12, substr('testeeqq', 3) r13, instr(substr('testeeqq', 3), 'e') r14, 'hello' || '-' || 'oracle' r15, substr(lpad('80', 3..

oracle내에서 바인드 변수를 활용하여 입력한 년월의 달력을 표시해준다. 1입력시 짝수 달력, 0입력시 홀수 달력, null을 입력할시에 전체 달력의 월을 표시해주는 달력 실습 select max(DECODE(DID, 1, YMD)) month, min(DECODE(WID, 1, DID)) SUN, min(DECODE(WID, 2, DID)) MON, min(DECODE(WID, 3, DID)) TUE, min(DECODE(WID, 4, DID)) WED, min(DECODE(WID, 5, DID)) THR, min(DECODE(WID, 6, DID)) FRI, min(DECODE(WID, 7, DID)) SAT from ( select to_char(T1, 'YYYY-MM') YMD, extract(..

select ABS(-2) c1, floor(2.3) c2, power(2, 3) c3, sign(1) c4, sign(-1) c5, sqrt(25) c6, trunc(10.232, 1) c7, ADD_MONTHS(to_date('20211104', 'yyyymmdd'), 3) c8, extract(year from sysdate) c9, extract(month from sysdate) c10, extract(day from sysdate) c11, NEXT_DAY('20211224', 4) c12, sysdate c13, trunc(sysdate) c14, last_day(sysdate) c15 from dual;

connect by level과 rownum을 활용한 간단한 예제를 알아보자. oracle에서 connect by level을 사용하면 원하는만큼의 행을 리턴할 수 있어서 주로 날짜를 가져올 때 유용하게 사용한다. select rownum, level as no from dual connect by level

JAVA 이클립스에서 JDBC 드라이버 클래스를 등록하는 방법을 예시로 알아보자. package com.dao; public class Exam1 { public static void main(String[] args) { // OracleDriver 클래스 등록 // 없으면 예외 발생, 즉 등록되어 있지 않으면 예외 발생 // 클래스 풀네임으로 검사 try { Class.forName("oracle.jdbc.driver.OracleDriver"); System.out.println("드라이버 등록 성공"); } catch (ClassNotFoundException e) { System.out.println("드라이버 등록 실패"); e.printStackTrace(); } } } 실행할 프로젝트안에 l..