클라이언트가 데이터베이스 서버에 연결을 요청해서 커넥션을 맺으면 서버 내부에 세션
이 생성되고, 커넥션을 통한 모든 요청은 세션을 통해서 실행됨
세션은 트랜잭션을 시작
하고, SQL을 실행
하고, 커밋 또는 롤백을 통해 트랜잭션을 종료
함, 이후에 새로운 트랜잭션을 다시 시작할 수 있음
자동 커밋 : 각각의 쿼리 실행 직후에 자동으로 커밋을 호출
수동 커밋 : 수동으로 커밋이나 롤백 호출
보통 자동 커밋 모드에서 수동 커밋 모드로 전환
하는 것을 트랜잭션을 시작한다
고 표현함
autocommit
은 한 번 설정하면 해당 세션에서는 계속 유지됨, 중간에 변경하는 건 가능 (세션 변수)
입출력 장치는 I/O 버스
를 통해 CPU, 메인 메모리와 연결
I/O 버스는 기반 CPU에 독립적으로 설계되어 있음
I/O 버스에 연결되는 장치들에는 USB 컨트롤러, 그래픽 카드, 호스트 버스 어댑터가 있음
호스트 버스 어댑터
는 호스트 버스 인터페이스
에 의해 정의된 통신 프로토콜을 사용해서 I/O 버스와 하나 이상의 디스크를 연결함, 이때 호스트 버스 인터페이스의 예로 SCSI
, SATA
가 있음
PCI(Peripheral Component Interconnect)
모델에서는 시스템 내 각 장치가 버스를 공유하고, 한 번에 하나의 장치만 버스에 접근 가능
현대의 시스템에서는 PCI 버스
가 PCIe(PCI express) 버스
로 교체됨
PCIe 버스
는 이더넷 스위치
와 비슷한 방식으로 더 빠른 속도의 점대점 연결이 가능하게 함
CPU는 메모리 맵 입출력
을 사용해서 입출력 장치에 명령을 전달함
메모리 맵 입출력 시스템에서는 주소 공간 내 주소 블록이 입출력 장치와의 통신을 위해 예약되어 있음
이러한 주소 하나하나를 I/O 포트
라고 부름
버스에 연결된 입출력 장치는 하나 이상의 I/O 포트와 연관됨
읽기를 시작하라는 명령
과 읽기가 끝났을 때 인터럽트 신호를 보내는지 여부에 관한 파라미터를 나타냄읽고자 하는 논리적 블록 번호
를 나타냄메인 메모리 주소
를 나타냄직접
전송함read/write bus transaction
을 스스로 수행하는데 이를 DMA(Direct Memory Access)
라고 함DMA transfer
가 끝나고, 메인 메모리에 섹터 내용이 저장되면, 디스크 컨트롤러는 CPU에 인터럽트 신호
를 보내 입출력 작업이 끝났음을 알림 (CPU 칩의 외부 핀을 통해 신호를 보냄)OS 루틴
으로 점프해서 입출력 작업이 끝났음을 기록함SSD
는 플래시 메모리
기반 기술
디스크 컨트롤러
와 같은 기능을 하는 hardware/firmware device
인 flash translation layer
를 가지고 있음
플래시 메모리는 일련의 블록
으로 구성되고 블록은 다시 일련의 페이지
로 구성됨
데이터 읽기/쓰기
는 페이지 단위
로 가능하지만 삭제
는 블록 단위
로만 가능
데이터를 지우면 다음 번 데이터를 지우기 전까지 각 페이지는 한 번만 쓰기 가능