일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로콘
- Pro-Con
- 백준
- baekjoon
- algorithm
- 격리수준
- python3
- DP
- programmers
- Github
- ASF-110
- 코딩테스트
- LeetCode
- SRE
- 알고리즘 종류 정리
- 프로콘 갈림현상
- Ultimate Search
- C++
- 리트코드
- 백트래킹
- git
- 자소서
- GitHub Desktop
- 제노블레이드 2
- 알고리즘
- 프로그래머스
- 네이버 검색 시스템
- Python
- 취준
- Algorithmus
- Today
- Total
목록Computer Science/데이터베이스 (6)
산타는 없다
Select문은 SELECT [ALL(생략가능) / DISTINCT / DISTINCTROW] [테이블명.]속성명, [테이블명.]속성명, … FROM 테이블명 [AS 별칭] [, 테이블명…] [[RIGHT / LEFT] [OUTER] JOIN 테이블명 [AS 별칭]] [ON 조건] [WHERE 조건] [GROUP BY [CUBE / ROLLUP()] 속성명, 속성명, …] [HAVING 조건] [ORDER BY 속성명 [ASC(생략가능) / DESC]] [LIMIT 갯수]; 의 순서로 작성할 수 있습니다. ([]는 생략가능) 하지만 실제로 실행되는 순서는 다릅니다. 실행되는 순서를 정확하게 파악하고 있어야 정확한 Select Query를 작성할 수 있으므로 실행 순서를 알아보겠습니다. Select Que..
데이터베이스 인덱스 자료구조로 B-tree를 사용합니다. 균형 트리 중 B-tree를 사용하는 이유는 B-tree는 하나의 노드에 여러 개의 데이터 요소를 저장할 수 있는 점과 데이터 탐색뿐 아니라 저장, 수정, 삭제에도 항상 O(logN)의 시간 복잡도를 가지기 때문이라고 생각됩니다. 또 항상 정렬된 상태를 유지하고 있고 참조 포인터가 적어 방대한 데이터 양에도 빠른 메모리 접근이 가능하다는 장점도 가지고 있습니다. B Tree 인덱스 특징 B Tree 인덱스는 다음과 같은 특징을 가지고 있습니다. (차수가 n일 경우) 루트 블록은 리프 블록이 아닌 이상 적어도 두 개의 서브 트리를 갖는다. 루트 블록과 리프 블록을 제외한 각 블록은 최소 n/2개의 포인터를 갖고 적어도 n/2-1개의 키 값을 갖는다...
데이터베이스 인덱스 알고리즘은 대표적으로 B-tree, Hash로 구분할 수 있고, Fractal-Tree 알고리즘도 존재합니다. B-Tree 알고리즘 가장 일반적으로 사용되는 인덱스 알고리즘 칼럼의 값을 변형하지 않고, 원래의 값을 이용해 인덱싱하는 알고리즘 범위 탐색이 가능하다 like와 같은 구문을 실행할 때도 사용할 수 있다 Hash 알고리즘 컬럼의 값으로 해시 값을 계산해서 인덱싱하는 알고리즘 매우 빠른 검색을 지원합니다 값을 변형해서 인덱싱하기 때문에 값의 일부만 검색할 때는 사용할 수 없습니다. 주로 메모리 기반 데이터베이스에서 많이 사용합니다 Fractal-Tree 알고리즘 B-Tree의 단점을 보완하기 위해 고안된 알고리즘으로 독점적인 특허로 등록되어 MySQL의 스토리지 엔진인 Toku..
MySql은 서버 엔진과 스토리지 엔진으로 구성되어 있습니다. 서버 엔진(SQL Interface, Parser, Optimizer, Cache & Buffer) 클라이언트의 요청을 받아 SQL을 처리하는 DB자체의 기능적인 역할을 수행 DB가 SQL을 이해할 수 있도록 쿼리를 파싱하고 메모리, 물리적 저장장치와 통신하는 기능을 수행 디스크와 직접적인 접근을 제외한 대부분의 역할 수행 스토리지 엔진 서버 엔진이 필요한 데이터를 물리적 장치에서 가지고 오는 역할을 수행 물리적 저장장치에서 데이터를 읽어오는 역할을 수행하고 플러그인 형식으로 여러 스토리지 엔진을 필요에 따라 추가 삭제 할 수 있다 MySql은 다양한 스토리지 엔진을 지원합니다. MyISAM, InnoDB, Archive, Memory, ND..
일반적으로 데이터베이스의 인덱스 자료구조는 B / B+ tree 또는 Hash입니다. Hash 자료구조 인덱스는 equal 검색을 빠르게 수행할 수 있지만, 대소 비교 및 정렬에서는 사용할 수 없는 단점이 있습니다. 반면에 B / B+ tree는 equal연산이 Hash보다 약간 느리지만 대소 비교 및 정렬에서도 사용할 수 있습니다. 그 중 MySql의 인덱스 자료구조가 어떤 자료구조로 이루어져 있는지 찾아보았습니다. 결과를 말씀드리자면 MySql은 MyISAM, InnoDB, Archive 등과 같은 엔진을 사용하는데 엔진마다 사용하는 자료구조가 다릅니다. 엔진 인덱스 자료구조 엔진 특징 MyISAM B tree 트랜잭션을 지원하지 않고, Table 단위의 Locking입니다. 따라서, 다수개의 세션이..
동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터에 접근 여부를 결정하는 수준이다. READ UNCOMMITTED : 각 트랜잭션에서 변경 내용을 COMMIT하거나 ROLLBACK 여부에 상관 없이 다른 트랜잭션에서 값을 읽을 수 있다. DIRTY READ 현상 발생 READ COMMITTED(1단계) : 트랜잭션에서 변경 내용이 있지만 COMMIT이나 ROLLBACK 전에 볼 때 실제 테이블이 아닌 Undo 영역에 백업된 레코드 값을 봄 하나의 트랜잭션내에서 똑같은 쿼리를 실행했을 때 항상 같은 결과를 가져와야하는데 COMMIT을 해버리면 다른 결과가 나오기 때문에 REPEATABLE READ의 정합성에 어긋난다. REPEATABLE READ(2단계) : 트..