[DB] MySQL CharacterSet과 Collation
·
스터디/Database
Character Set character set은 텍스트 데이터를 어떤 방식으로 인코딩하여 저장할 것인지를 결정하는 값입니다. 한글 인코딩을 위해 가장 널리 사용되는 인코딩 방식으로는 UTF-8과 EUC-KR이 존재하지만 show character set; 명령어를 통해서 지원하는 인코딩 목록을 확인 할 수 있습니다. Collation Collation은 정해진 character set에 의해 저장된 데이터들이 어떤 방식으로 정렬(order by) 될지를 결정하는 옵션입니다. 물론 직관적인 자료 (int나 date type)에서는 collation의 차이가 크게 의미 없습니다. 하지만 문자열을 정렬하는 방식에서는 차이가 있습니다. A와 가, 또는 A와 a 와 같은 문자열 정렬 방식을 설정하는 것은 설정..
[DB] ACID란?
·
스터디/Database
데이터베이스하면 항상 따라다니는 기본 개념인 ACID에 대해 정리해본다. 트랜잭션은 DB 서버에 여러 개의 클라이언트가 동시에 액세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용한다. 부정합이 발생하지 않으려면 프로세스를 병렬로 처리하지 않도록 하여 한 번에 하나의 프로세스만 처리하도록 하면 되는데, 이는 효율이 너무 떨어진다. 병렬로 처리할 수 밖에 없는 현실적인 상황으로 인해 부정합을 방지하고자 트랜잭션을 사용하는 것입니다. 자세한 내용은 https://hyeri0903.tistory.com/169?category=772718 에 정리해두었다. ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것..
[DB] 정규화 vs 반정규화(비정규화)
·
스터디/Database
정규화 여러 제약조건(규칙)을 기반으로 데이터베이스를 이상현상 없이 설계하는 기법이다. 데이터의 무결성을 향상한다. 정규화에 대한 자세한 내용은 https://hyeri0903.tistory.com/175?category=772718 에 정리해 두었다 ㅎㅎ 비정규화 비정규(Denoramlizaiton)는 데이터를 중복시키거나 그룹핑함으로써 데이터 베이스의 성능을 향상시키기 위한 기법이다. 정규화된 테이블을 읽기 성능 향상을 위해 다시 합치는 방법 역정규화는 정규화된 테이블을 비정규 상태로 만들기 위한 방법 중 하나이다. - 비정규화 프로세스 데이터베이스의 완벽한 구조 설계를 포기하고 데이터의 무결성을 떨어트리는 대신 관계형 데이터베이스의 읽기 성능을 향상하기 위한 설계이다. 위와 같은 , , 3개의 테이..
[DB] Transation / Undo / Redo
·
스터디/Database
트랜잭션을 공부하면서 나온 undo, redo 에 대해서 알게되어 정리를 해보려고한다. 트랜잭션이란? 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. 이 성질을 첫글자를 따 ACID라 부른다. 그러나, 실제로는 성능향상을 위해 이런 특성들이 종종 완화되곤 한다. 어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위(LUW, ..