일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클래스
- 카카오코딩테스트
- 인덱스
- SQLP
- 컬렉션프레임워크
- java
- 메소드
- 인스턴스
- 오라클
- DBA
- 친절한 SQL 튜닝
- 생성자
- 인덱스 튜닝
- 백준
- 서버
- db버퍼캐시
- DB
- 깃허브
- Spring
- 상속
- springboot
- Oracle
- 자바
- socket
- SQL
- Undo
- 친절한 sql튜닝
- 클라이언트
- 멀티쓰레드
- Swing
- Today
- Total
목록분류 전체보기 (89)
프리 정보 컨텐츠

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); 다만, 이렇게 할 경우 기존 인덱스 추가 방식 보다는 훨씬 더 오랜 시간동안 인덱스 추가 작업이 진행되는 점을 유의해야 합니다.

Undo 세그먼트트랜잭션이 발생시킨 테이블과 인덱스에 대한 변경사항들이 Undo 레코드 단위로 Undo 세그먼트에 기록된다.Redo는 데이터베이스의 변경 사항을 로깅하는 부분Undo는 각 트랜잭션이 가한 변경 사항을 로깅하는 부분Undo1. 일반 세그먼트와 동일하다.Extend 단위로 확장된다.버퍼 캐시에 데이터를 캐싱한다.변경사항을 Redo 로깅한다.2. 트랜잭션 별로 Undo 세그먼트가 할당된다.변경 사항이 Undo 레코드 단위로 기록된다.복수 트랜잭션이 한 Undo 세그먼트를 공유할 수 있다.(트랜잭션 : Undo 세그먼트) = (N : 1)Undo 세그먼트 특징1. 일반 세그먼트와 동일하다.Extend 단위로 확장된다.버퍼 캐시에 데이터를 캐싱한다.변경사항을 Redo 로깅한다.2. 트랜잭션 별로 ..

애드센스 고단가 키워드 블로그에 애드센스 광고를 활용하여 수익을 얻는 블로거분들이라면 애드센스 고단가 키워드를 찾는 것은 아주 중요합니다. 아무리 양이 많은 블로그 포스팅을 해도 애드센스에 고단가 키워드가 아닌 저단가 키워드만 사용한다면 고수익을 기대하기는 어렵습니다...!!간단 요약하자면 고단가 키워드는 광고주가 높은 비용을 지불하는 주제와 관련이 있습니다. (주로 비용이 높은 주제는 금융 쪽 예상합니다..)이러한 고단가 키워드의 주제와 주제속에서도 단가가 높은(광고주가 높은 비용을 지불하는 키워드) 키워드만 찾아서 포스팅한다면 높은 애드센스 수익을 기대할 수 있습니다.어떻게 애드센스 고단가 키워드를 찾을지 모르겠다 하시는 분이면 개인적으로 아래에 있는 웹프로그램인 키워드 시터를 추천드립니다. (사용법..

Redo모든 변경사항을 Redo 로그에 기록하며 데이터베이스를 복구할 때 사용한다.Online Redo 로그Redo 로그 버퍼에 버퍼링된 로그 엔트리를 기록한다.최소 두 개 구성되어 라운드 로빈 로그 스위칭이 발생한다.Archived Redo 로그Online Redo 로그 파일이 재사용 되기 전 다른 위치로 저장되는 백업본이다.미디어 파일 복구시 사용된다.Redo 목적Database RecoveryMedia Fail 발생 후 복구시 Archived Redo 로그를 활용한다.Cached Recovery휘발성의 버퍼 캐시 데이터를 복구하기 위해 Redo 로그를 사용한다.데이터 파일에는 Commit 된 변경 사항만 존재한다.Fast CommitCommit 시 데이터 Block 쓰기 대신 Redo 쓰기를 한다...

7장 SQL 옵티마이저7.1.1 선택도와 카디널리티선택도선택도란 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율이며 가장 단순한 '=' 조건으로 검색할 때의 선택도를 보면 컬럼 값 종류 개수(NDV) 를 이용해 아래와 같이 구한다.선택도 = 1 / NDV 카디널리티카디널리티란, 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수이며 아래와 같이 구한다.카디널리티 = 총 로우수 * 선택도 = 총 로우 수 / NDV-- 예를 들어 상품분류 컬럼에 가전, 의류, 식음료, 생활용품 네 개의 값이 존재-- 조건절에 대한 선택도는 25%이며, 전체 레코드가 10만건이면 카디널리티는 2만 5천이다.옵티마이저는 이렇게 카디널리티를 구하고, 그만큼의 데이터를 액세스하는데 드는 비용을 계산해서 테이블 액세스 방..

6장 DML 튜닝6.1.1 DML 성능에 영향을 미치는 요소인덱스무결성 제약조건절서브쿼리Redo 로깅Undo 로깅Lock커밋인덱스와 DML성능테이블에 레코드를 입력하면 인덱스에도 입력해야 한다.인덱스는 정렬된 자료구조이므로 수직적 탐색을 통해 입력할 블록을 찾아야하므로 DML 성능에 미치는 영향도 더 크다.INSERT, DELETE는 테이블에서 레코드를 모두 찾아 삽입, 삭제해 줘야 한다. UPDATE할 때는 변경된 컬럼을 참조하는 인덱스만 찾아서 변경해 주면 된다.간단한 100만개 레코드를 만든 테이블에서 인덱스를 1개 추가 할 때마다 8배가 느려진다. 이를 통해 인덱스 하나라도 줄이면 TPS(Transaction Per Second)는 그만큼 향상된다는 것을 의미한다.무결성 제약과 DML 성능PK, ..