SQLite3은 버전 업하면 성능은 향상되는가!? (측정)

소개



SQLite의 메인 개발자 Richard Hipp 씨가 이전에 "SQLite는 진화하고 있으며 버전 업을 반복하여 성능도 좋아지고 있습니다."가 낡고 신경이 쓰여 있었으므로, 조금 버젼 마다의 성능을 측정해 보았습니다.

측정 환경



측정은 다음 환경에서 측정했습니다.

CPU: Intel Core i7-8700, OS: CentOS 7.7, 메모리: 4GB, 스토리지: HDD(SATA, 1TB, 7200rpm, 캐시: 64MB)

측정방법



SQLite 3.0에서 3.31까지 얻었으며, 각 SQLite는 다음 절차에 따라 각 트랜잭션, 백만 레코드 (108 바이트) 시간을 측정합니다.
  • 새 데이터베이스 열기, 테이블 만들기
  • 100만 레코드의 INSERT
  • 100만 레코드의 SELECT COUNT()
  • 100만 레코드 UPDATE
  • 100만 레코드 DELETE
  • VACUUM
  • 데이터베이스 닫기, 데이터베이스 파일 삭제

  • 측정 프로그램은 GitHub로 업그레이드됩니다.
    htps : // 기주 b. 코 m/카네고온/sqぃ테에ゔぁぅ아치온/bぉb/마s테 r/src/에ゔぁlゔぇr. c

    또한 측정 프로그램의 실행 결과는 다음과 같습니다.
    $ ./evalver 
    Version Evaluation, SQLite3 version = 3.0.8
    INSERT :          6.668143580 (sec)
    SELECT :          0.318649103 (sec)
    UPDATE :          6.946012056 (sec)
    DELETE :          1.056959430 (sec)
    VACUUM :          0.993167611 (sec)
    

    측정 결과



    1. INSERT



    100만 레코드의 INSERT를 측정하여 결과는 다음과 같습니다. 조금씩 성능이 개선되어 Version 3.16.2에서 최신 버전과 같은 성능이 되었습니다.



    2. SELECT COUNT()



    INSERT된 100만 레코드의 SELECT COUNT() 를 측정하여 결과는 다음과 같습니다. 버전 3.12.3에서 성능이 크게 향상되었습니다.



    3. UPDATE



    100만 레코드의 UPDATE를 측정하여 결과는 다음과 같습니다. 조금씩 성능이 개선되어 Version 3.16.2에서 최신 버전과 같은 성능이 되었습니다.



    4. DELETE



    100만 레코드의 DELETE를 측정하여 결과는 다음과 같습니다. Version 3.3.17에서는 성능이 크게 향상되었으며 Version 3.12.3에서는 성능이 크게 향상되었습니다.



    5. VACUUM



    100만 레코드의 DELETE 이후 VACUUM을 측정하여 결과는 다음과 같습니다. Version 3.7.17에서는 성능이 크게 향상되었으며 Version 3.12.3에서는 성능이 크게 향상되었습니다.



    요약



    Hipp씨가 말하고 있는 「버전 업으로 SQLite의 성능이 향상한다」를 같은 환경에서 확인했습니다. 성능만으로 생각하면 SQLite 3.17.0 이상, 안정도 생각하면 3.22.0 이상을 사용하고 싶습니다.
    임베디드 시스템이나 사회 인프라 시스템에서 SQLite를 사용하는 경우 오랫동안 버전 업그레이드를하지 않았을 수 있습니다. 또한 CentOS7의 SQLite는 Version 3.7.17이므로 성능을 고려하면 별도로 최신 버전을 구하여 사용하는 것이 좋습니다.
    $ sudo yum list available | grep sqlite.i686
    sqlite.i686                               3.7.17-8.el7_7.1               updates
    

    설명에 오류가 있거나 신경이 쓰이는 경우 편집 요청이나 의견으로 피드백해 주시면 도움이 됩니다.

    좋은 웹페이지 즐겨찾기