본문 바로가기

전체 글85

데이터베이스 첫걸음 정리 - 20장. 행 개수 구하기 - COUNT SQL은 데이터베이스라 불리는 데이터 집합을 다루는 언어입니다. 이 같은 집합의 개수나 합계가 궁금하다면 SQL이 제공하는 집계함수를 사용하여 간단하게 구할 수 있습니다. COUNT SQL은 집합을 다루는 집계함수를 제공합니다. 일반적인 함수는 인수로 하나의 값을 지정하는데 비해 집계함수는 인수로 집합을 지정합니다. 이 때문에 집합함수라고도 불립니다. 즉, 집계함수는 집합을 특정방법으로 계산하여 그 결과를 반환하는 함수입니다. 집계함수 중에 하나인 COUNT 함수는 인수로 주어진 집합의 개수를 구해 반환합니다. COUNT(집합) 이번에는 COUNT의 사용예시입니다. select COUNT(*) FROM sample; sample 테이블의 현재 데이터가 두개가 들어가 있기 때문에 결과값도 2가 출력되는 것.. 2022. 9. 14.
경쟁상황 (Race Condition), 뮤텍스, 세마포어 경쟁 상황(Race Condition)이란? 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황(race condition)이라고 합니다. 경쟁 상황 예시 여러개의 프로세스가 어떤 자원을 공유하게 된다면 데이터의 무결성에 문제가 생길 수 있습니다. static int count; func thread_1() { for (int i = 0; i < 10000000; i++) { count++; } } func thread_2() { for (int i = 0; i < 10000000; i++) { count--; } } 위의 코드처럼 서로 다른 쓰레드가 count라는 하나의 변수에 접근한다고 가정해봅시다. 위의 코드의 값은 같.. 2022. 9. 11.
데이터베이스 첫걸음 정리 - 19장. 물리삭제와 논리삭제 두 종류의 삭제 방법 데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 크게 물리삭제와 논리삭제 두 가지로 나뉩니다. 하지만 SQL 명령중에 실제로 물리삭제와 논리삭제를 구분하여 삭제하는 방법은 존재하지 않습니다. 이는 시스템 설계에 대한 부분으로 삭제에 대해 두가지 전략을 사용할 수 있다고 생각하면 됩니다. 물리삭제 물리삭제는 SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하는 방법입니다. 물리 삭제의 장점 간단한 방법으로, 논리 삭제에 비해 고려할 부분이 적습니다. 물리 삭제의 단점 한번 삭제시 데이터를 되돌리기 쉽지 않습니다. 논리 삭제 테이블의 삭제 플래그와 같은 열을 미리 준비둔 후 데이터를 삭제해야하는 상황때 DELETE를 사용하여 삭제하지 않고 UPDATE 명령을 통해 삭제 플래그.. 2022. 9. 11.
데이터베이스 첫걸음 정리 - 18장. 데이터 갱신하기 - UPDATE 데이터 갱신 작업은 시스템을 다루는 과정에서 자주 발생합니다. 우리가 웹 사이트에 들어가서 사용자 정보 수정을 하는 등 데이터 갱신은 자주 일어날 수 있습니다. 이런 경우에 UPDATE 명령을 통해 데이터를 갱신할 수 있습니다. UPDATE 문법 SQL에서 데이터를 갱신할 때 UPDATE 명령을 사용할 수 있습니다. UPDATE 명령은 다음과 같이 사용할 수 있습니다. UPDATE 테이블명 SET 열명 = 값 WHERE 조건식 UPDATE 명령을 실행하기 전에 기존 테이블에 어떤 데이터가 저장되어 있는지 SELECT 명령으로 확인하겠습니다. SELECT * FROM sample DELETE와 달리 UPDATE는 필드 단위로 데이터를 갱신할 수 있습니다. WHERE 구에 조건을 지정하면 그에 일치하는 행을.. 2022. 9. 10.
데이터베이스 첫걸음 정리 - 17장. 삭제하기 DELETE 데이터베이스는 하드디스크와 같은 저장장치에 데이터를 저장해 관리합니다. 하지만 저장장치에는 저장용량이 정해져있기 때문에 데이터를 무제한으로 저장할 수는 없습니다. 결국 데이터를 저장하다보면 저장공간이 모자라게 될 수 있고 데이터를 삭제하는 경우도 발생합니다. 이때 DELETE 명령을 사용하여 데이터를 삭제할 수 있습니다. DELETE로 행 삭제하기 테이블에서 행을 삭제하기 위해서는 DELETE 명령을 사용해야 합니다. DELETE 명령은 다음과 같이 작성합니다. DELETE FROM 테이블명 WHERE 조건식 여기서 WHERE로 조건식을 주지않고 DELETE FROM 테이블명만 적을 경우 테이블안에 데이터가 전부 삭제됩니다. 다음은 테이블 행 삭제 예시입니다. DELETE FROM sample WHERE.. 2022. 9. 9.
데이터베이스 첫걸음 정리 - 16장. 행 추가하기 INSERT 데이터베이스에서 데이터를 조회할때는 SELECT 명령을 통해 조회할 수 있습니다. 그렇다면 데이터를 추가할때는 어떻게 해야할까요? 데이터베이스 데이터를 추가할때는 INSERT 명령을 사용할 수 있습니다. INSERT로 행 추가하기 INSERT 명령을 사용하면 테이블의 행 단위로 데이터를 추가할 수 있습니다. 먼저 테스트 용도로 다음 테이블을 생성해봅시다. CREATE TABLE sample ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, a varchar(30) NOT NULL, b date ); desc로 해당 테이블의 구조를 확인해보면 다음과 같습니다. 이제 INSERT 명령을 통해 행을 추가해봅시다. 먼저 INSERT INTO 뒤에 추가할 테이블 명을 적어줍시.. 2022. 9. 8.
CPU 스케줄링 프로세스 스케줄러 멀티 프로그래밍의 목적은 CPU 이용을 최대화하기 위해 항상 어떤 프로세스가 실행되고 있는 상태를 유지하는 것이 목표입니다. 목적을 달성하기 위해 사용자가 어떤 프로그램과 상호작용하고 있다면 다른 프로세스와 교체하여 항상 CPU 코어에 프로세스가 실행되고 있어야 합니다. 프로세스 스케줄러는 목표를 달성하기 위해 코어에 실행가능한 여러 프로세스 중에서 하나의 프로세스를 선택해야 합니다. 하나의 CPU 코어는 한 번에 하나의 프로세스를 실행할 수 있으며 2개 이상의 프로세스가 동시에 실행되기 위해서는 여러개의 코어가 필요합니다. 동시에 실행되는 프로세스가 코어의 개수를 넘어갈 수는 없습니다. 스케줄링 큐 프로세스가 메모리에 올라오면 준비 큐에 들어가서 준비 상태가 되어 Ready Queue.. 2022. 9. 7.
데이터베이스 첫걸음 정리 - 15장. CASE 문으로 데이터 변환하기 함수를 사용하면 데이터를 임의의 형태로 변경할 수 있지만, 특정 상황에 따라 데이터를 변경하고 싶을 수도 있을 수 있습니다. 이런 경우 CASE문을 활용할 수 있습니다. CASE 문 특정한 상황에 특정 데이터를 반환시키고 싶을때 CASE문을 활용하면 간단하게 해결할 수 있습니다. CASE문은 다음과 같은 형태로 사용합니다. CASE WHEN 조건식 THEN 식1 [WHEN 조건식2 THEN 식2] [ELSE 식3] END 먼저 WHEN 절에는 참과 거짓을 반환하는 조건식을 적습니다. 해당 조건을 만족하여 참이 되는 경우는 THEN 절에 기술한 식이 처리됩니다. WHEN 절의 조건식을 차례로 비교해 나가다가 가장 먼저 조건을 만족한 WHEN 절과 대응하는 THEN 절 식의 처리결과를 CASE 문의 결과값으.. 2022. 9. 6.