SQLite 최적화 방법

예 를 들 어 데이터베이스 에 100 만 개의 데 이 터 를 삽입 하고 기본 적 인 상황 에서 sqlite 3 만 실행 하면exec(db, “insert into name values ‘lxkxf', ‘24'; ”, 0, 0, &zErrMsg); 데이터베이스 파일 을 100 만 번 닫 는 것 을 반복 하기 때문에 속도 가 당연히 느 릴 것 이다.따라서 이런 상황 에 대해 우 리 는'사무'를 사용 해 야 한다.구체 적 인 방법 은 다음 과 같다.SQL 문 구 를 실행 하기 전에 SQL 문 구 를 실행 한 후에 rc=sqlite 3 를 추가 합 니 다.exec(db, "BEGIN;", 0, 0, &zErrMsg); //실행 SQL 구문 rc=sqlite 3exec(db, "COMMIT;", 0, 0, &zErrMsg); 이렇게 하면 SQLite 는 실행 할 SQL 문 구 를 메모리 에 먼저 캐 시 한 다음 COMMIT 를 기다 릴 때 데이터 베 이 스 를 한꺼번에 기록 합 니 다.그러면 데이터 베이스 파일 이 한 번 만 열 리 고 닫 히 면 효율 이 자 연 스 럽 게 크게 향상 됩 니 다.테스트 1:1000 INSERTs CREATE TABLE t1(a INTEGER,b INTEGER,c VARCHAR(100));INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three'); INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty'); ... 995 lines omitted INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine'); INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two'); INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two'); SQLite 2.7.6:13.061 SQLite 2.7.6(nosync):0.223 테스트 2:사용 사무 25000 INSERTs BEGIN;CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100)); INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two'); ... 24997 lines omitted INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine'); INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six'); COMMIT; SQLite 2.7.6:0.914 SQLite 2.7.6(nosync):0.757 은 사 무 를 사용 한 후에 데이터 뱅 크 의 효율 을 크게 향상 시 켰 음 을 알 수 있다.그러나 우 리 는 사 무 를 사용 하 는 데 도 일정한 비용 이 있 기 때문에 데이터 양 이 매우 적은 조작 에 대해 사용 하지 않 아 도 되 고 외부 소 모 를 초래 하지 않도록 주의해 야 한다.

좋은 웹페이지 즐겨찾기