본문 바로가기
728x90

공부155

[RealMysql 8.0]5 트랜잭션과 잠금 5.1 ~ 5.2.2 테이블 락 읽어보면 좋은?https://jeong0427.tistory.com/81 mysql 트랜잭션 ACID 트랜잭션 데이터베이스의 상태를 변경하는 여러개의 작업을 단위로 묶어서 처리하는 것. 이러한 트랜잭션은 ACID 의 성질에 만족해야 한다 트랜잭션이 시작되면 전체 트랜잭션이 완료될 때까지 jeong0427.tistory.com 트랜잭션은 작업의 완전성을 보장해 주는것이다.논리적인 작업 셋을 모두 완벽하게 처리하거나 처리하지 못할 경우 원 상태로 복구해서 작업의 일부분만 적용되는 현상이 발생하지 않게 만들어 준다. 잠금과 트랜잭션은 비슷한 개념 같지만 잠금은 동시성을 ㅔ저아힉 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 트랜잭션 기존 MyISAM, MEMORY 스토리지 엔진은 트랜잭.. 2023. 2. 4.
mysql 잠금: 명시적 잠금, 묵시적 잠금 명시적 사전 적 의미 내용이나 뜻을 분명하게 드러내 보이는, 또는 그런 것. 묵시적 사전 적 의미 직접적으로 말이나 행동으로 드러내지 않고 은연중에 뜻을 나타내 보이는. 또는 그런 것. 명시적 락 SQL 문을 통해 사용자가 명시적으로 요청하는 잠금 사용자는 LOCK TABLES 문을 사용하여 테이블 잠금을 요청할 수 있다. 테이블 데이터에 대한 동시 엑세스를 제어하고 데이터 일관성을 보장한다. 일반적으로 여러 사용자가 동일한 데이터를 수정해야 하는 시나리오에서 사용되며, 잠금은 한번에 한 사용자만 데이터를 수정할 수 있다. InnoDB 테이블의 경우에는 스토리지 엔진 차원에서 레코드 기반의 잠금을 제공하기 때문에 단순 데이터 변경 쿼리로 인해 묵시적 테이블 락이 설정되지는 않는다. 더 정확히는 InnoD.. 2023. 2. 4.
mysql 소스서버 레플리카 서버 일반적인 MySQL 서버의 구성은 소스서버(Source Server)와 레플리카 서버(Replica Server)로 구성된다. 소스서버(기본 서버 또는 원본 서버) 데이터를 저장하고 관리하는 주 서버 모든 읽기 및 쓰기 작업은 해당 서버에서 수행된다. 레플리카 서버(복제서버) 원본 서버의 데이터베이스 사본 역할. 주 서버에 장애가 발생할 경우 보조 데이터 원본을 제공하는데 사용된다. 해당 서버는 복제라는 프로세스를 통해 주 서버의 데이터로 지속적으로 업데이트 된다.이로인해 비상 시 백업으로 사용될 수 있다. 2023. 2. 4.
mysql REPAIR TABLE과 OPTIMIZE TABLE MySQL에서 REPAIR TABLE과 OPTIMATE TABLE은 데이터베이스 테이블의 성능을 유지하고 향상시키는 데 사용되는 두 개의 개별 명령입니다. REPAIR TABLE 테이블에서 손상된 손상된 테이블을 복구하는 데 사용된다. 테이블이 복귀되면 원래 데이터가 테이블에 복원되고, 인덱스가 다시 생성된다 OPTIMATE TABLE 데이터 파일을 조각 모음하는 데 사용된다. 이로인해 데이터 성능이 향상될 수 있다. 데이터가 테이블에서 삽입, 업데이트, 삭제 등을 거치면 파일이 조각화 될 수 있는데 이를 최적화하며 압축하며, 사용되지 않는 공간을 회수하며 테이블을 효율적으로 변경한다. 2023. 2. 4.
mysql 시스템 변수 확인. SHOW VARIABLES; SHOW VARIABLES LIKE 'long_query_time%'; 위 명령어로 전체 혹은 개별로 볼 수 있다. 여러가지 옵션이 존재하며, 필요에 따라 검색 후 찾아봐야겠다. 2023. 2. 4.
[RealMysql 8.0]04아키텍처 4.2.13 ~ 4.4.3.3 슬로우 쿼리 InnoDB와 MyISAM, MEMORY 스토리지 엔진 비교 5.5부터 innodb 스토리지 엔진이 기본 스토리지 엔진으로 채택됐지만, 시스템 테이블 (사용자 인증 관련된 정보와 복제 관련된 정보가 저장된 mysql DB의 테이블)은 여전히 MyISAM을 사용, 또한 전문검색, 좌표검색 기능은 MyISAM 에서만 지원 8.0부터 모든것을 InnoDB 스토리지 엔진으로 대체되었음. 4.3 ~ 4.4.2 까지는 넘어감. 슬로우 쿼리 로그 시스템변수 long_query_time 으로 설정된 값보다 높을시 log_output 으로 지정된 값에 따라 테이블에 저장할지, 디스크로 저장할지 나뉘게된다.(TABLE, FILE)(둘다 CSV 파일로 저장하는 것과 동일하게 작동) mysql 의 잠금 처리는 mysql 엔진.. 2023. 2. 3.
[RealMysql 8.0]04아키텍처 4.11.1 ~ 4.2.12 어댑티브 해시 인덱스 리두 로그 아카이빙 사전적 의미로 '보관'이라는 뜻을 가진 아카이빙은 개인 및 단체가 활동하며, 남기는 수많은 기록물 중 가치가 있는 것을 선별하여 보관하는 장소, 또는 그 기록물 자체를 이르는 용어를 뜻한다. https://ju-hyung.tistory.com/151 아카이빙 (Archiving) 이란? 아카이빙 (Archiving) - 사전적 의미로 '보관'이라는 뜻을 가진 아카이빙은 개인 및 단체가 활동하며, 남기는 수많은 기록물 중 가치가 있는 것을 선별하여 보관하는 장소, 또는 그 기록물 자체를 이 ju-hyung.tistory.com 8.0 버전부터 innoDb 스토리지 엔진의 리두 로그를 아카이빙할 수 있는 기능이 추가되었다. 데이터베이스의 모든 변경 내용을 기록한 redo 로그를 포함한다... 2023. 2. 3.
[이펙티브자바]item 20.추상 클래스보다는 인터페이스를 우선하라. 자바 8부터는 인터페이스도 디폴트 메서드를 제공할 수 있다. 기존 클래스에서도 손쉽게 새로운 인터페이스를 구현해넣을 수 있다. 인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있다. Singer, Songwiter 의 인터페이스가 있을시 이 두가지를 받은 SingerSongwriter 를 다중 상속 받아 새로운 인터페이스를 만들 수 있다. 디폴드 메서드를 제공해 프로그래머들의 일감을 덜어줄 수 있다. 이럴경우 item19 처럼 @impleSpec 자바독 태그를 붙여 문서화를 하자. 인터페이스와 추상 골격 구현 클래스를 함께 제공하는 식으로 인터페이스와, 추상 클래스의 장점을 모두 취하는 방법도 있다. 인퍼페이스의 강제 구현 요구와 추상 클래스의 기본 구현 제공을 동시에 제공할 수 있기 때문이다... 2023. 2. 3.
[이펙티브자바]item 19.상속을 고려해 설계하고 문서화하라.그러지 않았다면 상속을 금지하라. 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 한다. 재정의? => public과 protected 메서드 중 final 이 아닌 모든 메서드를 뜻함 @impleSpec 어노테이션으로 자바독을 만들 수 있다. API 의 문서를 만들때는 "어떻게"가 아닌 "무엇"을 하는지 설명하는거에 대비하여 상속을 위한 내부클래스의 문서화는 상당히 내부구조까지 설명을 해야한다. 이는 캡슐화가 이미 깨졌고 내부 구현을 모르면 오작동의 위험이 있기 때문이다. 클래스의 내부 동작 과정 중간에 끼어들 수 있는 훅을 잘 선별하여 protected 메서드 형태로 공개해야 할 수도 있다. 어떤 클래스를 protected 로 노출해야할지 결정하는 방법은 직접 하위 클래스를 3개 정도 만들어 보.. 2023. 2. 3.
728x90