복붙노트

[SQL] 정체성 대 순서

SQL

정체성 대 순서

SQL 서버 2012은 오라클과 포스트 그레스에서와 같은 새로운 기능으로 순서를 소개했다. 어디 시퀀스 정체성보다 선호된다? 왜 우리는 순서를 필요합니까?

해결법

  1. ==============================

    1.난 당신이 여기에 답변을 찾을 것이라고 생각

    난 당신이 여기에 답변을 찾을 것이라고 생각

    그리고 여기:

    여기뿐만 아니라 :

    및 MSDN에서 당신은 또한 사용에 대한 더 읽을 수 있습니다 왜 우리는 (여기) 필요 :

  2. ==============================

    2.시퀀스와 정체성은 모두 자동으로 번호를 생성하는 데 사용하지만 큰 차이는 신원 의존 테이블과 시퀀스는 테이블과 독립적이다.

    시퀀스와 정체성은 모두 자동으로 번호를 생성하는 데 사용하지만 큰 차이는 신원 의존 테이블과 시퀀스는 테이블과 독립적이다.

    당신은 당신이 (여러 테이블에서) 전 세계적으로 자동차 번호를 유지해야하는 시나리오가있는 경우, 또한 특정 숫자 후 간격을 다시 시작해야하고 성능 또한 캐시 할 필요가, 우리가 순서를 필요로하지 않는 장소입니다 정체.

    시퀀스 구현의 실제 예를 정의하는 기사도 순서와 정체성의 차이는 아래와 같습니다.

    http://raresql.com/2012/04/29/how-sequence-works-in-sql-server-2012/ http://raresql.com/2012/05/01/difference-between-identity-and-sequence/

  3. ==============================

    3.시퀀스 ID 열보다 더 많은 유연성을 제공하지만, 나는 그들이 어떤 성능 이점이 있었다 찾지 못했습니다.

    시퀀스 ID 열보다 더 많은 유연성을 제공하지만, 나는 그들이 어떤 성능 이점이 있었다 찾지 못했습니다.

    나는 정체성 빠르게 일괄 삽입에 대한 순서를 사용하는 것보다 3 배 일관했다 사용하여 성능을 발견했다.

    나는 약 1.5M 행을 삽입 성능을했다 :

    나는 테이블의 기본을 통해 시퀀스 객체를 사용하는 테이블에 행을 삽입 :

    에 대한 <컬럼 이름>에 대한 NEXT VALUE

    또한 선택 성명에서 시퀀스 값을 지정했습니다 :

    SELECT NEXT VALUE for <seq>, <other columns> from <table>
    

    모두 같은 요인 느린 식별 방법보다했다. 나는 순서에 대한 기본 캐시 옵션을 사용했다.

    정체성과 순서 사이 행 단위 삽입과 차이 아리온의 제 1 링크 쇼 성능에서 참조 문서 만 개 삽입을 위해 14.3 초 16.6 초였다.

    캐싱 옵션은 성능에 큰 영향을 가지고 있지만, 정체성은 더 빨리 더 높은 볼륨 (+ 1M 행)

    utly4life의 의견에 따라 같은 심층적 인 분석이 링크를 참조하십시오.

  4. ==============================

    4.나는이 조금 오래 알고 있지만, 나 비트 관찰을 추가하고 싶었다.

    나는이 조금 오래 알고 있지만, 나 비트 관찰을 추가하고 싶었다.

    나는 순서 내 인덱스를 가지고 순서 정체성로 전환. 나중에 복제 전송하지 않는 순서를 알아 냈어. 나는 순서가 동기화되지 때부터 두 개의 데이터베이스 사이에 I 설정 복제 후 키 위반을 받기 시작했다. 뭔가 당신이 결정을 내리기 전에 조심합니다.

  5. ==============================

    5.최근에 무언가에 의해 비트 순서 대 ID에 대해 고려하는 것이 었습니다. 당신이 틈없이 정체성을 유지 할 수 있습니다 경우 MSFT 지금 순서를 제안 보인다. SQL은 신원을 캐시하고 다시 부팅 한 후에 우리가 그 숫자를 잃은 우리의 문제를 설명 할 것입니다 강조이 명령에 따라이 정체성에서 큰 차이 있었지만, 여기서 우리는 문제가 있었다.

    최근에 무언가에 의해 비트 순서 대 ID에 대해 고려하는 것이 었습니다. 당신이 틈없이 정체성을 유지 할 수 있습니다 경우 MSFT 지금 순서를 제안 보인다. SQL은 신원을 캐시하고 다시 부팅 한 후에 우리가 그 숫자를 잃은 우리의 문제를 설명 할 것입니다 강조이 명령에 따라이 정체성에서 큰 차이 있었지만, 여기서 우리는 문제가 있었다.

    https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-2017

    서버를 다시 시작 또는 다른 실패 후 연속 값 - SQL 서버는 성능 향상을 위해 ID 값을 캐시 할 수 및 할당 된 일부 값은 데이터베이스 오류 또는 서버 다시 시작하는 동안 손실 될 수 있습니다. 이것은 삽입시 ID 값의 차이가 발생할 수 있습니다. 갭이 허용되지 않으면 다음 어플리케이션 키 값을 생성하기 위해 자신의 메카니즘을 사용한다. NOCACHE 옵션을 사용하여 시퀀스 생성기를 사용하여 최선을 다하고되지 않습니다 거래 격차를 제한 할 수 있습니다.

  6. ==============================

    6.나는 시퀀스의 최고 사용 ID 열을 대체 할 수 있지만 필드의 "주문 번호"유형을 생성하지 않는 것입니다 찾을 수 있습니다.

    나는 시퀀스의 최고 사용 ID 열을 대체 할 수 있지만 필드의 "주문 번호"유형을 생성하지 않는 것입니다 찾을 수 있습니다.

    즉, 주문서 번호는 최종 사용자에게 노출과 함께 비즈니스 규칙을 가질 수있다. 당신은 고유하기를 원하지만 단지 신원 열을 사용하여 하나 정말 올바르지 않습니다.

    인터넷 주문의 순서를 가질 수 있도록 사내 주문 반대로 예를 들어, 다른 순서 유형은 다른 순서가 필요할 수 있습니다.

    즉, 정체성에 대한 교체, 신원이 비즈니스 요구 사항에 맞지 않는 경우에 유용한 것으로 생각할 간단 시퀀스의 생각하지 않습니다.

  7. from https://stackoverflow.com/questions/10062328/sequence-vs-identity by cc-by-sa and MIT license