DB 스토리지 엔진 : 물리적 저장장치에서 데이터를 읽어오는 역할을 담당.
가장 많이 쓰인다고 알려진 스토리지 엔진인 MyISAM, InnoDB, Archive 의 3가지 스토리지 엔진을 비교/정리 하려고 한다.
InnoDB :
따로 스토리지 엔진을 명시하지 않으면 default 로 설정되는 스토리지 엔진이다. InnoDB는 transaction-safe 하며, 커밋과 롤백, 그리고 데이터 복구 기능을 제공하므로 데이터를 효과적으로 보호 할 수 있다. InnoDB는 기본적으로 row-level locking 제공하며, 또한 데이터를 clustered index에 저장하여 PK 기반의 query의 I/O 비용을 줄인다. 또한 FK 제약을 제공하여 데이터 무결성을 보장한다.
MyISAM :
트랜잭션을 지원하지 않고 table-level locking을 제공한다. 따라서 multi-thread 환경에서 성능이 저하 될 수 있다. 특정 세션이 테이블을 변경하는 동안 테이블 단위로 lock이 잡히기 때문이다.텍스트 전문 검색(Fulltext Searching)과 지리정보 처리 기능도 지원되는데, 이를 사용할 시에는 파티셔닝을 사용할 수 없다는 단점이 있다.
Archive :
‘로그 수집’에 적합한 엔진이다. 데이터가 메모리상에서 압축되고 압축된 상태로 디스크에 저장이 되기 때문에 row-level locking이 가능하다. 다만, 한번 INSERT된 데이터는 UPDATE, DELETE를 사용할 수 없으며 인덱스를 지원하지 않는다. 따라서 거의 가공하지 않을 원시 로그 데이터를 관리하는데에 효율적일 수 있고, 테이블 파티셔닝도 지원한다. 다만 트랜잭션은 지원하지 않는다.
검색시 일어나는 일
요약:
브라우저에 도메인을 입력 → DNS서버에 IP주소를 요청 → 수신한 IP주소에 해당하는 웹서버에 접속
설명:
검색했을 때 일어나는 일
in 브라우저
url 입력값을 브라우저 내부에서 url 정보를 의미 조사해 request 메세지 만들어서 http protocol로 만들어져있고 header + body. 그걸 웹서버로 전송하기 위해 ip로 변환해야 되서 dns에 정보를 요청한다. 근데 dns 서버는 size커지면 dns 내부에서 로드밸런스를 이용해서 round robin방식으로 다른 ip 주소를 응답해서 만들어진 메세지는 웹서버로 전송한다. 근데 그건 브라우저가 아니라 7layer를 거쳐서 그 데이터를 전기신호 바꿔 보낸다. 그래서 과정을 거쳐 보내진다. 그건 전기신호 였을 텐데 그럼 원래 신호로 바꿔야 하는데, 그 전기신호는 처음에는 로컬 area 에 있는 LAN에다가 뿌려 network 사이에
python gil
gil의 역사
Python이 태동하던 시기에는 thread라는 개념이 없었다. 시간이 흘러 thread 개념으로 인한 문제를 해결해야하는 상황이 왔다. python속에 있는 C extension들을 새로운 메모리 관리 방법에 맞춰서 모두 바꾸는 것은 불가능하다. 그래서 현실적인 방안은 GIL이었다.
gil이란
여러개의 쓰레드가 있을떄 쓰레드간의 동기화를 위해 사용되는 기술 중 하나이다. GIL은 전역에 lock을 두고 이 lock을 점유해야만 코드를 실행할 수 있도록 제한한다. 따라서 동시에 하나 이상의 쓰레드가 실행되지 않는다. 따라서 3개의 쓰레드가 분산해서 일을 처리하게 될 때도 실제로 CPU를 점유할 수 있는 thread는 한 개뿐이다. 즉 실제로 사용하는 코어는 하나뿐이라는 것이다.
parrel하게 하고 싶으면 멀티 프로세싱하면 된다.
분산 처리 시스템(Distributed processing system)
하나의 대형 컴퓨터에서 수행하던 기능을 통신망을 통하여 상호간에 교신하고 처리하는 방식으로 자료 처리 시스템들의 상호연결은 컴퓨터 네트워크에 의해 이루어진다.
분산처리 시스템의 목적
- 자원 공유
- 계산속도 향상
- 신뢰성 향상
- 통신 기능
- 다수의 노드가 네트워크로 상호 연결되어 있으면 각각의 프로세서 간에 데이터를 접근하고 공유할 수 있다.
가비지 컬렉터
메모리가 부족할 때 가비지를 정리해주는 프로그램, 정리되지 않은 채로 남겨져 있는 메모리를 해제하는 것! 메모리를 더 달라는 요청이 올 때 가비지 컬렉터가 실행되고, 24시간 돌아가는 프로그램은 idle time(한가 할 때) 가비지 컬렉터가 실행된다. 그리고 jvm이 종료되면 모든 사용 메모리는 os에 반납된다.