클라이언트가 데이터베이스 서버에 연결을 요청해서 커넥션을 맺으면 서버 내부에 세션이 생성되고, 커넥션을 통한 모든 요청은 세션을 통해서 실행됨
세션은 트랜잭션을 시작하고, 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를 가지고 있음
플래시 메모리는 일련의 블록으로 구성되고 블록은 다시 일련의 페이지로 구성됨
데이터 읽기/쓰기는 페이지 단위로 가능하지만 삭제는 블록 단위로만 가능
데이터를 지우면 다음 번 데이터를 지우기 전까지 각 페이지는 한 번만 쓰기 가능