전체 카테고리361 [Database] Nested Loop 최적화 1. Driving Table 모수 고려 Nested Loop 최적화를 할 때 "Driving Table(Outer Table)을 대상건수가 적은 테이블로 선정하라는 원칙"을 지키고 조인을 하였는데 하나 의문점이 생겼다. Driving table이 100건이고 Driven-to table(Inner Table)이 1000건일 경우 조인 횟수는 100 X 1000이고, 반대의 경우에도 어차피 1000 X 100으로 똑같지 않나라는 의문이 들었다. 하지만 이거는 INDEX가 없을 때나 해당된다. 다른 블로그 글을 찾아보니 Driving Table의 대상 건수를 줄이는 이유는 "드라이빙 테이블의 추출 건수가 곧 드리븐 테이블의 액세스 반복 횟수가 되므로 건수가 더 적은 테이블이 드라이빙 테이블로 선정되어야 한.. 2021. 11. 14. [Database] 정규화 정리 1. 정규화의 목표 정규화의 목표는 테이블 간에 중복된 데이터를 허용하지 않는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, 데이터 베이스의 저장 용량도 줄 일 수 있다. 2. 제 1 정규화 제 1 정규화란 테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것 이다. 다음과 같은 상품 테이블이 있다고 할 때 현재 카테고리 컬럼에 여러개의 값이 들어가고 있다. 즉, 제 1 정규형을 만족하지 못하고 있다. [상품 테이블] 상품명 카테고리 새우깡 과자,간식 감자칩 과자 왕뚜껑 라면,식품 위의 테이블을 정규화하면 아래와 같다. [상품 테이블] 이름 카테고리 새우깡 과자 새우깡 간식 감자칩 과자 왕뚜껑 라면 왕뚜껑 식품 3. 제2 정규화 제2 정규화란 제 1정규화를 진행한 테이블에 대해.. 2021. 10. 24. Statement와 PreparedStatement 1. PreparedStatement 데이터베이스 관리 시스템(DBMS)에서 동일하거나 비슷한 데이터베이스 문을 높은 효율성으로 반복적으로 실행하기 위해 사용되는 기능을 말한다. 2. PreparedStatement 동작 방식 PreparedStatement는 위와 같이 4단계로 나누어져있다. 이중 parse 부분을 컴파일한채로 캐시에 저장하고 데이터가 bind 될 때 마다 patch까지 실행이 완료되고 sql을 재사용할 때 캐시에 저장되어 있는 부분을 가져다 나머지 3단계만 실행한다. 또한 바인딩 된 데이터는 SQL 문법이 아닌 내부의 인터프리터나 컴파일 언어로 처리하므로 문법적인 의미를 가질 수 없다. 즉, parse부분에서 이미 쿼리의 문법적인 처리 부분이 수행되어 있고 바인딩 단계에서 입력된 부분.. 2021. 10. 17. [Spring] @Transactional 어노테이션 1. @Transactional @Transactional 어노테이션은 트랜잭션 처리를 위해서 Spring이 제공하는 어노테이션이다. @Transactional을 메서드 또는 클래스에 명시하여 메서드에 대해서 내부적으로 AOP를 통해 트랜잭션 처리코드가 실행된다. 다음과 같이 BooksImple 클래스의 addBook에 @Transactional을 선언했을 때 public class BooksImpl implements Books { public void addBooks(List bookNames) { bookNames.forEach(bookName -> this.addBook(bookName)); } @Transactional(rollbackFor = Exception.class) public void.. 2021. 10. 10. 리눅스 프로세스 여러개 중지 리눅스에서 여러개의 프로세스를 동시에 죽여야하는 일이 종종 발생한다. 다음은 sleep이라는 프로세스명을 확인하고 종료하는 예시 명령어이다. 1. 프로세스 생성 [root@zetawiki ~]# sleep 999999d & [1] 2648 [root@zetawiki ~]# sleep 999999d & [2] 2649 [root@zetawiki ~]# sleep 999999d & [3] 2650 2. 프로세스 확인 [root@zetawiki ~]# ps -ef | grep sleep | grep -v grep root 2648 2541 0 08:39 pts/0 00:00:00 sleep 999999d root 2649 2541 0 08:39 pts/0 00:00:00 sleep 999999d root 26.. 2021. 10. 7. [IntelliJ] auto import 설정 인텔리제이의 유용한 기능 중 하나인 "auto import" 기능을 세팅해보겠다. 1. 코드 변경에 따른 자동 import 기능 "ctrl+shift+alt" 키 입력 시 settings 단축키를 열 수 있다. Editor -> General -> Auto Import 메뉴에 접근하여 "Optimize imports on the fly"를 체크해주면 해당 기능이 활성화 된다. 소스 코드를 추가해보면 자동으로 import가 되는 것을 볼 수 있다. . 2. 코드 복사 붙여 넣기 시 자동 import 기능 insert imports on paste에서 "Always" 옵션을 선택 후 적용한다. 2021. 9. 10. 이전 1 ··· 4 5 6 7 8 9 10 ··· 61 다음