pau*_*aul 1 c++ sqlite embedded
有没有办法预先将我的SQLite数据库分配到一定的大小?目前我正在添加和删除一些记录,并希望在创建时避免这种情况.
执行此操作的最快方法是使用zero_blob函数:
例:
Y:> sqlite3 large.sqlite
SQLite版本3.7.4
输入".help"作为指令
输入以";"结尾的SQL语句
sqlite> create table large(a) ;
sqlite> 插入大值(zeroblob(1024*1024));
sqlite> drop table large;
sqlite> .q
Y:> dir large.sqlite
驱动器Y中的
卷是个人卷序列号是365D-6110
目录Y:\
01/27/2011 12:10 PM 1,054,720 large.sqlite
每个blob的大小有限,因此如果您希望数据库大于~1GB,则可能需要插入多个blob.
有一个 hack - 将一堆数据插入数据库,直到数据库大小达到您想要的大小,然后删除数据。这是有效的,因为:
“当从数据库中删除对象(表、索引或触发器)时,它会留下空白空间。下次将新信息添加到数据库时,将重用该空白空间。但与此同时,数据库文件可能会大于严格必要的值。”
当然,这不是最可靠的方法。(此外,您需要确保禁用 auto_vacuum 才能使其正常工作)。您可以在这里了解更多信息 - http://www.sqlite.org/lang_vacuum.html
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |