DB 3

[Mybatis] 문법정리

config에  방법 2가지 : 어노테이션 or mapper xml 1.  CRUD 태그 이용 2. mapper.xml 생성 http://m.example.mapper.UserMapper">  http://m.example.model.User">         SELECT id, name, email FROM users WHERE id = #{id} -> sql 쿼리 이름 : selectUser 3. SqlSession을 통해 sql 실행 public User getUserById(int id) {         // crud 쿼리 날릴때마다 session 을 생성...? 이게 뭔가         try (SqlSession session = MyBatisUtil.getSqlSession()) {   ..

DB 2025.03.13

[DB] 데이터베이스 쿼리 최적화

[SQL 쿼리의 주기] 쿼리 파서(query parser)는 쉼표의 위치 등 쿼리가 문법적으로 올바른지 검사하고, 테이블의 존재 여부 등의 의미론적으로 올바른지 검사한 뒤, 만약 올바르지 않다면 에러를 반환. 만약 올바르다면, 쿼리는 수식으로 전환되어 다음 단계로 전달한다. 쿼리 플래너와 옵티마이저(query planner and optimizer)는 확실한 최적화를 먼저 수행한다. (5*10을 50으로 변환하는 것처럼 더 나은 성능을 위한 개선). 그 뒤 여러 가지 최적화 방법을 가지고 있는 "쿼리 플랜"들을 검색하여, 연관된 테이블의 열의 수에 의하여 발생되는 비용(CPU와 시간)을 계산한 뒤 가장 최적의 플랜을 찾고 다음 단계로 전달하는 역할이다. 쿼리 실행기(query executor)는 결정된 ..

DB 2024.03.20

[Database] 정규화 Normalization

정규화는 데이터베이스의 성능과 유지보수성을 향상시키지만, 때로는 너무 많은 정규화가 성능 저하를 초래할 수 있다. 따라서 실제 데이터베이스 설계에서는 필요한 정도의 정규화를 적용하고, 필요에 따라 비정규화를 고려하는 것이 중요하다+ 제1정규형 (1NF): 테이블의 모든 컬럼이 원자값(더 이상 나눌 수 없는 값)을 가지도록 함 제2정규형 (2NF): 1NF를 만족하며, 모든 비주요 컬럼이 기본 키에 완전 함수적으로 의존하도록 함 제3정규형 (3NF): 2NF를 만족하며, 비주요 컬럼이 기본 키에만 의존하도록 하여 이행적 함수적 의존성을 제거함 보이스-코드 정규형 (BCNF): 3NF를 만족하며, 모든 결정자가 후보 키가 되도록 한다. 이는 3NF보다 더 엄격한 조건임 제4정규형 (4NF): BCNF를 만족..

DB 2024.03.08