SQLite 사용 AUToincrement 가 가 져 온 장단 점

1257 단어 sqliteautoincrement
프로젝트 사용 에 있어 서 우 리 는 항상 자동 으로 증가 하 는 메 인 키 가 필요 합 니 다. 예 를 들 어 AUTOINCREMENT 제약 을 더 해서 메 인 키 가 데 이 터 를 삽입 할 때마다 증가 합 니 다.일반적으로 시 계 를 만 들 면 ROWID 가 되 는 필드 (without rowid 라 고 밝 히 지 않 는 한) 가 기본적으로 있 기 때문에 추가 한 integer primary key 는 rowid 의 별명 일 뿐 입 니 다. 그러나 autoincrement 의 제약 을 추가 하면 데이터베이스 엔진 이 rowid 로 생 성 되 는 알고리즘 이 달라 집 니 다.
그들의 생 성 알고리즘 은 다음 과 같다.
  integer primary key:
        현재 column 의 최대 값 을 가 져 옵 니 다. 64 비트 의 기호 정수 최대 값 에 이 르 지 않 으 면 최대 값 을 바탕 으로 + 1 을 새 값 으로 합 니 다. 최대 값 에 이 르 렀 다 면 사용 하지 않 은 값 을 다시 무 작위 로 찾 습 니 다. 한 줄 을 삭제 할 때 사용 하지 않 은 값 입 니 다.정말 삽입 할 수 있 는 것 이 없다 면 SQLITE 로 돌아 갑 니 다.전체 오류.
 integer primary key autoincrement:
      현재 column 의 최대 치 를 가 져 옵 니 다. 최대 치 에 도달 하지 않 으 면 1 을 추가 하고 삽입 하지 않 으 면 SQLITE 로 돌아 갑 니 다.FULL。
integer primary key 는 기본적으로 자동 으로 증가 합 니 다. autoincrement 를 사용 하면 새로 삽 입 된 데 이 터 는 반드시 이전 보다 클 것 입 니 다. 그러나 많은 추가 소 모 를 가 져 왔 습 니 다. 추가 적 인 CPU, 디스크 공간, 그리고 I / O 디스크 작업 으로 인 한 비용 을 소모 할 수 있 습 니 다.홈 페이지 는 엄격 한 수요 가 없 으 면 사용 을 피해 야 하 며 필요 한 것 이 아니다.
  다음은 제 가 테스트 한 데이터 입 니 다.
insert  
      
100W   not autoincrement 74.7088160515 s
100W   autoincrement  91.2676999569 s
      
100W   not autoincrement 69.6123759747 s
100W   autoincrement 86.1955218315 s

좋은 웹페이지 즐겨찾기