Study: ComputerScience(CS)/CS: Database(SQL)

    [DB] MySQL 아키텍처 (feat. Real MySQL)

    💡 본 문서는 MySQL의 기본서라 불리는 Real MySQL이라는 책을 바탕으로 'MySQL 아키텍처'에 대해 정리해놓은 글입니다. 실제로 쿼리가 들어왔을 때 MySQL 자체에서는 어떤식으로 처리를 하고 어떤식으로 구성되어 있는지를 정리해두었으니 참고 부탁드립니다. 1. MySQL의 전체 구조 MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분해서 볼 수 있습니다. 여기서는 MySQL의 쿼리 파서나 옵티마이저 등과 같은 기능을 스토리지 엔진과 구분하고자 위의 그림에서는 "MySQL엔진"과 "스토리지 엔진"으로 구분했으며, 이 둘을 모두 합쳐서 그냥 MySQL 또는 MySQL 서버라고 표현합니다. 1.1 MySQL 엔진 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL파서..

    [DB] RDB 트랜잭션 (feat. 트랜잭션 격리 수준)

    💡 본 문서는 'RDB 트랜잭션'에 대해 정리해놓은 글입니다. RDB는 관계가 중요하기에 일련의 과정 중 일부만 성공하면 안되기에 트랜잭션을 통해 관리합니다. 이러한 트랜잭션의 특성 및 격리성에 따른 문제점 등을 다루며 실제 트랜잭션을 활용함에 도움될만한 정보를 정리하였으니 참고 부탁드립니다. 1. 트랜잭션 1.1 트랜잭션이란? RDB는 관계가 중요하기에 일련의 과정 중 일부만 성공하면 안되기에 모두 적용(Commit)되거나 모두 취소(Rollback)되어야 합니다. 따라서 여러 과정을 하나의 묶음인 '트렌잭션'이라는 단위를 통해 관리하여 데이터의 정합성을 보장합니다. 이에 문제가 생길 경우 데이터의 부정합이 생길 수 있으며, 트렌젝션의 스케줄 관리를 잘 못하면 데드락에 빠질 수 있습니다. 1.2 트랜잭..

    [DB] DB 데이터 dump하는 방법 : MySQL 데이터를 export, import 하자! (feat. mysqldump)

    💡 본 문서는 mysql 데이터 덤프하는 'mysqldump'에 대해 정리해놓은 글입니다. 따라서 'mysqldump'를 이용하여 mysql 데이터를 export, import를 하고자 하니 참고하시기 바랍니다. mysql 설치 mysql이 설치가 되어있지 않다면 다음의 링크를 통해 설치를 진행합니다. mysql official page: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 잘 설치 되었는지 확인합니다. mysql --version MySQL 데이터 내보내기(export) & 가져오기(import) MySQL 데이터 내보내기 $ mysqldump -u -p > .sql Enter password: 참고로 table_name을 작성하지 않으..

    [DB] 커넥션 풀(DBCP)이란? DB Connection Pool

    웹 애플리케이션을 운영하다 보면 에러 로그로는 식별 할 수 없는 잠재적인 이슈가 발생합니다 대체로 애플리케이션내의 오류가 명확히 확인이 되지 않은 상태에서 Out of memory가 발생 하거나, DB 서버에서부터 발생한 장애로 인해 웹 서버가 뻗어 버리는 경우가 해당합니다. 결론부터 말하면 이러한 문제는 대부분 애플리케이션의 비지니스 로직의 오류가 아닌 WAS와 DB 서버간의 이슈로 DB Connection Pool에 대한 이해가 필요한 내용입니다. 왜 이러한 문제가 발생하게 될까? 먼저, 웹 어플리케이션을 지탱하는 WAS에서 DB 서버에 접근을 시작하고 데이터를 가져오기까지의 단계에서 가장 비용이 드는 부분이 어디일까? 과정은 다음과 같습니다. DB 서버 접속을 위해 JDBC 드라이버를 로드합니다. ..

    [DB] 데이터베이스 용어정리

    💡 본 문서는 '데이터베이스에서 사용하는 용어'를 정리해놓은 글입니다. 흔히 말하는 데이터베이스인 관계형 데이터베이스를 사용하다보면 가끔 헷갈리는 용어가 있어 해당 내용을 정리해놓은 문서입니다. 참고 부탁드립니다. 1. 데이터베이스 시스템 개요 1.1 데이터베이스(Database) 데이터의 대규모 저장소로서, 여러 부서에서 속하는 여러 사용자에 의해 동시에 사용됨. 모든 데이터가 중복을 최소화하면서 구조적으로 통합됨. 데이터베이스는 한 조직체의 운영 데이터뿐만 아니라 그 데이터에 관한 설명(데이터베이스 스키마, 메타데이터)까지 포함. 프로그램과 데이터 간의 독립성이 제공. 효율적으로 접근이 가능하고 질의(Query)를 할 수 있음. 1.2 Database Management System(DBMS) 데이터..