我想创建一个包含5,000,000个tinyint值(0到256之间)的SQLITE文件.根据我的计算,这个文件应该使用大约5 [MB].
然而,我得到的文件大小接近50 [MB].
这是我使用的代码:
import sqlite3
# Create and populate a database
db = sqlite3.connect('/home/mine/temp.db')
db.execute("CREATE TABLE IF NOT EXISTS test(id INT2)")
for i in range(0, 5000000):
db.execute("INSERT INTO test(id) VALUES({0})".format(0))
db.commit()
db.close()
Run Code Online (Sandbox Code Playgroud)
任何想法如何优化事物,以便占用更少的空间?
对于一个数据库来说,还有更多的东西,而不仅仅是500万个小额的空间.SQLite已发布其文件格式的详细信息.它似乎说你每行至少需要9个字节.
SQLite使用B-Tree结构的两个不同变体:
- 表B-Tree,使用64位整数值作为键.在表B-Tree中,关联的数据库记录(第2.3.2节)与每个条目一起存储.表B-Tree结构在2.3.4节中详细描述.
- 索引B-Tree,它使用数据库记录作为键.索引B树结构在2.3.3节中有详细描述.
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |