데이터베이스에서 I(Input)/O(Output)는 성능을 결정하는 중요한 요소이다. 🔹 논리적 I/O(Logical I/O)란?논리적 I/O는 데이터베이스에서 데이터를 요청할 때 발생하는 논리적인 데이터 접근을 의미즉, 사용자가 특정 데이터를 조회하거나 변경할 때, DBMS의 메모리(Buffer Cache)에 데이터가 있는지 확인하는 과정이 논리적 I/O ✅ 논리적 I/O의 특징데이터 블록이 버퍼 캐시(Buffer Cache)에 존재할 경우, 디스크에서 읽지 않고 메모리에서 바로 조회함디스크에 직접 접근하지 않음 → 성능이 상대적으로 빠름SQL 실행 시 블록을 읽는 횟수로 측정 가능 (consistent gets와 db block gets로 확인)✅ 논리적 I/O의 종류종류설명Consistent Ge..
분류 전체보기
데이터베이스는 데이터를 효율적으로 저장하고 관리하기 위해 논리적 구조와 물리적 구조로 나뉜다. 1. 논리적 저장 구조 (Logical Storage Structure)사용자가 데이터를 논리적으로 볼 수 있는 구조이며, 데이터베이스 객체들이 어떻게 조직되는지를 나타냅니다.① 데이터베이스 (Database)하나의 데이터베이스는 여러 개의 **테이블스페이스(Tablespace)**로 구성됨.예: ORCL 데이터베이스 안에 USERS, SYSTEM 등의 테이블스페이스가 존재. ② 테이블스페이스 (Tablespace)데이터 파일(Data File)을 그룹화하여 관리하는 논리적 저장 공간.각 테이블스페이스는 여러 개의 데이터 파일을 가질 수 있음.주요 테이블스페이스:SYSTEM / SYSAUX: 데이터 딕셔너리, ..
SGA(System Global Area)란?Oracle Database에서 사용하는 공유 메모리 영역으로, 데이터베이스 인스턴스가 실행될 때 생성되며, 모든 서버 및 백그라운드 프로세스가 공동으로 사용하는 메모리 영역이다.SGA는 데이터 캐싱, SQL 실행 정보 저장, 프로세스 간 통신 등을 담당하며, 성능 최적화를 위해 중요한 역할을 한다.서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱한다. SGA의 주요 구성 요소1. 공유 풀(Shared Pool)SQL 및 PL/SQL 실행을 위한 파싱 정보, 실행 계획, 데이터 딕셔너리 정보 등을 저장주요 구성 요소1) 라이브러리 캐시(Library Cache) : SQL, PL/SQL 코드, 실행 계획 등을 저장2) 데이터..
SQL 옵티마이저란?사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 액세스 경로를선택해주는 DBMS 핵심엔진 사용자로부터 전달받은 쿼리를 수행하는 데 후보군이될 만한 실행계획을 찾아낸다.데이터 딕셔너리에 미리 수집해 둔 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정한다.최저 비용을 나타내는 실행계획을 선택한다.SQL 옵티마이저가 생성한 처리절차를 사용자가 확인할 수 있게 트리 구조로표현한 것이 실행 계획(Execution Plan)이다.이 미리보기 기능을 통해 자신이 작성한 SQL이 테이블을 스캔하는지 인덱스를 스캔하는지, 인덱스를 스캔한다면 어떤 인덱스인지를 확인할 수 있고, 예상과 다른 방식으로 처리된다면 실행경로를 변경할 수 있다. 옵티마이저가 인덱스..
javascript를 ES5부터 사용해 온 사람이라면 변수를 선언할 때 습관적으로 var를 선언할 것이고 나도 그렇다. ES6부터는 상수를 선언하는 키워드 const와 var를 대체하는 키워드 let이 등장하였고, 더 이상 var를 사용하지 말라고 권고한다. 그런데 왜일까? 이유는 단순하다 버그와 오류에 취약하기 때문에 이유만 가지고는 납득이 잘 안 갈 수 있어 흥미로운 예제를 소개한다. function printMatrix(matrix){ for(var i=0; i
·리액트
웹팩웹팩은 모듈들을 모두 합쳐서 하나의 파일을 생성하는 번들러(bundler) 도구들 중 하나로, 리액트에서 주로 사용되고 있다. 대표적인 번들러로는 웹팩, Parcel, browserify가 있다. 리액트의 대표적인 모듈을 불러오는 코드import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; import logo from './logo.svg'; import './App.css'; create-react-app 을 이용하여 만든 리액트 프로젝트는 src/index.js를..
·리액트
1. NodeJS 설치 Node.js는 크롬 V8 자바스크립트 엔진으로 빌드한 자바스크립트 런타임이다. 이것으로 웹 브라우저 환경이 아닌 곳에서도 자바스크립트를 사용하여 연산할 수 있다. 리액트 애플리케이션은 웹 브라우저에서 실행되는 코드이므로 Node.js와 직접적인 연관은 없지만, 프로젝트를 개발하는 데 필요한 주요 도구들이 Node.js를 사용하기 때문에 설치한다. 이 때 사용하는 개발 도구에는 ECMAScript 6를 호환시켜주는 바벨, 모듈화된 코드를 한 파일로 합치고(번들링) 코드를 수정할 때마다 웹브라우저를 리로딩하는 등의 여러 기능을 가진 웹팩 등이 있다. https://nodejs.org/ko Node.js Node.js® is a JavaScript runtime built on Chr..

return문 return문은 for문의 위치에서 상관없이 탈출하게 된다. 즉, 중첩된 for문 안에서 사용해도 return문의 위치에서 즉시 로직이 중단된다. 실행결과 0 j : 0 j : 1 j : 2 1 break문 break문은 return문과는 다르게 자신이 포함되어 있는 반복문만을 탈출한다. 중첩 반복문에서 유용하게 사용된다. 실행결과apple j: 0 grape j: 0 orange j: 0 continue문 continue 제어문은 1회성으로 반복문을 탈출할 때 사용한다. return과 break문과는 다르게 한 번 반복문을 탈출하고 나서 다음 반복문을 실행한다 실행결과apple orange 응용중첩 for문에서 바깥쪽 for문을 건너뛰게 하기 많은 경우는 아니지만, 간혹 중첩 for문을 ..

데이터베이스를 관리하다보면 다량의 db 데이터를 udpate 해야 하는 경우가 종종 발생한다. 엑셀을 이용하면 다량의 쿼리문을 작성하기 편할 때가 있는데, 새 우편번호 업데이트를 예로 들어 보겠다. 우선 인터넷 우체국에서 제공하는 새 우편번호 검색기를 다운로드 한다. https://www.epost.go.kr/search/zipcode/cmzcd002k01.jsp 우편번호 DB와 검색기 소개 - 우편번호 안내 우편번호 DB란? 자체 전산시스템을 보유하고 있는 기업체 등에서 활용이 가능한 데이터 파일입니다. 도로명주소, 지번주소, 5자리 우편번호(구역번호) 등으로 구성되어 있으며, 텍스트(txt) 파일 www.epost.go.kr db에서 변경할 우편번호를 엑셀 파일로 내보내어, 이를 우편번호 검색기를 이..
1. insert문에 들어가야 할 컬럼을 select문으로 조회한다. select (select max(fileno)+1 from tb_file_data) + row_number() over(order by t.fileno) as fileno , t.cntno, 'public', t.orifilename, t.filename, t.filetype, t.filesize from TB_FILE_DATA t where code like '%open%' and delchk = 'N' 2. pk의 무결성제약조건을 만족시키기 위하여 select문으로 조회한 순번만큼 pk값을 더해준다. (select max(fileno)+1 from tb_file_data) + row_number() over(order by t.f..