반응형

IDENT_CURRENT(Transact-SQL)

 

지정된 테이블 또는 뷰에 대해 생성된 마지막 ID 값을 반환합니다. 생성된 마지막 ID 값은 임의의 세션 및 범위에 대한 값일 수 있습니다.

 

 

* Link : http://technet.microsoft.com/ko-kr/library/ms175098.aspx - IDENT_CURRENT

           http://technet.microsoft.com/ko-kr/library/ms187342.aspx - @@IDENTITY

 

 

IDENT_CURRENT는 SQL Server 2000 IDENTITY 함수 SCOPE_IDENTITY 및 @@IDENTITY와 유사합니다. 이 세 함수는 모두 최근에 생성된 ID 값을 반환합니다. 그러나 각 함수에서 최근이 정의하는 범위와 세션은 각기 다릅니다.


IDENT_CURRENT는 임의의 세션과 범위에 있는 특정 테이블에 대해 최근 생성된 ID 값을 반환합니다.


@@IDENTITY는 현재 세션의 전체 범위에 걸쳐 임의의 테이블에 대해 최근 생성된 ID 값을 반환합니다.


SCOPE_IDENTITY는 현재 세션 및 현재 범위에 있는 임의의 테이블에 대해 최근 생성된 ID 값을 반환합니다.


IDENT_CURRENT 값이 NULL인 경우(테이블에 행이 포함된 적이 없거나 테이블이 잘린 경우) IDENT_CURRENT 함수는 초기값을 반환합니다.


문 및 트랜잭션이 실패하면 테이블의 현재 ID가 변경되고 ID 열 값 간에 간격이 생성될 수 있습니다. 테이블에 값을 삽입하려고 시도한 트랜잭션이 커밋되지 않아도 ID 값은 롤백되지 않습니다. 예를 들어 IGNORE_DUP_KEY 위반으로 인해 INSERT 문이 실패하더라도 테이블의 현재 ID 값은 여전히 증가합니다.


IDENT_CURRENT를 사용하여 다음에 생성되는 ID 값을 예측할 때 유의합니다. 다른 세션에서 삽입 작업을 수행하므로 실제로 생성된 값은 IDENT_CURRENT에 IDENT_INCR을 더한 값과 다를 수 있습니다.

 

 

USE AdventureWorks2012;
GO
IF OBJECT_ID(N't6', N'U') IS NOT NULL 
    DROP TABLE t6;
GO
IF OBJECT_ID(N't7', N'U') IS NOT NULL 
    DROP TABLE t7;
GO
CREATE TABLE t6(id int IDENTITY);
CREATE TABLE t7(id int IDENTITY(100,1));
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT 
AS
BEGIN
   INSERT t7 DEFAULT VALUES
END;
GO
--End of trigger definition

SELECT id FROM t6;
--IDs empty.

SELECT id FROM t7;
--ID is empty.

--Do the following in Session 1
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100. This was inserted by the trigger.*/

SELECT SCOPE_IDENTITY();
/* Returns the value 1. This was inserted by the 
INSERT statement two statements before this query.*/

SELECT IDENT_CURRENT('t7');
/* Returns value inserted into t7, that is in the trigger.*/

SELECT IDENT_CURRENT('t6');
/* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/

-- Do the following in Session 2.
SELECT @@IDENTITY;
/* Returns NULL because there has been no INSERT action 
up to this point in this session.*/

SELECT SCOPE_IDENTITY();
/* Returns NULL because there has been no INSERT action 
up to this point in this scope in this session.*/

SELECT IDENT_CURRENT('t7');
/* Returns the last value inserted into t7.*/

 

 

 


 

반응형
반응형

오라클 달력 만들기

 

-- 달력 만들기

/*  -- ORACLE

    SELECT 일,월,화,수,목,금,토
      FROM (  SELECT TRUNC  (dt + LEVEL - 1, 'd' ) w
                   , TO_CHAR(dt + LEVEL - 1, 'd' ) d
                   , TO_CHAR(dt + LEVEL - 1, 'dd') dd
                FROM (SELECT TO_DATE('201402','yyyymm') DT FROM DUAL)
             CONNECT BY LEVEL <= LAST_DAY(dt) - dt + 1
           )
     PIVOT (MIN(DD) FOR d IN ( 1 일, 2 월, 3 화, 4 수, 5 목, 6 금, 7 토))
     ORDER BY w
*/

반응형
반응형

 

 

 

BEGIN TRANSACTION CandidateDelete
    WITH MARK N'Deleting a Job Candidate';
GO
USE AdventureWorks2012;
GO
DELETE FROM AdventureWorks2012.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION CandidateDelete;
GO

 

 

 

 

BEGIN TRAN @TransactionName
       INSERT INTO ValueTable VALUES(1), (2);
ROLLBACK TRAN @TransactionName;

반응형
반응형

COMPUTE BY 절을 이용하면 하나의 SELECT 문으로 세부 행과 요약 행을 모두 볼 수 있습니다. 또한 하위 그룹에 대한 요약 값을 계산하거나 전체 결과 집합의 요약 값을 계산할 수 있습니다.

COMPUTE 절에는 다음 정보를 지정해야 합니다.

  • 선택적 BY 키워드. 열 기준당 지정된 행 집계를 계산합니다.

  • 행 집계 함수 이름. SUM, AVG, MIN, MAX 또는 COUNT가 포함됩니다.

  • 행 집계 함수를 실행할 열

COMPUTE로 생성된 요약 값은 쿼리 결과에서 별도의 결과 집합으로 나타납니다. COMPUTE 절이 포함된 쿼리의 결과는 사용자가 지정한 그룹이나 구분에 따라 요약 값을 제어하는 CONTROL-BREAK 보고서와 비슷합니다. 그룹별 요약 값을 계산하고 같은 그룹에 대한 집계 함수를 두 개 이상 계산할 수도 있습니다.

선택적 BY 절과 함께 COMPUTE를 지정하면 각 그룹별로 SELECT의 조건을 충족하는 두 개의 결과 집합이 생성됩니다.

  • 각 그룹의 첫 번째 결과 집합은 해당 그룹의 SELECT 목록 정보가 포함된 세부 행 집합입니다.

  • 각 그룹의 두 번째 결과 집합은 해당 그룹의 COMPUTE 절에 지정된 집계 함수의 부분합이 지정된 한 행입니다.

선택적 BY 절 없이 COMPUTE를 지정해도 SELECT의 조건을 충족하는 두 개의 결과 집합이 생성됩니다.

  • 각 그룹의 첫 번째 결과 집합은 SELECT 목록 정보가 포함된 모든 세부 행입니다.

  • 두 번째 결과 집합은 COMPUTE 절에 지정된 집계 함수의 합계가 포함된 한 행입니다.

다음은 간단한 COMPUTE 절을 사용하여 SalesOrderDetail 테이블에서 단가와 할인액의 총계를 반환하는 SELECT 문입니다.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, UnitPrice, UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID
COMPUTE SUM(UnitPrice), SUM(UnitPriceDiscount);

 

다음은 선택적 BY 키워드를 COMPUTE 절에 추가하여 각 판매 주문의 부분합을 반환하는 쿼리입니다.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, UnitPrice, UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID
COMPUTE SUM(UnitPrice), SUM(UnitPriceDiscount) BY SalesOrderID;

SELECT 문은 각 판매 주문에 대해 두 개의 결과 집합을 반환합니다. 각 판매 주문의 첫 번째 결과 집합은 SELECT 목록에서 지정한 정보가 포함된 행 집합이고 두 번째 결과 집합은 COMPUTE 절에 지정된 두 가지 SUM 함수의 부분합입니다.

참고참고

osql과 같은 유틸리티는 각 부분합이 결과 집합에서 별도의 행으로 보이도록 여러 개의 부분합이나 합계 요약을 표시합니다. 이것은 유틸리티에서 결과를 표시하는 방식 때문이며 부분합이나 합계는 한 행에 반환됩니다. SQL Server Management Studio와 같은 응용 프로그램에서는 여러 종류의 집계를 같은 줄에 표시합니다.

 

 

COMPUTE와 GROUP BY의 차이를 요약하면 다음과 같습니다.

  • GROUP BY는 단일 결과 집합을 반환합니다. 각 그룹별로 그룹화 열과 해당 그룹의 하위 집계를 보여 주는 집계 함수가 포함된 하나의 행이 있습니다. SELECT 목록에는 그룹화 열과 집계 함수만 포함될 수 있습니다.

  • COMPUTE는 여러 결과 집합을 반환합니다. 각 그룹별로 SELECT 목록의 식이 있는 세부 행이 포함된 결과 집합과 그룹의 하위 집계나 SELECT 문의 합계가 포함된 결과 집합이 있습니다. SELECT 목록에는 그룹화 열이나 집계 함수가 아닌 식이 포함될 수 있으며 집계 함수는 SELECT 목록이 아니라 COMPUTE 절에 지정됩니다.

다음은 GROUP BY와 집계 함수를 사용하는 쿼리입니다. 이 쿼리는 각 그룹별로 해당 그룹의 부분합이 포함된 행이 있는 단일 결과 집합을 반환합니다.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, SUM(UnitPrice), SUM(UnitPriceDiscount)
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID;
참고참고

COMPUTE나 COMPUTE BY 절에는 ntext, text 또는 image 데이터 형식을 포함할 수 없습니다.

 

반응형
반응형

OpenTSDB: Scalable time-series database

opentsdb

 

What's OpenTSDB?

OpenTSDB is a distributed, scalable Time Series Database (TSDB) written on top of HBase. OpenTSDB was written to address a common need: store, index and serve metrics collected from computer systems (network gear, operating systems, applications) at a large scale, and make this data easily accessible and graphable.

Thanks to HBase's scalability, OpenTSDB allows you to collect many thousands of metrics from thousands of hosts and applications, at a high rate (every few seconds). OpenTSDB will never delete or downsample data and can easily store billions of data points. As a matter of fact,StumbleUpon uses it to keep track of hundred of thousands of time series and collects over 1 billion data points per day in their main production datacenter. Other sites such asBox orTumblr are pushing tens of billions of data points per day.

Imagine having the ability to quickly plot a graph showing the number ofDELETE statements going to your MySQL database along with the number of slow queries and temporary files created, and correlate this with the 99th percentile of your service's latency. OpenTSDB makes generating such graphs on the fly a trivial operation, while manipulating millions of data point for very fine grained, real-time monitoring.

반응형
반응형

RocksDB: Persistent key-value store for fast storage http://ow.ly/2BzPfY

 

RocksDB: Persistent key-value store for fast storage

Embedded key-value store for fast storage

rocksdb

Homepage: http://rocksdb.org/
GitHub: https://github.com/facebook/rocksdb
Docs: http://rocksdb.org/overview.html

 

 

The rocksdb library provides a persistent key value store. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function.

The library is maintained by the Facebook Database Engineering Team, and is based on leveldb, by Sanjay Ghemawat and Jeff Dean at Google.

This overview gives some simple examples of how RocksDB is used. For the story of why RocksDB was created in the first place, see Dhruba Borthakur's introductory talk from the Data @ Scale 2013 conference.

 

 

 

반응형
반응형

 

getdate()에 1초 더하기

 

SELECT getdate(),(dateadd(s,1,getdate()))

 

 

반응형
반응형
NoSql 활용 - 특징

 

- 다수의 사용자 요청을 빠른 시간 내에 모두 처리

- 서비스에서 읽기/쓰기 비율 중 데이터 쓰기 비율이 높음

- 저장된 데이터의 일관성이 중요하게 여겨짐

- 스키마가 없는 데이터 형태(schema-less)

- 네트워크 기반 분산 데이터베이스가 가진 확장성

 

* 저장과 처리 시간 주기에 맞춰 데이터 종류를 나누어 보자.

 - 빠른 주기로 빈번하게 저장 및 처리되는 캐시 영역의 데이터

     : 수 ms 단위로 데이터 처리

 - 일정 주기로 아카이빙돼 시점 복원이 가능하도록 관리되는 데이터

     : 수 분 이내로 이전 상태로 복구 가능한 데이터 처리

 - 일정 주기로 데이터를 집계해 게임 내에 다시 반영하는 데이터

    : 실시간 랭킹, 개인 요약 정보, 최근 아이템 교환 비율 등

 - 각종 사용자 이벤트 발생에 따라 그 이력을 관리하는 로그 데이터

 

* 저장형태에 따른 구분

 Key-value

 Ordered Key-value

 Wide Column Store

 Document

 Graph

 

* NoSQL - 어떻게 선택해야 할까? : http://platformadvisory.kr/archives/608

 

* 한 눈에 살펴보는 PostgreSQL : http://helloworld.naver.com/helloworld/227936

반응형

+ Recent posts