현재 맡은 프로젝트에서 오라클 및 스프링을 활용한 백앤드를 구현중에 있어서 오라클을 사용해 본 적이 없어서 여가 시간에 오라클을 공부하고 있습니다.그중에서 데이터베이스 블록을 공부하던 중 에 대한 질문으로 하나의 DB IO는 보통적으로 하나의 블록 단위로 수행하며 테이
저번 시간에는 오라클 기본 동작을 알아보기 앞서 왜 IO가 오래걸리는 지에 대해 알아보았다.이번에는 오라클의 아키텍쳐를 보면서 기본적으로 어떻게 돌아가는지 파악하고 IO ACCESS 에 대해 알아보자 우선적으로 오라클은 프로세스, 메모리, 데이터베이스 파일 로 이루어져
오늘은 전에 다루기로 했었던 클러스터링 팩터, IO ACCESS 와 하드디스크에서 읽는 방법 , 버퍼캐시에 저장되는 과정 및 찾는 과정에 대해 다뤄보고자 한다. 😲데이터베이스 데이터 블럭 이해 먼저 전 시간에 다루었던 문제에 답을 달아보자 Q1) 그러면 백만개의
1. Conventional vs Direct 이는 우리가 앞에서 자주 다루었던 내용과 같다. Conventional path 는 서버 프로세스가 버퍼 캐시에서 데이터를 가져와 CRUD 작업을 하는 것을 말하며 이는 index를 경유한 Access 즉 Random A
프로젝트를 진행하면서 단순 쿼리만을 작성하는 것이 아닌 IO 작업을 많이 하는 쿼리에 대해서 힌트절을 작성한 부분을 접하게 되었다. 쿼리 작성시 옵티마이저가 최적의 실행계획을 세우지만 그러지 못한 경우 힌트절을 사용하여 옳바른 실행계획을 하게 한다. 무분별한 힌트절은
오늘은 트랜잭션의 전파 수준과 격리 수준에 대해서 이야기해보고자 한다. 트랜잭션에서의 격리는 한 트랜잭션에서 데이터가 수정되는 과정이 다른 트랜잭션과는 독립적으로 진행되어야 한다는 특성이다. 이 때 독립되는 수준을 4가지로 나눌수 있으며 각각에 대해 알아보자 트랜잭
앞에서 트랜잭션 읽기 일관성에 대해서 알아보았다. 트랜잭션이 시작된 기점으로 Commit 된 데이터들을 불러온다면 문장 수준 읽기 일관성은 2가지 관점이 존재하는데 이에 대해 알아보자123
현재 이관작업을 진행하다가 3개의 테이블에 있는 데이터를 1개의 테이블로 이관하는 작업을 맡았다. 3개의 테이블을 합치는 과정에서 PRIMARY KEY가 중복되는 건을 응용팀에 전하니 테이블마다 우선순위를 두어 무조건 들어가야 하는 테이블을 알려주었다. TEMP 테이
들어가기에 앞서 트랜잭션과 락을 공부함에 있어서 확신을 가질 수 없었다. 분명 오라클에서는 read-commited 와 MVCC를 통한 해당 데이터의 정합성을 보장하는 것과 다르게 Lock이 걸려서 이해할 수가 없었다. 하지만 이는 하나의 관점차이이며 락은 동시 접근
인덱스 컬럼에 대해 질의시 잘 사용하기 특정 쿼리가 인덱스를 타지 않아서 검색을 하던중 흥미로운 블로그 를 봐서 정리하고자 한다. 인덱스 컬럼을 조인할 때 해당 컬럼에 NOT 연산자 혹은 IS NULL 연산을 사용하면 인덱스 조회를 하는 것이 아닌 TABLE SCAN을
친구랑 이야기 하면서 각자 선호하는 DB에 이야기 한 적이 있었는데 각자 선호하는 DB가 달랐다. 누구는 Nosql인 mongoDB를 선호하는 반면에 오픈소스인 Mysql을 선호하는 것이다. 글쓴이도 학부생 시절에 처음 접한 것이 Mysql이며 프로젝트에 투입 되면서