Computer Science

    운영체제 개요

    운영체제란? 운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고, 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어를 말한다. 즉, 운영체제는 각각의 응용 프로그램이 활동할 수 있는 환경을 제공하고, 응용 프로그램이 필요로 하는 컴퓨터 자원을 나누어주며, 응용 프로그램으로부터 컴퓨터 자원을 보호하는 역할을 한다. 운영체제는 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하는데, 이를 통해 응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용하도록 제한한다. 인터페이스 하드웨어 인터페이스 운영체제는 CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다. 하..

    리눅스 기본 개념

    기본 개념 가상 콘솔 가상 콘솔이란 가상의 모니터로, 우분투는 총 6개의 가상 콘솔(2번~7번)을 제공한다. 즉, 컴퓨터 1대에 모니터가 7개 연결된 효과를 낼 수 있다. 가상머신을 부팅하면 X 윈도가 자동으로 실행되는데, X 윈도가 가동된 화면은 6개의 가상 콘솔 중 2번째이다. 나머지 가상 콘솔은 텍스트 모드로 제공되며, 각각의 가상 콘솔로 이동하는 단축키는 Ctrl+Alt+(F2~F7) 런레벨 init 명령어 뒤에 붙는 숫자를 런레벨이라고 부르며, 리눅스는 시스템이 가동되는 방법을 7가지 런레벨로 나눈다. 런레벨 영문 모드 설명 0 Power Off 종료 모드 1 Rescue 시스템 복구 모드 2 Multi-User 사용 X 3 Multi-User 텍스트 모드의 다중 사용자 모드 4 Multi-Us..

    VMware와 Ubuntu

    가상머신 가상머신 소프트웨어란 컴퓨터에 설치된 운영체제(호스트 OS) 안에 가상의 컴퓨터를 만들고, 그 가상의 컴퓨터 안에 또 다른 운영체제(게스트 OS)를 설치/운영할 수 있도록 제작된 소프트웨어를 말한다. 호스트 OS: 진짜 컴퓨터에 설치된 운영체제 게스트 OS: 가상머신 소프트웨어로 생성한 가상머신 안에 설치된 운영체제 가상머신 소프트웨어로는 VMware사의 VMware vShpere, Microsoft사의 Hyper-V, Oracle사의 Virture Box 등이 있다. 가상머신은 가상의 CPU, RAM, 하드디스크, 랜카드, CD/DVD 등의 가상의 하드웨어 장치들을 가진다. VMware 특징 1대의 컴퓨터 만으로 실무 환경과 거의 비슷한 네트워크 환경을 구성할 수 있다. 운영체제의 특정 시점을..

    트랜잭션과 ACID

    트랜잭션 트랜잭션은 데이터베이스 내에서 수행되는 작업의 최소 단위로, 데이터베이스의 무결성을 유지하면서 데이터베이스의 상태를 변화시키는 기능을 수행합니다. 필요성 1. 트랜잭션은 데이터베이스에 장애가 발생했을 때 데이터를 복구하는 작업의 단위가 됩니다. 2. 트랜잭션은 다수의 사용자가 동시에 사용할 수 있도록 제어 작업을 하는 데 중요한 단위로 사용됩니다. 따라서 데이터베이스 무결성과 일관성을 보장하려면 작업을 수행하는데 필요한 연산들을 하나의 트랜잭션으로 정확하게 정의하고 관리하는 것이 중요합니다. 일반적으로 데이터베이스를 변경하는 INSERT 문, DELETE 문, UPDATE 문의 실행을 트랜잭션으로 관리! ACID 트랜잭션이 성공적으로 처리되어 데이터베이스의 무결성과 일관성을 보장하기 위해 만족해..

    `이상현상과 정규화

    이상현상 (Anomaly) 한 릴레이션에 여러 엔티티의 속성들을 혼합하게 되면 불필요한 데이터 중복이 발생하여, 릴레이션에 대한 데이터의 삽입, 수정, 삭제 연산을 수행할 때 부작용이 발생할 수 있다. 이러한 부작용을 이상 현상이라고 하며, 함수 종속성을 이용하여 릴레이션을 연관성 있는 속성들로만 구성되도록 분해해서 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어나가는 과정을 정규화라고 한다. 이상현상 설명 삽입 이상 데이터 삽입 시 필요한 자료가 부족해 삽입되지 않거나, 불필요한 자료를 삽입해야 하는 문제 갱신 이상 중복 튜플 중 일부만 변경되어 데이터가 불일치하게 되는 모순 삭제 이상 삭제하려는 자료가 포함된 전체 튜플이 삭제되면서 원하지 않는 데이터까지 삭제되는 정보 손실 함수 종속 하나의 릴..

    테이블 JOIN 튜닝

    MySQL과 MariaDB에서 테이블의 데이터를 결합하는 조인 알고리즘은 대부분 중첩 루프 조인을 사용한다. 성능 최적화를 위해 다른 조인 알고리즘을 제공하지만, 대부분의 조인 방식이 중첩 루프 조인에 기반을 두므로 튜닝 분석 시 실행 계획을 확인해야 한다. 작은 테이블이 먼저 조인에 참여하는 SQL 문 현황 분석 부서사원_매핑 테이블과 부서 테이블을 조인하여 부서 시작일자가 '2002-03-01' 이후인 사원의 데이터를 조회하는 쿼리 드라이빙 테이블인 부서 테이블과 드리븐 테이블인 부서사원_매핑 테이블은 중첩 루프 조인을 수행한다. 작은 크기의 부서 테이블에서 부서.부서번호 컬럼만 SELECT 절과 WHERE 절에 필요하므로, 부서명 인덱스를 활용해 인덱스를 풀 스캔한다. 상대적으로 큰 크기의 부서사원..

    SQL 문 튜닝

    테이블 테이블명 설명 사원 해당 기업에 소속된 직원들의 정보를 저장하는 테이블 부서 조직에서 관리하는 업무 부서에 관한 정보를 저장하는 테이블 부서사원_매핑 부서 테이블과 사원 테이블 간의 매핑 정보를 저장하는 테이블로, 한 명의 사원은 특정 부서에 소속되므로 그에 해당하는 연결 정보를 저장한다. 부서관리자 부서를 대표하는 관리자 사원의 정보가 저장되는 테이블 직급 사원이 위치하는 포지션을 나타내는 테이블로, 과거의 직급 정보부터 현재의 직급 정보까지 적재되어 있다. 급여 사원별로 매년 계약한 연봉 정보가 저장되는 테이블로, 과거 급여부터 현재 급여까지 매번 적재되어 있다. 사원출입기록 지역별, 출입문별로 출입한 이려게 관한 시간 정보를 적재하는 테이블 인덱스 목록 테이블명 키 유형 키 구성열 급여 PK..

    SQL 프로파일링

    프로파일링은 SQL 문에서 문제가 되는 병목 지점을 찾기위해 사용하는 툴을 말한다. 느린 쿼리나 문제가 있다고 의심되는 SQL 문의 원인을 확인할 수 있다. SQL 프로파일링 MySQL은 프로파일링이 기본적으로 비활성화 되어 있으므로, 활성화 작업을 진행한다. 프로파일링을 수행할 SQL 문을 출력하고, 로파일링된 쿼리 목록을 확인한다. 특정 쿼리 ID에 대해서만 프로파일링된 상태 내용을 확인하려면, 다음과 같이 쿼리 ID를 입력한다. 특정 Status에 해당되는 Duration 값이 높게 나타난다면 문제가 될 소지가 높은 구간으로 볼 수 있다. 추가 정보 프로파일링의 추가 정보를 확인하려면 아래와 같은 키워드를 이용하여 구체적으로 분석할 수 있다. show profile 구문 뒤에 해당 키워드를 작성하여..

    MySQL과 MariaDB 실행 계획

    실행 계획 실행 계획이란 SQL 문으로 요청한 데이터를 어떻게 불러올 것인지에 관한 계획, 즉 경로를 의미한다. 실행 계획을 확인하는 키워드로는 EXPLAIN, DESCRIBE, DESC가 있으며, 3가지 중 어떤 키워드를 사용해도 실행 계획의 결과는 같다. EXPLAIN SQL 문; DESCRIBE SQL 문; DESC SQL 문; MySQL SQL 문 앞에 EXPLAIN 키워드를 입력하고 실행하면 옵티마이저가 만든 실행 계획이 출력된다. MariaDB에 비해 partitions, filtered 열이 추가되면서 더 많은 정보를 보여준다. MariaDB 실행 계획 항목 분석 1. id SQL 문이 수행되는 차례를 ID로 표기한 것으로, 조인할 때는 똑같은 ID가 표시된다. ID의 숫자가 작을수록 먼저 ..