면접 - 데이터베이스 29

개발자 면접 질문 - like 검색 문제점

1. 문제점 - like 검색은 인덱스를 사용하지 않기 때문에 속도가 느리다. - 풀 스캔이 일어난다. - mysql 같은 경우 full-text검색으로 대체할 수 있다. - oracle일 경우 text기능을 사용해서 도메인 인덱스를 사용한다. 2. 해결 방법 - 별도의 인덱스를 구성 : 공백을 기준으로 단어들을 나누어 테이블 키와 함께 별도의 인덱스 테이블 구성 - 별도 검색엔진 사용 - 앞에 %를 쓰지 않고 사용 ex) '%야호%' -> '야호%'

개발자 면접 질문 - MaxActive보다 MaxIdle이 적을 경우

1. MaxActive 10 / MaxIdle 5 일때 - 기본적으로 maxActive와 maxIdle값은 같은 것이 바람직하다. - MaxActive = 10이고 MaxIdle = 5일 경우 항상 커넥션을 동시에 5개 사용하고 있는 상황에서 1개의 커넥션이 추가로 요청되면 maxActive = 10이므로 1개의 추가 커넥션을 db에 연결한 후 풀은 비지니스 로직으로 커넥션을 전달한다. 이후 비즈니스 로직이 커넥션을 풀에 반납한 경우 커넥션은 maxIdle=5 (항상 5개만 유지)에 영향을 받아 커넥션을 실제로 닫아 버리므로 일부 커넥션이 매번 생성되었다 닫혔다 하는 비용이 발생된다.

DB virtual table (데이터베이스 가상 테이블)

1. 가상 테이블 - 트랜잭션이 끝나거나 세션이 끝나는 시점에 초기화된다. - 다른 사용자와 테이블 공유가 불가능하다. - ON COMMIT DELETE ROWS : 커밋되면 모두 삭제되는 옵션 - ON COMMIT PRESERVE ROWS : 세션이 종료되어야 테이블의 데이터가 삭제 CREATE GLOBAL TEMPORARY TABLE TEMP01 ( NO NUMBER, NAME VARCHAR2(10) ) ON COMMIT DELETE ROWS; 2. 테이블 모든 컬럼 복사해서 생성하기 CREATE TABLE DEPT3 AS SELECT *FROM DEPT2; 3. 테이블 특정 컬럼 복사해서 생성하기 CREATE TABLE DEPT4 AS SELECT DCODE, DNAME FROM DEPT2; 4. ..

DB Constraint(데이터베이스 제약 조건)

1. 참조키 인덱스 - 만약 부모테이블에 데이터가 1억건 있고 자식 테이블에 데이터를 1건 입력하려면 부모테이블에 1억건의 데이터를 전부를 검색합니다. - 부모 테이블 컬럼과 자식 테이블 컬럼 양쪽에 적절한 인덱스가 생성되어 있어야 참조키 제약 조건의 성능이 좋아집니다. 2. 제약 조건 생성 CREATE TABLE EMP3 ( NO NUMBER(4) CONSTRAINT EMP3_NO_PK PRIMARY KEY, NAME VARCHAR2(10) CONSTRAINT EMP3_NAME_NN NOT NULL, JUMIN VARCHAR2(13) CONSTRAINT EMP3_JUMIN_NN NOT NULL CONSTRAINT EMP3_JUMIN_UK UNIQUE, AREA NUMBER(1) CONSTRAINT EM..

DB View (데이터베이스 뷰)

1. View 생성 CREATE OR REPLACE VIEW V_PROF AS SELECT PROFNO, NAME, EMAIL, HPAGE FROM PROFESSOR; 2. Join으로 View 생성 CREATE OR REPLACE VIEW V_PROF_DEPT AS SELECT P.PROFNO "교수", P.NAME "교수명", D.DNAME "소속학과명" FROM PROFESSOR P, DEPARTMENT D WHERE P.DEPTNO = D.DEPTNO; 3. inline View SELECT D.DNAME "학과명", S.MAX_HEIGHT "최대키", S.MAX_WEIGHT "최대 몸무게" FROM (SELECT DEPTNO1, MAX(HEIGHT) MAX_HEIGHT, MAX(WEIGHT) M..

DB index(데이터베이스 인덱스)

1. UNIQUE INDEX - 중복 값이 입력될 경우 에러가 발생합니다. CREATE UNIQUE INDEX IDX_DEPT2_DNAME ON DEPT2(DNAME ASC); 2. NON UNIQUE INDEX - 중복 값 입력이 가능합니다. CREATE INDEX IDX_PROF_POSITION ON PROFESSOR(POSITION DESC); 3. FUNCTION BASED INDEX - WHERE 절에 오는 조건 컬럼에서 PAY + 100 같은 연산으로 조건을 사용할 때 사용합니다. (이 방식은 임시 해결책입니다.) CREATE INDEX IDX_PROF_PAY_FBI ON PROFESSOR(PAY + 100); 4. DESCENDING INDEX - 계좌 조회 같은 주로 최근 날짜부터 검색을 ..