전체보기: 525개의 글
개요 key 값 내에 여러 value가 존재 하는 일대다 관계 입니다. Queue와 Statck로 사용됩니다. 명령어 요약 저장 : LPUSH, RPUSH, LINSERT, LPUSHX, RPUSHX LPUSH : lpush key value 예) lpush userlist "홍길동1" "홍길동2", 왼쪽에서 리스트의 오른쪽에 데이터를 저장 합니다. 저장 후 전체 value수가 리턴됩니다. RPUSH : rpush key value 예) rpush userlist "홍길동1" "홍길동2", 오른쪽에서 리스트의 왼쪽에 데이터를 저장 합니다. 저장 후 전체 value수가 리턴됩니다. LINSERT : linsert key BEFORE|AFTER pivot value 예) linsert userlist aft..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bTWyeu/btq2iWIzZTA/kweGyOr5k347H5zWK2nLBK/img.png)
이번 글에서는 DECIMAL 타입에서 사칙연산이 동작하는 방식에 대해서 정리해보겠습니다. DECIMAL 연산에 대한 설명에 앞서서 간단하게 DECIMAL이라는 타입에 대해 알아보겠습니다. DECIMAL은 Precision과 Scale로 정의되어 있습니다. Precision은 전체 자릿수, Scale은 .(점) 오른쪽에 오는, 소수 자릿수를 의미합니다. SELECT CAST(1.0005 as DECIMAL(4, 3)) 위 예시에서는 그림과 같이 precision과 scale을 표시할 수 있고 scale의 범위를 넘은 소수점의 값(5)은 반올림 하여 위 query의 결과는 1.001이 됩니다. (정수가 자릿수를 초과할 경우에는 overflow error가 발생합니다.) Calculation 그럼 DECIMA..
intro 이번 글에서 collation 충돌이 발생하는 원인과 해결 방법에 대해 다뤄보겠습니다. 이번 글에서는 collation에 대한 설명은 따로 하지 않겠습니다. collation에 대해 알고싶으신 분은 다음 링크를 참고해 주시기 바랍니다. 설명을 위해 다음과 같은 두 테이블을 정의하겠습니다. CREATE TABLE korean (id INT, name VARCHAR(100) COLLATE Korean_Wansung_CI_AS) CREATE TABLE american (id INT, name VARCHAR(100) COLLATE Latin1_General_100_CI_AS_SC) 하나의 테이블 collation 값은 Korean_Wansung_CI_AS(한국어 사전 기준)으로 또 다른 하나의 테이블..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/EVco0/btq2h2P5usi/gXA1A3JCYJrrDN1T1O6W31/img.png)
intro 이번 글에서는 문자 데이터 정렬, Collation에 대하여 살펴보겠습니다. collation은 데이터 정렬, 비교하는 방식을 지정하는 명령어로 collation 설정에 따라 작업 결과가 다르게 나타날 수 있습니다. 자세한 설명에 앞서, 다음 쿼리를 통해 우리가 사용하고 있는 collation 설정값을 확인해 보겠습니다. SELECT name, collation_name FROM sys.databases; 위 쿼리문을 실행하면 아래와 같은 ( 환경에 따라 값은 다르게 나옵니다. ) 결과를 확인할 수 있습니다. name collation_name 1 master Korean_Wansung_CI_AS 2 sample Korean_Wansung_CI_AS master와 sample은 데이터베이스의 ..
하지만 해당 글의 예제에서는 transaction의 isolation level을 동일하게 설정하고 설명을 진행했습니다. '그렇다면 서로 다른 isolation level을 가진 transaction들은 어떻게 동작할까?' 라는 의문이 들었고 이번 글에서는 이를 실험해 본 결과를 정리하려고 합니다. 참고로, 이번에는 MySQL이 아닌, MSSQL을 이용하여 예제를 진행하였습니다. 처음에는 같은 isolation level(READ COMMITTED)의 두 transaction이 어떻게 동작하는지 먼저 살펴보겠습니다. #write transaction BEGIN TRAN SET TRANSACTION ISOLATION LEVEL READ COMMITTED INSERT INTO "dbo"."isolation_..
이번 글에서는 MySQL의 Delimiter 명령어에 대해 다뤄보겠습니다. 최근 Procedure를 정의하면서 다음과 같은 SQL문을 사용하였습니다. mysql> DELIMITER $$ mysql> CREATE PROCEDURE insert_test() -> BEGIN -> DECLARE i INT; -> SET i = 0; -> WHILE i INSERT INTO account(createDatetime) VALUES(now()); -> SET i = i + 1; -> END WHILE; -> END $$ mysql> DELIMITER ; 맨 처음과 끝에 Delimiter 명령어를 사용하였습니다. 본 글은 Delimiter에 관한 글이기 때문에 Procedure와 다른 명령어..
Transaction이란? Transaction이란 데이터베이스에서 실행하는 작업의 단위를 의미합니다. 이번 글에서는 송금하는 과정을 예제로 전체적인 개념들을 설명하고자 합니다. 또한 테스트를 위해 MySQL(InnoDB)을 활용하였습니다. 예제는 다음과 같습니다. A라는 사람이 B라는 사람에게 송금을 하면, 아래와 같은 과정으로 이루어 진다고 가정하겠습니다. A 계좌에서 출금 B 계좌에 위에서 차감된 금액만큼 입금 송금은 2 단계로 나누어지지만 크게는 하나의 transaction(작업)이라고 할 수 있습니다. 하지만 데이터베이스 관련된 모든 작업을 transaction이라고 하지는 않습니다. Transaction은 다음과 같은 특징(ACID)을 가져야합니다. Atomic Atomic이란 '원자의'란 의..
개요 key 하나에 여러개의 score와 value로 구성 됩니다. key 집합 내에 value는 중복되지 않습니다. Sorted Sets에서는 집합이라는 의미에서 value를 member라 부릅니다. value는 score로 sort 되며 skip list를 사용하여 member의 수와 상관 없이 고성능 sorting을 제공합니다. 명령어 요약 저장 :ZADD ZADD : ZADD key score member [score member ...] 예) zadd usersorted 5 "홍길동1" 90 "홍길동2" , 결과 적용된 member수 리턴됩니다. score는 숫자 여야 합니다. score의 범위는 -9007199254740992 부터 9007199254740992 입니다. score가 같으면 m..
개요 Sets는 key와 value가 일 대 다 관계 입니다. Sets에서는 집합이라는 의미에서 value를 member라 부릅니다. key 집합 내에서 Value 는 중복되지 않습니다 (unique) 명령어 요약 저장 :SADD SADD : sadd key member 예) sadd userset "홍길동1" "홍길동2" , 결과 2(입력된 member수) 가 출력 됩니다. 조회 :SMEMBERS, SCARD, SRANDMEMBER, SSCAN SMEMBERS : smembers key 예) smembers userset , key의 member를 조회, 조회 순서를 지정 할 수 없습니다. SCARD : scard key 예) scard userset, key의 member 수 조회 합니다. SRAND..
개요 Key 하나에 Field와 Value로 구성되며 약 40억개(4,294,967,295)까지 저장이 가능 합니다. 중복된 Key 값이 입력되면 overwrite 됩니다. 하나의 식별 정보에 여러 field value로 구성된 정보를 기입하여 사용합니다. 명령어 요약 저장 : HSET, HMSET, HSETNX HSET : hset key field value 예) hset user email user@hotmail.com, 하나의 정보를 입력 합니다. HMSET : hset key field1 value1 field2 value2 예) hmset user email user@hotmail.com gender m, 여러개의 field, value를 저장 합니다. HSETNX : hsetnx key fi..