본문 바로가기

반응형

분류 전체보기

(70)
데이터베이스 튜닝과 확장 데이터베이스 튜닝 데이터베이스 튜닝은 시스템의 성능을 최적화하고 자원을 효율적으로 사용하기 위해 데이터베이스 관리 시스템 (DBMS) 의 설정을 조정하는 과정이다. 데이터베이스 튜닝은 크게 서버 튜닝, SQL 튜닝, 스키마 튜닝 등 으로 나눌 수 있다. SQL 튜닝 데이터 검색, 삽입, 갱신, 삭제 작업의 효율을 높이기 위해 SQL 쿼리를 최적화하는 방법이다. 1. 필요한 필드만 선택해서 가져온다. -- 나쁜 예: 모든 필드를 선택 SELECT * FROM employees WHERE department_id = 10; -- 좋은 예: 필요한 필드만 선택 SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 10; 2..
데이터베이스 인덱스 인덱스 (Index) 인덱스란 데이터베이스 테이블에 대한 검색 성능의 속도를 향상시키기 위해 사용하는 자료구조이다. 마치 책에서 특정 부분을 찾을 때 목차를 활용하는 것과 비슷한 원리로 동작한다. 책에서 원하는 부분을 찾아 읽을 때, 처음부터 순서대로 읽는 것은 많은 시간이 걸릴 것이다. 그래서 목차를 확인하고 원하는 부분으로 직행하는 것이 더 빠르다. "인덱스"가 이런 방식으로 작동한다. 위 이미지는 PK 에 대한 인덱스를 생성한 모습이다. 인덱스는 Key 와 Pointer 쌍으로 구성된다. Key : 검색하려는 데이터의 값 Pointer : 실제 데이터 레코드를 가리키는 포인터 그림에서 보듯이 인덱스 엔트리는 모든 레코드에 대해 생성되는 것이 아닌, 일정한 크기의 블록 단위로 생성된다. 그렇기 때문에..
[프로그래머스] 디스크 컨트롤러 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 분석 디스크를 스케줄링하여 작업 시간이 제일 적도록 하는 문제이다. 작업 (작업이 요청되는 시점, 작업의 소요 시간) 배열을 받아 어떤 작업을 먼저 처리하면 작업의 평균 처리 속도가 제일 빠를 지 알아내야 한다. 문제 예시처럼 작업 길이가 짧은 작업 부터 처리해주는 것이 이 문제를 푸는 방법이다. 주의할 점은 작업 소요 시간이 길더라도 현재 실행 중인 작업이 없다면 먼저 실행시켜야 한다..
[클린코드] 간결하고 안전한 함수 작성하기 로버트 C. 마틴의 클린 코드 도서를 정리한 내용입니다. 함수를 작성할 때는 무조건 간결하게 작성하는 것이 좋다. 당연히 짧은 함수가 더 이해하기 쉽기 때문이다. 이번 장에서는 함수를 간결하고 안전하게 작성하는 법에 대해 정리하였다. 좋은 함수를 만드는 규칙 함수는 무조건 작게 만들자 함수의 들여쓰기 수준은 가능하면 1단이나 2단을 넘어가지 않게 하는 것이 좋다. 그래야 함수를 읽고 이해하기 쉽다. 함수는 한 가지 일만 해야 한다. 함수는 한 가지 일을 잘 해야 한다. 만약 함수 내에서 다른 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 가지 일을 하는 것이다. 서술적인 이름을 사용하라! 함수의 이름은 함수가 하는 일을 잘 표현할 수 있어야 한다. testableHtml 이란 이름 보..
데이터베이스 설계와 정규화 데이터베이스를 설계하다 보면 어떻게 설계하는 것이 좋을지 고민해 본 적이 있을 것이다. 이번 시간에는 좋은 데이터베이스가 무엇인지 또 그것을 위한 가이드라인을 알아보고 정규화와 역정규화에 대해서도 알아보겠다. 글에 나오는 릴레이션은 테이블이라고 생각해도 된다. 좋은 데이터베이스 설계란? 좋은 데이터베이스를 설계하기 위해서는 아래 4가지 항목을 지키기 위해 노력해야 한다. 속성의 의미를 명확하게 표현하고 있어야 한다. 튜플의 중복값을 최소화하여야 한다. 튜플의 null 값도 최소화하여야 한다. 불필요한 튜플 생성 가능성을 허용해서는 안된다. 좋은 데이터베이스 스키마 설계를 위한 가이드라인 1) 하나의 엔티티 또는 릴레이션 타입에는 하나의 릴레이션 스키마를 설계해라! 하나의 스키마에 여러 개체나 관계 타임을..
[클린 코드] 클린 코드와 의미 있는 이름 짓기 로버트 C. 마틴의 클린 코드 도서를 정리한 내용입니다. 클린 코드란? 성능이 좋은 코드 의미가 명확한 코드 (읽기 쉬운 코드) 중복이 제거된 코드 왜 클린 코드를 짜야 할까? 프로그래머는 코드를 읽는 시간이 새로운 코드를 짜는 시간보다 훨씬 많기 때문이다. 그렇기 때문에 읽기 쉬운 코드를 짜는 것은 너무나도 중요한 일이다. 클린 코드를 짜는 것은 상당한 노력이 필요하다. 마감일을 맞추기 위해 어쩔 수 없이 나쁜 코드를 작성하고 코드의 영향 범위가 너무 커서 괜히 건들였다가 다른 부분에 버그가 생길 까 두려워 나쁜 코드를 방치한다. 하지만 이런 나쁜 코드들은 나중에 결국 생산성을 저하 시키게 된다. 지속적인 클린 코드를 작성하기 위해 보이스카우트 룰을 적용시켜보자 "떠날 때는 찾을 때 보다 캠프장을 더욱..
SQL 집단함수와 GROUP BY 절, HAVING 절 정리 집단 함수 검색 결과의 합이나 개수 등 요약 정보를 제공하는 함수로 COUNT, SUM, MAX, MIN, AVG 가 있다. 집단 함수는 SELECT 절 만이 아닌 WHERE 절에도 올 수 있다. 일반적으로 집단 함수는 null 값은 제외하고 계산한다. 만약 전체가 null 이면 null 값을 돌려주지만 COUNT인 경우에는 0을 돌려준다. 사용 예시 1. 직원의 급여 합, 급여 최대값, 급여 최솟값, 급여 평균을 검색하라 SELECT SUM(Salary), Max(Salary), MIN(Salary), AVG(Salary) FROM EMPLOYEE; 2. 직원의 수를 검색하라 SELECT COUNT(*) FROM EMPLOYEE; 3. 급여 종류의 수를 검색하라 SELECT(DISTINCT Salary..
SQL 중첩 쿼리와 조인 쿼리 중첩 쿼리 SQL 문의 WHERE 절에 다른 SQL 문이 들어 간 질의문을 중첩 쿼리라고 한다. 외부 쿼리와 중첩 쿼리에 같은 이름의 애트리뷰트가 있다면 기본적으로 가장 가까운 애트리뷰트로 간주한다. 중첩 쿼리는 마치 루프를 도는 것 처럼 작동한다. 중첩 쿼리 안에서는 외부 쿼리의 필드는 마치 하나의 고정된 것 처럼 작동합니다. DELETE 문이나 UPDATE 문에 한 테이블이 아닌 여러 테이블에 대한 조건이 들어가야 하는 경우 중첩쿼리를 이용하면 된다. DELETE FROM EMPLOYEE WHERE Dno IN (SELECT Dnumber FROM DEPARTMENT WHERE Dname='Research'); 조인 쿼리 WHERE 절에 Join Condition을 넣는 대신에 FROM 절에 JOIN..
SQL 기본적인 질의어 정리 SELECT 문 테이블에서 특정 튜플들을 검색할 때 사용하는 질의어 입니다.. [기본 형태] SELECT FROM WHERE ; FROM -> WHERE -> SELECT 순서로 작동합니다. 대상 테이블을 찾고 특정 조건에 맞는 튜플들을 찾은 후 원하는 애트리뷰트를 추출합니다. WHERE 절을 생략하는 경우에는 FROM 절의 테이블들을 cartesian product한 결과를 보여줍니다. 테이블의 모든 애트리뷰트들을 검색하고 싶다면 * 을 사용하면 됩니다. SQL 에서 table은 꼭 집합이 필요가 없습니다. 중복을 허용합니다. 중복 제거를 위해 정렬이 필요한데 정렬 연산을 굉장히 비싼 연산이기 때문입니다. 유저가 중복을 원하는 경우도 있습니다. 집단 함수에소 중복을 제거해 버리면 결과가 달라져 버립니다..
SQL의 DDL문 정리 DDL 문 정리 DDL 이란 데이터 정의어로 간단히 말하면 테이블을 만들고 (CREATE) 삭제하고 (DROP) 수정하는 (ALTER) 역할을 하는 명령어를 말합니다. CREATE 명령어 테이블 또는 도메인을 생성하는 명령어입니다. CREATE TABLE EMPLOYEE -- 테이블 생성 CREATE DOMAIN SSN_TYPE AS CHAR(9) -- 도메인 생성 도메인을 정의하면 동일한 도메인을 갖는다는 것을 좀 더 명시적으로 표현해줄 수 있습니다. 하지만 시스템에 따라서 사용하지 못하는 경우도 있습니다. [CREATE 명령어 예시] CREATE TABLE EMPLOYEE ( FnameVARCHAR(15)NOT NULL, MinitCHAR, LnameVARCHAR(15)NOT NULL, SsnCHAR..

반응형