728x90 개발공부 개발새발/DB21 DB ) 잠금(MySQL 기준) “잠금” MySQL 엔진 글로벌 락 서버 전체 테이블 락 테이블 데이터 동기화 메타데이터 락 테이블 구조 잠금 네임드 락 사용자 필요에 맞게 사용 글로벌 락 → 잠금 가운데 가장 범위가 크다! 범위 MySQL 서버 전체 용도 MyISAM, MEMORY 테이블에서 일관된 백업이 필요할 때. 특징 서버의 모든 변경 작업을 멈춘다. 백업 락 → 백업 툴들의 안정적인 실행을 위한 조금 더 가벼운 글로벌 락 백업 락을 획득하면 못하는 행동 데이터베이스 및 테이블 등 모든 객체 생성 및 변경, 삭제 단, 테이블 데이터 변경은 허용 REPAIR TABLE 과 OPTIMIZE TABLE 명령 사용자 관리 및 비밀번호 변경 📌 정상적으로 복제를 실행하고 백업의 실패를 막기 위해 DDL 명령이 실행되면 복제를 일시 중지하.. 2023. 8. 18. DB ) 인덱스 디스크 읽기 방식 DB 의 성능 튜닝은 어떻게 디스크 I/O 를 줄이느냐가 관건 SSD 기존 하드 디스크 드라이브에서 데이터 저장용 플래터(원판)을 제거하고 플래시 메모리를 장착. 디스크 원한 회전 불필요 아주 빨리 데이터를 읽음 플래시 메모리는 전원 공급 안 돼도 데이터 삭제 X 컴퓨터 메모리(D-Ram) 보다는 느리지만 기계식 하드 디스크 드라이브보다는 훨씬 빠르다! 장점 기존 하드 디스크 드라이브와 순차 I/O 는 거의 비슷하지만, 랜덤 I/O 가 훨씬 빠르다. 랜덤 I/O 와 순차 I/O 랜덤, 순차 I/O 모두 파일에 쓰기를 실행하면 반드시 동기화가 필요한데, 순차I/O 의 경우에도 파일 동기화 작업이 빈번히 발생하면 랜덤 I/O와 같이 비효율적으로 처리될 때가 있다. 랜덤 I/O 하드 디스크 .. 2023. 8. 8. DB ) 트랜잭션(의 격리수준) 트랜잭션 논리적인 작업 셋이 100% 적용되거나, 아무것도 적용되지 않아야함을 보장해주는 것. → 작업의 완전성을 보장한다(일부 업데이트가 되지 않음.) 부분 업데이트 (Partial Update) 중간에 오류가 발생하면 발생 전 상태를 롤백하지 않고 놔두는 것. → 테이블 데이터의 정합성을 맞추는데 상당히 어려운 문제를 만든다. 주의할 점 범위를 최소화하기. 꼭 필요한 최소의 코드에만 적용해라! DB 커넥션은 개수가 제한적이라 각 단위 프로그램이 커넥션을 소유하는 시간이 길어지면 사용 가능한 여유 커넥션의 개수는 줄어든다. DB 를 조회하는 등의 작업을 굳이 넣을 필요는 없겠다. 네트워크를 통해 원격 서버와 통신하는 작업은 어떻게든 DBMS 의 트랜잭션 내에서 제거해라! 중간에 통신 오류가 나면 웹 서.. 2023. 8. 7. MyBatis ) 마이바티스 스프링 부트 연동하기 이틀간 설정때문에 고생해서......... 드디어 돌아가는 게 너모 기뻐서 저장용으로 써두기 일단 나는 1 매퍼(dao) 인터페이스 사용 2 mapper.xml 사용 3 application.properties 설정 사용 일단 나의 프로젝트 경로 이렇게 되어 있다 UsersMapper.java (인터페이스) package com.with.hyuil.dao; import com.with.hyuil.model.UsersVo; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface UsersMapper { int insertUser.. 2023. 1. 15. JPA ) JPA 요약 (내가 검색하는 용도) JPA와 CRUD 저장 jpa.persist(member) 조회 Member member = jpa.find(memberId) 수정 member.setName("변경이름") 삭제 jpa.remove(member) EntityManagerFactory는? 하나만 생성하고, 애플리케이션 전체에서 공유한다 EntityManager는? 쓰레드간의 공유는 X, 사용하고 버려야 한다 *** JPA의 모든 데이터 변경은 트랜잭션 안에서 실행한다 *** package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; i.. 2022. 11. 29. JPA ) 여러가지 값 타입~ 기본값 타입 JPA의 데이터 타입 분류 엔티티 타입 @Entity 객체 데이터가 변해도 식별자로 추적 가능 회원 엔티티의 키나 나이를 변경해도, 식별자로 인식 가능해요 값 타입 int, Integer, String 처럼 단순 값으로 사용하는 자바 기본타입이나 객체 식별자가 없고 값만 있음, 변경하면 추적 불가 숫자 100을 200으로 변경하면 완전히 다른 값이에요 값 타입의 종류 *기본값 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String *임베디드 타입 embedded type 복합 값 타입 직접 커스텀해서 값 타입 사용하고 싶을 때 *컬렉션 값 타입 collection value type 임베디드, 기본 값 타입을 넣을 수 있음 기본값 타입 - 생명주기를 엔티티.. 2022. 11. 25. 이전 1 2 3 4 다음 728x90