기존 시스템은 미리 만들어 놓은 db파일을 한레코드씩 SELECT로 읽어와서 벡터에 담는데요.
이러면 웬지 db로 읽어오는 이득이 적어지는거 같은 느낌이 들어서.
기존에 작성된 db파일을 메모리상에 저장하고 있다가 원하는 쿼리를 날려서 데이타들을 뽑아오고 싶거든요.
요약하자면 ㅎㅎ
sqlite3에 db파일을 통째로 메모리에 저장시키는 함수가 있는지 방법이 있는지 궁금합니다.
리눅스라면
쉘상에서 $ cat sqlite3_db_file_name > /dev/null
이렇게 한번 쫘악 읽어들이면 os 에서 캐슁을 해줍니다. 그리고 App 에서 기존 방법대로 db 조회하게 되면 FILE IO 없이 메모리상에서 SELECT 를 하게 되요!
동작 초반 성능 때문에라면 익명 사용자님의 답변처럼 파일을 한 번 읽어서 디스크 캐시에 올리는 방법이 간편하면서도 효율적입니다. 기존 구현체를 바꿀 필요도 없구요.
한편 sqlite3의 백업 기능을 이용해 파일에 저장된 DB를 메모리 DB(":memory:")로 복사하는 방법도 가능합니다. http://dolba.net/tt/k2club/entry/Sqlite3-Database-Backup 등을 참고하실 수 있습니다.
$PWD `date`
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
리눅스라면 쉘상에서 $ cat
리눅스라면
쉘상에서
$ cat sqlite3_db_file_name > /dev/null
이렇게 한번 쫘악 읽어들이면 os 에서 캐슁을 해줍니다.
그리고 App 에서 기존 방법대로 db 조회하게 되면
FILE IO 없이 메모리상에서 SELECT 를 하게 되요!
동작 초반 성능 때문에라면 익명 사용자님의 답변처럼
동작 초반 성능 때문에라면 익명 사용자님의 답변처럼 파일을 한 번 읽어서 디스크 캐시에 올리는 방법이 간편하면서도 효율적입니다. 기존 구현체를 바꿀 필요도 없구요.
한편 sqlite3의 백업 기능을 이용해 파일에 저장된 DB를 메모리 DB(":memory:")로 복사하는 방법도 가능합니다. http://dolba.net/tt/k2club/entry/Sqlite3-Database-Backup 등을 참고하실 수 있습니다.
$PWD `date`
댓글 달기