터미널에서 mysql 서버에 로그인 하면 mysql>
문자열이 나옴
-> 이를 프롬프트라 읽으며 MySQL이 사용자로부터 명령을 입력받을 수 있는 상태라는 것을 표시하는 기호
-> 이렇게 사용자가 연결이 되면, 이 연결을 시스템 체계에서는 커넥션
이라고 부름
위처럼 커넥션의 시작과 종료 사이에 사용자는 DBMS와 다양한 교환을 하게 됨
-> 교환의 시작과 종료 사이에 단위를 세션
이라고 함
-> 커넥션이 확립된 후에 세션이 만들어짐
커넥션과 세션은 엄밀히 말하면 다름
-> 기본적으로 커넥션과 세션은 1대1로 대응되기 때문에 커넥션이 성립되면 동시에 암묵적으로 세션도 시작되고 세션을 끊으면 커넥션도 끊어지는 경우가 많다
일반적으로 폰으로 하는 통화는 1대1로 연결되지만, DB는 동시에 복수의 사용자와 커넥션을 만들 수 있음
-> 상대가 통화중이면 지금은 통화중이라는 내용을 듣지만, DB는 복수의 사용자가 동시에 커넥션 해서 병행 처리를 수행할 수 있음
show status를 통해 커넥션 상태나 수를 조사할 수 있음
-> 이때 사용자 수가 Threads_connected의 value 값으로 표시됨
-> 이와 같은 명령어는 SQL과 다른 용도의 명령어
위와 같은 명령어를 관리 명령이라고 함
ex)
mysql> show status like Uptime;
mysql> show status like 'Queries';
보통 SELECT, INSERT, DELETE, UPDATE로 시작안하면 보통 관리 명령
데이터베이스는 계층으로 나뉘어 있음
-> DB를 사용한다는 것은 DBMS에 저장된 테이블을 SQL을 사용해서 조작하는 것
데이터베이스 내부의 테이블은 1개가 아닌 몇 개의 그룹으로 나눠서 관리 됨
-> 컴퓨터에서 파일을 분류하기 위해 폴더를 사용하는 느낌
-> 이 폴더에 해당하는 것이 스키마
테이블은 실제로 몇개의 스키마
속에 저장되는 형식을 취함
-> 스키마는 사용자가 자유롭게 만들 수 있어 용도별로 나누거나 접근 제한을 걸수 있다
-> 스키마 상위에는 또 하나의 계층으로 데이터베이스
가 있음
-> 여기서 데이터베이스는 데이터를 관리하는 기능의 집합체라기 보다는 일종의 계층을 표시하는 의미
-> 이러한 데이터베이스보다 더 위의 개념이 인스턴스
라는 개념
인스턴스
란 물리적 개념으로, DBMS가 동작할 때의 단위
-> OS 입장에서는 프로세스라고도 부름
-> DBMS에 따라서는 서버 프로세스 또는 서버로 부르기도 함
쉽게 말해 인스턴스는 메모리나 CPU를 사용하는 존재로, OS에 존재하는 실체
위와 같이 mysqld라는 한개의 인스턴스가 존재
요약하자면 1개의 인스턴스에는 복수 개의 데이터베이스가 존재할 수 있고, 1개의 데이터베이스 아래에는 복수의 스키마가 존재할 수 있으며, 1개의 스키마 아래에는 복수 개의 테이블이 존재할 수 있음
-> 트리 구조
PostgreSQL, SQL server는 위와 같이 4계층을 따르지만 MySQL,Oracle은 스키마와 데이터베이스 중 한 계층을 생략함
mysql은 인스턴스 -> 스키마 -> 테이블 형식
Oracle은 위의 그림과 같이 인스턴스 -> 데이터베이스 -> 스키마 -> 테이블 형식이지만 인스턴스 아래에 한개의 데이터베이스만 만들수 있다는 제약이 있음