💋 인트로 웹사이트에 있어서 속도(성능)는 매우 중요하다. 구글에서 정리한 자료에 따르면, 속도는 실제 서비스의 사용자를 늘리고 서비스의 영업 이익을 늘린다고 한다. 백엔드 개발자가 적은 시간 투자로 최대 성능 효과를 얻을 수 있는 방법은 대략 아래와 같다. HTTP 압축 다양한 리소스 최적화 기법 이미지, JS, CSS, 기타 리소스 HTTP 캐싱 이중에서도 이번 포스팅에서는 캐싱에 대해 집중적으로 다룰 예정이다. 💋 HTTP 캐시(Cache) ✔ 개념 캐시는 데이터나 콘텐츠를 일시적으로 저장하는 임시 저장소 웹에서의 캐시는 웹 페이지, 이미지, 스크립트, 스타일 시트 등의 자원들을 저장하여 이후에 동일한 자원에 접근할 때 더 빠르게 가져올 수 있도록 함. ✔ 캐시를 사용하는 이유 1. 성능 향상: 웹..
💋 오늘 공부한 내용 스프링부트의 서블릿 엔진이 하는 역할 중에 클라이언트 요청을 처리하고 결과를 반환하는 코드를 직접 작성해봤다. 평상시에 띡 잘 파싱되어서 컨트롤러로 들어왔는데, 그 앞까지의 동작에 대해서 직접 구현해보려고 하니깐 생각보다 진짜 어려웠다. 이건 그래서 작성한 나의 코드... 💋 감정 회고 뭔가 조금 지쳐있는데, 이제 방학 없이 끝까지 간다니 약간 걱정이 된다. 운동도 열심히 하고, 포비가 아무리 놀지 말라고 해도 내 멘탈을 위해 적당히 쉬엄쉬엄 해야겠다. 연고전 티켓팅을 했는데, 10시 선착순 티켓팅 시작인 아이스하키에 10시 59분에 티켓팅을 눌렀는데 당첨이 되었다. 알고보니 고학번 우선이었다고... 야구도 같이 당첨되었는데...! 둘 다 알고보니 경기가 금요일이라고 해서 고민하다가..
💋 오늘 공부한 내용 MySQL 인덱스에서 대부분 파트를 다 읽었다! 레오가 우리 도메인이 서로 다른 도메인 호출이 너무 자주 있다고, 이벤트를 적용해보는게 어떨까 라고 제안을 해서, 유튜브에서 관련 내용을 공부했다. 💋 감정 회고 9월이라니!!!!!!!!!!!!!!!!!!!!!!!!! 확실히 기온이 떨어지기는 한 것 같다 헤헤 💋 오늘의 포스팅
💋 오늘 공부한 내용 인덱스 공부 1일차 인덱스의 목적과 구현 방법에 대해서 이해함. 클러스터링 인덱스에 대해서 정확히 이해함. 우리 팀의 5차 스프린트 회의를 진행함. 각자 자신의 레벨4에서 우선순위, 신규 기능 추가에 대한 생각, 영업 가능 여부에 대해서 의견을 나눔. 이제까지 발생한 버그에 대해서 공유함. 영업과 버그 개선에 대한 대략적인 데드라인을 세움. 💋 감정 회고 제나랑 아침 9시에 와서 Real MySQL을 읽었당 열심히 개인공부도 해야지... 💋 오늘의 포스팅 https://engineerinsight.tistory.com/184 [MySQL] 클러스터링 인덱스: InnoDB에서 리프 노드에 레코드 저장 주소가 아니라 Primary Key를 저장하 💋 인덱스란? 데이터베이스의 테이블에서 ..
💋 인덱스란? 데이터베이스의 테이블에서 데이터를 검색하고 정렬하는 데 사용되는 구조 예를 들어, 한 대학교에서 학생들 테이블을 관리한다고 생각해 보자. column으로는 id(primary key), name, age, major 등등이 있다. 이때 이름을 기반으로 한 검색이 매우 많다고 하자. 예를 들어 아래와 같은 검색이다. SELECT * FROM STUDENTS WHERE NAME='깃짱'; 이 경우에 매번 primary key로만 정렬된 테이블에서 '깃짱'이라는 이름을 한 학생을 찾으려면 테이블을 전부 뒤져봐야 한다. 이렇게 값을 찾는 방식을 full scan이라고 한다. 대강 생각해봐도 상당히 비효율적이다. 이름 기반 검색이 자주 사용된다면, 이름을 가나다 순으로 만든 테이블을 별도로 두고 관..
💋 인트로 데이터베이스 쿼리의 성능 개선을 위한 기능 쿼리 튜닝의 기본 💋 데이터베이스 성능 튜닝은 디스크 I/O를 줄이는 것이 관건! ✔ 전기식 장치 VS 기계식 장치 전기식 장치 예) CPU, 메모리 짧은 시간 동안 매우 빠른 속도로 발전 기계식 장치 예) 디스크 성능이 상당히 제한적으로 발전 ✔ 하드 디스크 드라이브(HDD) VS 솔리드 스테이트 드라이브(SSD) 둘 다 데이터 저장 매체 하드 디스크 드라이브(HDD) 기계식 장치 회전하는 디스크와 이동하는 팔을 사용하여 데이터를 저장 원판(아래 사진 참고)을 기계적으로 회전시켜야 하기 때문에 물리적으로 데이터 읽기가 느림. 랜덤 I/O에서 특히나 느림 솔리드 스테이트 드라이브(SSD) HDD를 대체하기 위해서 출시됨 플래시 메모리를 사용하여 데이터..
Computer Science 모아보기 👉🏻 https://github.com/seoul-developer/CS GitHub - seoul-developer/CS: 주니어 개발자를 위한 전공 지식 모음.zip 주니어 개발자를 위한 전공 지식 모음.zip. Contribute to seoul-developer/CS development by creating an account on GitHub. github.com 앞선 포스팅에서 트랜잭션의 개념에 대해서 학습했다. 이번 포스팅에서는 ACID 중 Isolation을 보장하기 위해서, 먼저 트랜잭션 내에서 일어날 수 있는 이상현상을 정의한다. 그리고, 각각의 이상현상들을 어느 정도 허용하는 선에서 정합성과 동시성 사이에서 타협할 것인지 결정하는 격리 수준에 ..
💋 MVCC(Multi Version Concurrency Control) 레코드 레벨의 트랜잭션을 지원하는 DBMS가 제공하는 기능 배타적인 락을 사용하지 않으면서, 일관된 읽기를 제공하기 위한 목적 하나의 레코드에 대해 여러 개의 버전(Multi Version)이 동시에 관리됨. InnoDB는 언두 로그(Undo log)를 사용해 MVCC를 구현함. 💋 언두 로그(Undo log) 트랜잭션 격리 수준 READ COMMITTED라고 가정 CREATE문을 통해 데이터베이스 내에 테이블은 이미 존재한다고 가정 ✔ 예시를 통한 언두 로그 설명 1. INSERT INTO MEMBER (m_id, m_name, m_area) VALUES (12, '홍길동', '서울'); 실행하고 커밋함. 2. UPDATE m..
💋 오늘 공부한 내용 레벨 인터뷰가 있어서 끝나고 별다른 공부를 하지는 못했다. 그래도 한 일주일 전에 잠깐 읽었던 MVCC, 언두로그에 대해서는 정리했다. 레벨 인터뷰에 대해서 요약한 자료를 작성했다. 제나, 루카와 Real MySQL을 각자 필요한 부분 발췌해서 읽고 요약해서 서로 감시하는 스터디를 하기로 했다. 💋 감정 회고 레벨 인터뷰 끝나고 제나랑 선정릉 산책을 다녀왔다. 제나랑 꽤 많은 이야기를 하는데 아주 꿀잼 레벨인터뷰 피드백은 대체로 엄청 좋았는데도 뭔가 내 스스로가 레벨3 동안 했던 개인 공부에 대해서 맘에 들지 않는다! 우테코에서 개인공부에 시간을 제일 덜 쏟은 사람 중 하나일 것 같다 아마도 내가 레벨4 동안에는 좀더 적극적으로 인프라, DB에 대한 공부를 해야할 것 같다. 다행인건..