Database

Database

MySQL의 트랜잭션 격리 수준

Real MySQL 5장 트랜잭션과 잠금을 읽고 스터디한 내용을 정리해봅니다 😃 InnoDB를 통한 트랜잭션 격리 제공 트랜잭션 격리는 데이터베이스의 핵심 기능 중 하나입니다. 트랜잭션 격리는 여러 트랜잭션이 동시에 수정을 일으키는 쿼리를 요청했을 때, 신뢰성, 일관성을 유지하면서도 높은 성능을 유지하는 균형에 대한 이야기입니다. 트랜잭션 격리를 하지 않고 신뢰성을 낮추는 대신 성능을 높일 수도 있고, 트랜잭션 격리를 극단적으로 가져가며 신뢰성을 높이는 대신 성능을 다소 포기할 수도 있습니다. 트랜잭션이 안전하게 수행된다는 것을 보장하는 ACID 중 I가 바로 이 격리, Isolation의 약자입니다. 이전 포스팅에서 알아봤듯이, MySQL의 스토리지 엔진 가운데 InnoDB 만이 트랜잭션을 지원하기 때..

Database

MySQL 구조 및 동작 흐름 (Real MySQL 8.0 - 4장 아키텍처)

요약 MySQL은 접속 클라이언트, 엔진, 스토리지 엔진으로 구분할 수 있다. 엔진에서는 SQL문장을 분석하고 검증하고 최적화한 뒤 스토리지 엔진을 통해 데이터를 읽고 쓴다. 스토리지 엔진은 실제 디스크에 접근해 데이터를 읽고 쓰는 역할을 수행한다. InnoDB, MyISAM 등을 선택할 수 있다. InnoDB는 기본으로 선택되는 스토리지 엔진이며, 버퍼풀, 언두 로그 등을 통해 MVCC 를 제공한다. 📕 주요 용어 정리 의사소통의 장애물을 가장 먼저 제거해봅시다!! MySQL 엔진 : MySQL 두뇌에 해당. 쿼리 파싱, 최적화, 실행계획 생성 등을 담당. 운전자. MySQL 스토리지 엔진 : MySQL 손, 발에 해당. 디스크에 읽고 쓰기를 담당. 자동차. 운전자에게 핸들을 제공함. 핸들러 : MyS..

Database

오라클 PL/SQL 변수선언, IF 조건문, WHILE 반복문, PRINT

패키지와 프로시저에 대한 단상 국비 다닐 동안 오라클에 대해 배웠지만, CRUD, 조인, 서브쿼리, 뷰 정도가 전부였다. 수료 후 면접을 다니면서 DB는 어느 정도 다루느냐는 질문을 자주 받았는데, 내가 어느 정도 아는지도 알 수 없을 정도로 무지했기에 아주 어려운 질문이었다. 개발자로 첫 회사에 입사한 이후에서야 패키지, 프로시저, 펑션의 존재를 알게 됐다. 레거시 솔루션을 대할때 지금도 가장 난감한 부분이 DB가 대부분의 비즈니스 로직을 들고 있다는 점이다. 어느정도 익숙해지고 나면 이게 어떤 의도이고 대략 어떻게 작성되었겠거니 파악이 가능하지만, 들여다본적 없는 새로운 부분을 작업해야할 땐 그 때마다 엄청난 노력이 필요하다. 한번의 패키지 호출로 DB내 설정값 조회, 전달된 파라미터를 이용한 CRU..

Database

중성화 여부 파악하기 - CASE WHEN 조건 THEN 값 WHEN 조건 THEN 값 ELSE 값 END AS 컬럼별칭

programmers.co.kr/learn/courses/30/lessons/59409코딩테스트 연습 - 중성화 여부 파악하기ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디programmers.co.kr조건이 여러개가 아니고 O,X이기 때문에 DECODE를 사용할 수도 있었겠다. 아직은 DECODE도, CASE WHEN도 정확한 사용법이 손에 익질 않았다. 면접 보러 다니던 중 한 곳에서 손코딩으로 CASE WHEN을 요구받은 적도 있었다.CASE WHEN 사용법 컬럼..

Database

보호소에서 중성화한 동물 - LIKE, %

문제programmers.co.kr/learn/courses/30/lessons/59045코딩테스트 연습 - 보호소에서 중성화한 동물ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디programmers.co.kr 12345678SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME --출력되어야 할 컬럼들 선택 FROM ANIMAL_INS INS --두 테이블 JOIN JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID =..

리차드
'Database' 카테고리의 글 목록