기존에는 무조건 datetime 만 사용했었는데 datetime2 타입이 따로 있었다고한다ㅠ

(이직한 회사 ERD 에는 전부 datetime2로 되어있...)

 

datetime
- 날짜와 시간 표시
- 1953년 1월 1일부터 가능.
- [년-월-일 시:분:초.123]  // [2019-04-26 09:00:00.007] 
- 8Byte

- 1953년 이전의 날짜를 저장하지 못하며(에러 발생), 초 이하의 정확도가 떨어짐.
- .000, .003 또는 .007초 단위로 반올림
- SQL표준에 맞지 않고, 정확도가 떨어져서 공식문서에서는 비권장

datetime2
- [년-월-일 시:분:초[.100ns]],
- [YYYY-MM-DD hh:mm:ss[.소수자릿수 초]]  // [2019-04-26 09:00:00.1234567] 
- 자릿수가 3보다 작은 경우 6Byte
자릿수가 3 또는 4인 경우 7Byte
기타 8Byte
- SQL Server 2008부터 지원

 

참고글

https://comnic.tistory.com/11

'데이터베이스 > MSSQL' 카테고리의 다른 글

MSSQL 프로시저 수행 옵션  (0) 2019.08.13
  • SET NOCOUNT 옵션

- 구문 : SET NOCOUNT [ ON | OFF ] 

- ON 으로 설정하면 쿼리를 수행하며 영향받은 행수를 카운트하여 리턴

- 메시지를 출력하는 부하를 줄일수있어 프로시저 성능을 향상시킬수있음

- ON 설정이 되어있어도 @@ROWCOUNT 함수는 업데이트됨

 

  • SET TRANSACTION ISOLATION LEVEL 옵션

- 격리수준을 설정하는 옵션

- READ UNCOMMITED : 가장 약한 격리수준, 커밋되지않은 데이터를 읽을수있어서 무결성을 깨뜨릴수있지만 동시성이 향상되어 자주사용됨 (무결성이 중요한 처리에는 X)

SERIALIZABLE : 가장 강한 격리수준

 

격리수준 순위 격리수준 커밋되지않은 읽기 반복되지않는 읽기  
1 SERIALIZABLE NO NO  
2 SNAPSHOT NO NO 비표준, MSSQLServer만의 격리 수준
3 REPEATABLE READ NO NO  
4 READ COMMITTED NO YES SQLServer 2008 기본 격리 수준
5 READ UNCOMMITED YES YES  

 

참고글 : http://egloos.zum.com/sweeper/v/3005129

'데이터베이스 > MSSQL' 카테고리의 다른 글

datetime / datetime2 타입차이  (0) 2019.09.25

서브쿼리 주의사항

- 괄호로 묶어서 사용

- order by 사용 금지 

- 연산자 오른쪽에 위치

구문별 명칭

  • select   - 스칼라서브쿼리
  • from    - 인라인뷰
  • where  - 서브쿼리

스칼라 서브쿼리

- select 문에서 서브쿼리는 1개의 결과만 출력돼야함

 

인라인뷰 

- 서브쿼리에서 출력된 데이터를 테이블처럼 사용가능

 

 

 

참고

https://docs.microsoft.com/ko-kr/sql/relational-databases/stored-procedures/modify-a-stored-procedure?view=sql-server-2017

 

저장 프로시저 수정 - SQL Server

저장 프로시저 수정Modify a Stored Procedure 이 문서의 내용 --> 적용 대상: SQL Server Azure SQL Database Azure SQL Data Warehouse 병렬 데이터 웨어하우스 APPLIES TO: SQL Server Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse SQL Server 2017SQL Server 2017 또는 SQL Ser

docs.microsoft.com

 

'데이터베이스' 카테고리의 다른 글

트랜잭션 특성 - ACID  (0) 2019.07.23

트랜잭션 이란? - 논리적인 작업 단위 

 

 

  • 원자성 ( Atomicity )
    • 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말합니다.
    • 즉, All or Noting의 개념으로서 작업 단위를 일부분만 실행하지 않는다는 것을 의미합니다.
  • 일관성 ( Consistency )

    • 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말합니다.

    • 여기서 말하는 일관성이란, 위의 송금 예제에서 금액의 데이터 타입이 정수형(integer)인데, 갑자기 문자열(string)이 되지 않는 것을 말합니다.

      • 즉, 송금 전후 모두 금액의 데이터 타입은 정수형이여야 한다는 것이 일관성입니다.

  • 격리성 ( Isolation )

    • 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 말합니다.

    • 즉, 트랜잭션끼리는 서로를 간섭할 수 없습니다.

  • 지속성 ( Durability )

    • 성공적으로 수행된 트랜잭션은 영원히 반영이 되는 것을 말합니다.

    • commit을 하면 현재 상태는 영원히 보장됩니다.

'데이터베이스' 카테고리의 다른 글

DB SubQuery  (0) 2019.07.24

SQL 튜닝 결과보고

- 오라클 기준

- 8가지 사례소개

 

*블록IO

- 블록IO 를 줄이면 수행시간 단축 가능

- DBMS에서 IO는 블록단위로 이루어짐

- 레코드를 읽을때 레코드가 속한 블록 전체를 읽게됨

- 따라서 블록IO개수는 쿼리 실행할때 읽게되는 블록의 개수

- 보통 한번 가져올때 블록 128개 가져옴

- 인덱싱된 로우 가져올때는 싱글블록IO(블록1개만가져올수잇음)

- MSSQL 에서는 페이지라는 용어 사용

 

*스칼라 서브쿼리

- 스칼라 서브쿼리 쓰면 버퍼캐시에 캐싱이 되기때문에 부하감소

- 예를 들어 1을 입력한후 다음번에도 1을 입력하면 미리 캐시된 값이 나가서 시간 단축

- 리컬시브 콜을 감소

- 근데 입력값이 유니크한것보다 변별력없을때 성능이 더 좋아짐

- 사용시 밑져야 본전이므로 스칼라서브쿼리 사용을 표준으로 잡는것도 나쁘지않음

 

*쿼리변환

- 결합된 쿼리 개선 > 결합을 풀거나 다른방식으로 진행

- 보통은 옵티마이저가 알아서 잘해주지만... 잘 안될때도잇음

 

*인덱스

- 인덱스를 쓰면 빠르다고 생각하는데 인덱스를 타서 테이블로 가는것도 부하가 생기므로 건수가 적으면 안쓰는게 나음

- 예를들어 3만건이면 풀스캔이 나음 인덱스쓰면 3만번도는거

 

*파티션 프루닝

- 읽지않아도되는 파티션을 제외시키는 법

 

*NL조인?

- Nested Loops

 

*view push predicate

- 힌트를 줘서 WITH 문 부터 실행하는게 아니라 인라인을 먼저 실행해서 WITH문에 더 좋은조건을 주는것

- WITH절에 무조건 이걸 쓰는게 좋은건 아니고 해당하는 케이스에만 사용

 

*SQL 튜닝의 시작 책

 

*View Merging

- 큰쿼리안에 작은쿼리 감싸고 있는 경우 작은쿼리를 큰쿼리 레벨로 올리는 것

- 뷰머징이 실패할 경우가 많음 >내부로직이 복잡해서 > 노머징 힌트를 주고 반대로 작은쿼리로 데이터를 던져주는방식으로 view push predicate 유도

 

  1. 회원가입 (https://cloud.mongodb.com)
  2. 서버생성
    • 프리티어 표시된 리전의 서버 선택 & M0 서버 선택
  3. Clusters connect
    • sandbox에서 connect 선택
    • 참고글 참고 (현재 아이피 등록가능)
  4. IP 방화벽설정
    • 처음 connect 맺을 때 현재 IP 등록 가능하긴 하지만 관리편의성을 위해 해당 메뉴에서 별도 등록 
    • overview 옆에 security tab > ADD IP address > 0.0.0.0/0 (any) 추가 또는 원하는 특정 IP 추가  

 

참고글: https://fkkmemi.github.io/nemv/nemv-037-mongodb-atlas/

'데이터베이스 > MongoDB' 카테고리의 다른 글

mongoDB 간단 문법  (0) 2019.03.19
mongoose 연동  (0) 2019.03.19

기존 RDBMS 와 비교하면,

컬렉션 - 테이블

다큐먼트 - 데이터 row 이다.



test 라는 dbms 에 users 컬렉션 생성하고


// users 에 다큐먼트 생성시

db.users.insert({"id": "test", "age": "test", "email": "", "ipfsValue": "", "gender": "", "account": ""})


// 컬랙션의 다큐먼트 리스트 조회

db.users.find()


ex)

{ "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" }

{ "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" }

{ "_id" : ObjectId("56c0903d4d6b67aafdeb88a5"), "name" : "Book1", "author" : "Velopert" }

{ "_id" : ObjectId("56c0903d4d6b67aafdeb88a6"), "name" : "Book2", "author" : "Velopert" }






참고글 : https://velopert.com/436

'데이터베이스 > MongoDB' 카테고리의 다른 글

Atlas 사용 방법  (0) 2019.04.02
mongoose 연동  (0) 2019.03.19

node.js 에서 mongoose 연동


// 이 전에 mongoose 설치 > npm install mongoose

// connect to mongodb server

var db = mongoose.connection;

db.on('error', console.error);

db.once('open', function(){

    console.log("Connected to mongod server");

});


mongoose.connect('mongodb+srv://[username]:[password]@beappcluster-xwyff.mongodb.net/test?retryWrites=true', {

  useNewUrlParser: true

});


// username, password 에 해당하는 값 삽입




mongodb 설치 : https://nesoy.github.io/articles/2017-04/MongoDB




'데이터베이스 > MongoDB' 카테고리의 다른 글

Atlas 사용 방법  (0) 2019.04.02
mongoDB 간단 문법  (0) 2019.03.19

+ Recent posts