본문 바로가기

DB12

[DB] Redis 란? (feat. Memcached) 레디스 (Remote Dictionary Server)는 메모리 기반의 key-value 구조의 데이터 관리 시스템이다. 모든 데이터를 메모리에 저장하고 조회하기때문에 빠른 Read, Write 속도를 보장하는 NoSql이다. 속도가 빠른 이유 ? 메모리 접근이 디스크 접근 방식보다 빠르기 때문. Redis의 기능 In-Memory 캐싱 Pub/Sub 메세지 큐 세션 스토어 Redis가 지원하는 데이터 형식 String Set Sorted Set Hash List Redis의 특징 영속성을 지원하는 In-memory 데이터 저장소 읽기 성능 증대를 위한 서버 복제 지원 Redis가 실행중인 서버에 장애가 발생하는 경우 장애 조치와 더 높은 읽기 성능을 지원하기 위해 슬레이브가 마스터에 연결되고, 전체 D.. 2020. 11. 30.
[DB] RDBMS vs NoSQL RDB를 써야 할까? NoSql을 사용해야 할까? NoSql은 어떨 때 사용하는 걸까? 궁금증으로부터 출발했다. RDBMS와 NoSQL에 대해서 알아보자. RDB(Relational Database) 특징 구조화된 쿼리 언어(Structured Query Language) 정해진 데이터 스키마에 따라 DB 테이블에 저장된다. 관계를 통해 연결된 여러 테이블에 분산된다. 관계형 데이터베이스로 대표적으로 MySql, Oracle, PostgreSql 등이 있다. 장점 각 테이블에 정의된 구조(필드명, 데이터 유형)가 있기 때문에 스키마를 준수하지 않는 레코드는 추가할 수 없다. 관계에 의해 데이터를 여러 테이블에 나누어 저장하기 때문에 중복 데이터가 없다. 복잡한 형태의 쿼리(join)가 가능하다. 단점 대.. 2020. 11. 27.
[Trouble Shooting] 오라클 '' 과 null SELECT * FROM test a LEFT JOIN example b ON a.ID = b.ID WHERE a.ID = 000000 AND b.flag = 'Y' AND NVL(a.ERROR_CODE, '') NOT in ('',' ','--'); 이런 쿼리가 있었는데 ERROR_CODE가 있음에도 불구하고 출력이 되지 않았다. 왜??? 오라클에서 길이가 없는 문자열(aka empty string, white space, blank)은 null 로 취급된다. 즉, 필드에 들어있는 값이나 '' 문자 또는 함수가 반환하는 값이 길이가 없는 문자열이라면 null 로 취급된다. 이러한 특징은 다른 DBMS 와 다르므로 주의해야 한다. SELECT NVL(null, '') FROM DUAL; // null 그.. 2020. 3. 3.
Oracle SQL Trace 확인하는 방법 Sql 문에 인덱스를 추가하고, 전 후 속도차이를 비교하기 위해 SQL Trace를 확인해보려고 했다. sqlplus에서 sysdba 계정으로 해야한다 SELECT P.SPID SERVER FROM V$PROCESS P, V$SESSION S WHERE P.ADDR = S.PADDR AND S.AUDSID = USERENV('SESSIONID'); 우선 위의 쿼리를 사용해서 SPID를 확인해야한다. 나중에 trc 파일을 떨구면 SPID 번호로 생성이된다. 어차피 최신 파일을 보면 되기 때문에 위 과정은 꼭 필요하진 않는 것 같다. alter session set events '10046 trace name context forever, level 1'; 트레이스의 레벨을 설정할 수 있다. 레벨이 높을 수.. 2019. 10. 30.
[DB] Truncate, Delete, Drop 테이블에서 행을 삭제하는 방법 DELETE (데이터만 삭제) DELETE FROM example; DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 삭제 될 때마다 많은 SYSTEM 자원이 소모된다. 트리거에 걸려있으면 각 행이 삭제될 때 실행된다. 이전에 할당되었던 영역은 삭제되어 빈 테이블이나 클러스터에 그대로 남아 있게 된다. 커밋을 하지 않았다면 롤백이 가능하다. 전체 or 일부 삭제가 가능하다.(WHERE 절 사용) 디스크에 용량은 그대로 남아있다. 데이터만 없어질 뿐. DROP (테이블 전체 삭제) DROP TABLE example; 테이블이나 클러스터를 삭제하면 모든 관련 INDEX, CONSTRANINT, TRIGGER, 권한도 삭제된다. TRUNCATE TRUNCAT.. 2019. 7. 14.
[MySql] 쿼리 캐시 쿼리 캐시 쿼리 캐시는 MySql 에만 존재하는 기능 중 하나로써, 적절한 설정을 하면 상당한 성능 향상 효과를 얻을 수 있다. SQL 문장을 캐시하는 것이 아니라 쿼리의 결과를 메모리에 캐시해 두는 기능이다. 구조는 간단히 맵(Map)과 같이 키와 값의 구조로 구현되어 있다. 여기서 키는 쿼리 문장, 값은 쿼리의 실행 결과를 나타낸다. 데이터베이스에서 쿼리를 처리할 때는 상당히 많은 부분의 처리 절차가 있다. 이를 전부 무시하고 동일한 쿼리 문장이 요청 됐다고해서 그냥 캐시된 결과를 보내서는 안된다. 처리 절차 요청된 쿼리 문장이 쿼리 캐시에 존재하는가? 쿼리 문장 비교대상에는 공백, 탭과 같은 문자도 모두 포함되며, 대소문자까지 완전히 동일해야 같은 쿼리로 인식한다. 동일한 쿼리라도 대소문자, 공백,.. 2019. 6. 27.