목록3학년 1학기 (106)
오래 못 할 짓 하지 않기

스레드(thread) : 프로세스를 구성하는 실행 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. ● 실행 흐름이 하나인 프로세스 ( = 단일 스레드 프로세스 ) ● 실행 흐름이 여러 개인 프로세스 ( = 멀티 스레드 프로세스 ) → 프로세스를 이루는 여러 명령어를 동시에 실행 가능하다. 어떻게 여러 스레드가 동시에 나누어져서 실행될 수 있을까?? ● 스레드의 구성요소 : 스레드 ID / PC를 비롯한 Register 값 / Stack 실행에 필요한 최소한의 정보를 유지한 채 실행된다. 하지만 하나의 프로세스 내에 있는 스레드들은 해당 프로세스의 자원을 공유할 수 있다. 멀티 프로세스 vs 멀티 스레드 동일한 작업을 수행하는 단일 스레드 / 프로세스 여러 개 [ = 멀티 프로세스 ] ..

Three-tier architecture ● Presentation : 보여지는 부분 담당 ● Logic : 서비스 관련 로직 담당 ● Data : 데이터 저장 및 관리 담당 당근마켓 예시로 Logic과 Data tier를 분석해보자 이렇게 Logic tier 에 기능이 들어가고 Data tier에 정보들이 담긴다 하지만 Data tier에서 사용되는 Stored procedure의 사용 목적은 비즈니스 로직 구현이다. 즉 Data tier 에 Business Logic을 넣는다는 것 Stored procedure의 장점 1) Application에 transparent하다. : 어떤 걸 바꾸어도 크게 틀을 바꾸지 않고도 내용을 바꿀 수 있다. = Procedure 없이 코드를 작성했을 시에는 모든 걸..

Stored procedure : 사용자가 정의한 프로시저 구체적인 하나의 task를 수행한다. 예제1) 두 정수의 곱셈 결과를 가져오는 프로시저 작성하기 ▶ delimiter $$ ▶ Create procedure product(In a int, In b int, OUT result int) // Input parameter랑 Output parameter 를 명시해야한다. (In은 생략 가능) ▶ Begin ▶ Set result = a*b; ▶ END ▶ $$ ▶ delimiter ; (사용법) ▶ call product( 5 , 7 , @result); ▶ select @result; 예제2) 두 정수의 맞바꾸는 프로시저 작성하기 ▶ delimiter $$ ▶ Create procedure cha..

이런 거에 대해 알아볼 예정 프로세스 상태 프로세스는 5가지 상태로 나눌 수 있다 생성 / 준비 / 실행 / 대기 / 종료 ● 생성 상태 - 이제 막 메모리에 적재되어 PCB를 할당받은 상태 - 준비가 완료되면 준비 상태로 넘어감 ● 준비 상태 - CPU를 할당받아 실행할 수 있지만, 자신의 차례를 기다리는 상태 - 자신의 차례가 되면 실행상태로 (= 디스패치) ● 실행 상태 - CPU를 할당받아 실행 중인 상태 - 할당된 시간을 다 사용했을 때 (= Timer Interrupt 발생 시) 준비 상태로 돌아간다. - 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지(= 입출력 완료 Interrupt를 받을 때까지) 대기 상태 ● 대기 상태 - 프로세스가 실행 도중에 입출력 장치를 사용하는 경우 ..

stored function : 사용자가 정의한 함수 예제) 직원의 ID를 10자리 정수로 랜덤하게 발급하려고 한다. ID의 맨 앞자리는 1로 고정한다. → 1xxxxxxxxx ▶ delimiter $$ ▶ Create function id_generator() //parameter 없음 ▶ Returns int ▶ No SQL // 중요한 거 아님 ▶ Begin // 이제부터 함수 Body 시작 , 아래부터 동작할 부분임 ▶ RETURN ( 1000000000 + floor(rand()*1000000000)); ▶ END // 함수 Body 끝 ▶ $$ // delimiter로 설정한 세미콜론 ▶ delimiter ; // 다시 delimiter로 세미콜론 설정을 바꾼다. 이렇게 만들어진 함수를 사용해..

프로세스 = 실행 중인 프로그램 이라고 대략적인 정리를 했다. 그렇다면 프로세스를 직접 확인해보자 간단하게 윈두우 작업 관리자로도 확인이 가능하다. 프로세스는 주로 두 가지로 나뉘는데 1) Foreground process → 사용자가 볼 수 있는 공간에서 실행되는 프로세스 2) Background process → 사용자가 볼 수 없는 공간에서 실행되는 프로세스 여기서도 둘 로 나뉘는데 - 사용자와 상호작용 가능한 백그라운드 프로세스 - 사용자와 상호작용하지 않고, 그저 정해진 일만 하는 프로세스 = 데몬, 서비 가 있다. 프로세스 제어 블록 그렇다면 OS가 이러한 프로세스를 어떻게 관리할까? → 프로세스를 실행하기 위해서는 CPU가 필요하다. 그러나, CPU 자원은 제한되어 있다. 따라서 프로세스들은..

Order by - 조회 결과를 특정 Attribute(들) 기준으로 정렬 - 오름차순 ACS (Defualt) - 내림차순 DESC 예) 연봉 기준으로 모든 직원들을 정렬하려면? 오름차순 : Select * From employee ORDER BY salary; 내림차순 : Select * From employee ORDER BY salary DESC; 예2 ) 직원들을 부서별로 오름차순 정렬하고, 같은 부서 내에서는 연봉 기준으로 내림차순으로 정렬한다면? Select * From employee ORDER BY dept_id ASC, salary DESC; ▶ 여러 Attribute 가 올 때 우선순위는 앞에 명시된 Attribute 차례로 정렬된다. Aggregate function : 여러 Tup..

Join : 두 개 이상의 table에 있는 데이터를 한 번에 조회하는 것 ● 종류 1) Implicit Join : From 절에서는 사용될 Table만 나열 Where 절에서는 Join condition 명시 [ From 절에서 ] Employee table이 Department table과 Join을 하는데 dept_id와 id가 같은 것들만 Join을 한다. 특징) from 절에서 On 뒤에 Join condition이 명시된다. 단점) 1. Where 절에서 Selection condition 과 Join condition 이 같이 있어서 가독성이 떨어진다. 2. 조금만 복잡한 Join 쿼리를 작성하다보면 꼬일 가능성이 크다. 2) Explicit Join : From 절에 Join 키워드와 함..

NULL 1) Unknown : True 일 수도 있고, False일 수도 있다. 알 수 없음 2) Unavailable or withheld : 사용 불가 3) not applicable : 애초에 해당사항 X ex) 휴대폰 번호 칸이 NULL임 , 알고보니 폰이 없음 Attribute value가 NULL일 경우 14와 15의 생일이 둘 다 NULL ! = 14와 15의 생일은 같다. Value 가 NULL인 데이터를 찾기 Select id from employee Where birth_date = null; 이러면 아무것도 안 나옴 Select id from employee Where birth_date is null; 이래야 birth date가 NULL인 값들을 볼 수 있다. Three-Valu..

Subquery : 윙의윙 느낌임 예시를 하나 하고 설명해주겠음 (저번에 만든 table에 이어서 만든다) ===============문제 1) ============= id=14인 직원의 생일보다 빠른 직원들의 [ id,이름,생일 ] 을 알고자 한다. [ 1번 접근법 ] ● 우선 id=14인 직원의 생일을 구한다. → select birth_date from employee where id=14; (결과) 1992-08-04임. → select id,name,birth_date from employee where birth_date < '1992-08-04'; 이 두 개의 쿼리를 하나의 쿼리로 바꿀 방법이 있다 [ 2번 접근법 ] 위에서 첫 번째 쿼리의 값이 '1992-08-04' 이므로, 그 값을 w..