개발자면접질문 110

개발자 면접 질문 - MariaDB 스토리지 엔진 종류

1. MyISAM - 트랜잭션 미지원 - update, delete, insert 수행 시 Table Lock(테이블 락)되어 성능 불리 - 시작, 정지가 빠름 2. InnoDB - 트랜잭션 기능 제공 - 비정상 종료시 복구 기능 제공 - 데이터 갱신이 Row Lock(로우 락) 으로 되어 있음 3. Aria - MyISAM 후속 버전 - 트랜잭션 기능 제공 - 비정상 종료시 복구 기능 제공 - 아직 InnoDB 대체할 정도로 완성되지 않음

개발자 면접 질문 - JOIN 정의

1. JOIN - 정규화 작업으로 인해 여러 개로 나누어진 테이블 사이에서 원하는 정보를 가져오기 위해 테이블 간의 관계 설정 2. 종류 - 크로스조인(Cross Join) : 모든 경우의 수를 전부 표현해주는 방식 - 이너 조인(Inner Join) : 조인이 되는 키 값을 기준으로 교집합 - 셀프 조인(Self Join) : 자기 자신과 자기 자신을 조인, 가지고 있는 컬럼을 다양하게 변형시켜 활용할 때 사용 - 아우터 조인(Outer Join) : 조인이 되는 키 값을 기준으로 기준 테이블 키 값 * LEFT / RIGHT JOIN - SELECT *FROM A LEFT OUTER JOIN B : B테이블에 A테이블과 매핑되는 값이 있건 없건 A 값은 반드시 모두 나온다. - SELECT *FROM..

개발자 면접 질문 - 클러스터링과(Clustering) 리플리케이션(Replication) 차이

1. 클러스터링(Clustering) - DB 서버를 다중화 하는것 - 동기화 방식 - 자동 FailOver 기능 (시스템 대체 작동) 1) Active - Active 구성 - 2대가 모두 활성화되어 동작되는 구성 - 시스템 다운 시간이 짧음 - 성능이 좋음 - 저장소 병목 현상이 가끔 발생 2) Active - StandBy 구성 - 1대가 활성화되어 있고 1대는 대기하고 있는 구성 - Hot-Standby : 장애 발생 전에도 DB가 작동되는 구성 - Cold-Standby : Active DB가 다운된 시점에 작동하는 구성 2. 리플리케이션(Replication) - DB서버와 저장소를 같이 다중화 하는 것 - 비동기화 방식 - 자동 FailOver 기능이 없음

개발자 면접 질문 - 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개만 유지)에 영향을 받아 커넥션을 실제로 닫아 버리므로 일부 커넥션이 매번 생성되었다 닫혔다 하는 비용이 발생된다.