인기 글
-
광통신에 대해
광통신이란 전송 매체 광섬유를 이용한 통신 방식으로 기존의 동축케이블, UTP케이블을 이용한 통신 방식보다 빠르고 안정적인 장점을 가지고 있다. 현재(2019년) 지어지고 있는 아파트는 물론 광교신도시, 위례신도시, 동탄 제 2지구 등 2016년에 준공된 신축 아파트에서는 이미 광섬유를 이용한 통신망이 구축되어있다. 광통신의 장점 1) 광대역성 2) 저손실 3) 무유도성 4) 세경, 경량 5) 자원풍부 광섬유의 공학적 파라미터 4가지 1) 개구수 : 빛의 수광기능 능력 2) 수광각 : 빛이 전반사되는 최대 입사각 3) 비굴절율차 : 코어와 클래드 간의 굴절률 차이 4) 규격화 주파수 : 전파모드의 수 ※ 전반사란, 다른 매질 사이에서 그 매질의 차이에 대해 한 가지 매질로만 반사되는 것을 말한다. 각도에..
더보기
-
SQL - WHERE 절에서 NULL 값 조건 주는 법
NULL 값이 포함된 칼럼에 대해서 조건을 잡을 때 정확하게 값을 분류해내지 못하는 문제가 생길 수 있다. 이럴 땐 NVL 함수를 이용해서 NULL값을 실 값으로 치환한 후 조건을 잡아야 한다. ex) WHERE NVL(col1,'X'); co1이 조건을 잡을 컬럼, X는 임의의 수
더보기
-
CTL에 대해서
1. SQL Loader : oracle에서 table, database에 값을 insert/truncate 해주는 툴 - 데이터 파일과 컨트롤 파일 두 개를 이용한다. 2. .dat : 데이터 파일, import 할 3. CTL : 컨트롤 파일, 쉘 파일처럼 명령어가 포함되어 있는 파일로 SQL Loader는 CTL 파일을 읽어서 데이터를 적재한다. 4. 새롭게 알게 된 지식 : direct 옵션 - 명령어에 direct = true 옵션을 추가하면, 공유 메모리 영역인 SGA가 아닌 PGA 영역을 사용하기 때문에 경합 없이 고속으로 import할 수 있다. 5. 앞으로 하고 싶은 것 - 대용량 배치(insert) 작업에 대해 미리 만들어둔 .dat 파일을 이용하는 방법은 어떨까? -> 공유 메모리를 ..
더보기
-
[ORACLE] SGA 공유 메모리 영역
1. 같은 프로세스 내의 여러 개의 쓰레드가 같은 메모리를 공유하는 것과 같이 오라클 DBMS 내부에서도 공유 메모리 영역이 존재한다. 2. 다음 그림과 같이 특정 기능과 목적에 따라 영역이 구분된다. 3. 각 영역에서 하는 기능이 무엇인지 차례대로 정리해보았다. 순서 : 공유 풀 -> 대형 풀 -> 데이터 버퍼 캐쉬 -> 리두 로그 버퍼 -> 자바 풀 연관 : 백그라운드 프로세스(DBWR), 래치와 락, NL 조인과 HJ 조인 4. 먼저 공유풀은 고정 영역과 동적 영역으로 다시 나뉘게 된다. 이렇게 보면 그림 3-5에 라이브러리 캐쉬, 데이터 딕셔너리 캐쉬는 왜 아래로 빼놓았는지 모르겠다. 4.1 고정 영역 해당 영역에는 오라클이 SGA를 관리하는 메커니즘 및 오라클 파라미터 정보가 저장된다. 파라미터..
더보기
공부 이야기
-
mysql > 별 다른 짓을 안해도 자동으로 last_modified 처리하는 방법
* 테이블을 생성할 때 칼럼 뒤에 다음 명령어를 추가해주면 된다. CREATE TABLE exchange_rates_now ( cur_unit VARCHAR(20) PRIMARY KEY, ttb DECIMAL(10, 2), tts DECIMAL(10, 2), deal_bas_r DECIMAL(10, 2), cur_nm VARCHAR(50), last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); * 기존 테이블에 칼럼을 추가하는 방법 ALTER TABLE exchange_rates_now ADD COLUMN last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CUR..
더보기
-
MySQL 테이블 DCL 관련 기능
describe 테이블명; - 칼럼, 데이터타입, NULL 여부, PK 여부, 기본값, 제약조건, 기타정보를 확인할 수 있음 SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '데이터베이스명' AND TABLE_NAME = '테이블명'; - 조회할 테이블의 제약조건을 확인할 수 있음 (작은 따옴표 필수) ALTER TABLE 테이블명 DROP FOREIGN KEY 제약명; - 제약조건을 제거하는 방법 ALTER TABLE 테이블명 ADD FOREIGN KEY (테이블명.FK명) REFERENCES 참조테이블(참조테이블.PK명); - 제약조건을 추가하는 방법 ALTER TA..
더보기
-
ORM - Autocommit에 대해
python - sqlalchemy autocommit을 true로 하는 경우, 개별 트랜잭션에 대해 프레임워크에서 자동으로 명시적으로 commit()을 하지 않아도 자동으로 begin() ~ commit()/rollback()을 감싸준다. 하지만 명시적으로 commit()을 하는 경우, 그 전에 begin() 메소드를 호출해줘야 한다. 트랜잭션을 원자적으로 관리하고 싶은 경우 autocommit을 false로 둔다.
더보기
-
Isolation level이란?
트랜잭션이 시작하고 끝나는 시점 / Commit 여부 / 두 개의 변수인 경우 이 세 가지를 염두해놓고 생각해봐야 한다. 먼저 데이터 일관성이 깨지는 과정을 단계별로 알아보면 다음과 같다. 1) read uncommit - commit 되지 않은 데이터를 읽기 때문에 동시에 두 개 이상의 트랜잭션에서 쓰기 연산 수행시 데이터 일관성이 깨질 수 있음 2) read commit - commit 데이터를 읽고 쓰기 연산을 수행하기 때문에 데이터 일관성이 '어느 정도' 보장 - A 트랜잭션이 종료되기 전에 B 트랜잭션이 쓰기 연산을 하고 commit 까지 해버리면 A 트랜잭션이 종료될 때 시작시 조회했던 값이랑 불일치하는 경우가 발생하고 이를 non-repeatable read 라고 함. 반복 조회한 값이 서로..
더보기