본문 바로가기

57

RealMySQL 4.3 - MyISAM 스토리지 엔진 아키텍처 4.3. MyISAM 스토리지 엔진 아키텍처 키 캐시 키캐시 (InnoDB의 버퍼풀): 인덱스만을 대상으로 작동 인덱스의 디스크 쓰기 작업에 대한 버퍼링 역활 키 캐시 hit rate = 100 - (key_reads / key_read_requests * 100) Default 키캐시는 제한된 메모리가 존재 (예. 32비트 OS: 4GB) 제한된 메모리 보다 더 할당하고 싶으면 Default 키캐시 외 별도의 키캐시를 설정해야함 예: key_buffer_size: 4GB, kbuf_board.key_buffer_size: 2GB 추가 키캐시는 어떤 인덱스를 캐시할지 설정 필요 예: CACHE INDEX db1.board, db2.board IN kbuf_board 운영체제의 캐시 및 버퍼 MyISAM .. 2023. 3. 18.
도메인 주도 설계 첫걸음 - 1장, 2장 도메인 주도 설계 첫걸음 - part1 : 전략적 설계 01. 비즈니스 도메인 분석하기 효과적인 솔루션을 설계하고 구축하기 위해서는 그것의 바탕이 되는 구축해야 하는 SW System을 이해해야 한다. 비즈니스 도메인이란? 비즈니스 도메인 : 기업의 주요 활동 영역 정의 / 회사가 고객에게 제공하는 서비스 ex 스타벅스 : 커피, 월마트 : 소매업, 페덱스 : 배송 기업은 여러 비즈니스 도메인을 운영 가능 비즈니스 도메인은 자주 변경될 수 있음 하위 도메인이란? 하위 도메인 : 비즈니스 활동의 세분화된 영역 고객에게 제공하는 서비스 단위로 비즈니스 도메인 생성 각각의 하위 도메인은 서로 상호작용 ex) 스타벅스 : 커피 만드는 일 / 부동산(입지) / 직원 고용 / 재정 관리 비즈니스 도메인 ㄴ 하위 도.. 2023. 3. 5.
RealMySQL 4.2 - InnoDB 스토리지 엔진 아키텍쳐 (2) 4.2.8 Double Write Buffer Partial-Page(Torn-Page) 원인 : redo log는 InnoDb 스토리지 엔진의 redo log 공간 낭비를 막기 위해, 페이지의 변경 내용만 기록 이 때문에, dirty page를 disk로 flush 할 때, 일부만 기록되는 문제가 발생할 수 있음 해당 페이지의 내용은 복구가 불가할 수 있음 다른 원인으로는 HW 오작동 / System 비정상 종료 Double-Write 기법(Dobule Write Buffer) 목적 : DoubleWrite buffer에 더티 페이지를 작성함으로써, 데이터 파일 쓰기 중간에 실패할 때(비정상 종료) 해당 버퍼의 내용과 file의 page들의 내용을 비교하여 안정성과 무결성을 높인다. 이름은 버퍼이나 D.. 2023. 2. 19.
RealMySQL 4.2 - InnoDB 스토리지 엔진 아키텍쳐 (1) InnoDB storage architecture storage engine 중 거의 유일한 record기반 lock 지원 동시성, 안정성 높음 cluster by primary key 기본적으로 primary key 기준 clustering key 순서로 disk에 저장 secondary index는 record를 참조하지 않음, primary key를 참조 primary key를 이용한 range scan 성능 향상, primary 비중이 높음(실행계획도 primary 기준으로) MyIsam에선 clustering key 지원 안함 foreigner key InnoDB storage engine level에서 지원 / MyIsam, memory engine에선 지원 안함 부모, 자식 DB 칼럼에 in.. 2023. 2. 19.
[대규모 시스템 설계 기초] 2장,3장 - 개략적인 규모 추정 / 시스템 설계 면접 공략법 개략적인 규모 추정을 위해서는 규모 확장성 표현에 능숙해야 한다. 2의 제곱수 응답 지연(latency) 값 고가용성 2의 제곱수 데이터 최소 단위 : 1 byte = 8bit ASCII 문자 하나 메모리 크기 : 1 byte 모든 프로그래머가 알아야 하는 응답지연 값 메모리는 빠르지만 디스크는 아직 느리다. 디스크 탐색(seek) 가능한 피하기 단순한 압축 알고리즘은 속도가 빠르다. 데이터를 인터넷으로 전송하기 전에 가능하면 압축하기 데이터 센터는 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고 받는 시간은 꽤 걸린다. 가용성에 관계된 수치들 고가용성(high availability) : 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될 수 있는 능력 SLA(Service Level Agree.. 2023. 2. 18.
[대규모 시스템 설계 기초] 1장 - 사용자 수에 따른 규모 확장성 단일 서버 웹 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행된다. 사용자 요청 처리 흐름 1. 사용자는 도메인 이름(api.mysite.com)을 이용해서 웹사이트에 접속한다. 이 접속을 위해서는 도메인 이름을 DNS에 질의하여 IP 주소로 변환하는 과정이 필요하다. 2. DNS 조회 결과로 IP 주소가 반환된다. (웹 서버의 주소) 3. 해당 IP 주소로 HTTP 요청이 웹 서버에 전달된다. 4. 요청을 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다. 두 가지 종류의 단말으로부터 요청 웹 애플리케이션 서버 구현용 언어(자바, 파이썬) : 비즈니스 로직, 데이터 저장 처리 클라이언트 구현용 언어(HTML, JS) : 프레젠테이션용 모바일 앱 HTTP 프로토콜 이용 : 모바일.. 2023. 2. 2.