2011-12-02 150 views
2

我们目前储存的产品,我在ASCII纯文本文件的格式工作,像这样的数据:为什么我的数据库文件与普通文本文件具有相同数据的大小相同?

timestamp:2011120211T10:42:23 
value:42 
error:Foobar error 
value:100 
error: 
timestamp:2011120211T10:43:58 
value:0 
... 

我试图导入从一个13 MB的文本文件,这个确切的数据与列的SQLite数据库(DATETIME, TEXT,TEXT,TEXT,TEXT)。但是,令我惊讶的是,数据库的文件大小也是13MB。

这是为什么?我希望数据库能够使用比普通的ascii更高效的格式,是不是这种情况?

回答

8

这绝对不是这种情况。这里有很多元数据,空间实际上经常被浪费在效率的名义上,以允许插入,索引等。

我希望ASCII转储大于数据库文件的唯一时间是如果数据库主要是二进制数据,那么需要将BASE64编码为ASCII输出,并且如果没有/最小索引。

+2

我认为你有一个错字:你写的“更小”,你似乎意味着“更大”? – ruakh

+0

@ruakh Ack!你是对的。固定! –

+0

谢谢! +1。 :-) – ruakh

0

数据库可以支持压缩数据,但会影响性能。我对Sqlite并不熟悉,但我猜想数据压缩是您需要打开的选项。

0

我会想象数据库的效率和速度将源于它在内存中使用的数据结构和它实现的搜索算法,而不是文件结构。

0

数据库不是为了更高效的空间而制作的,它是为了节省时间而设计的。在很多情况下,数据库不会浪费任何空间,但文本也不会浪费太多空间。

数据库记录号是更节省空间的文本,但文本看起来像文本。

即使有一定的空间利益,它也不会那么大,容易找出。但是当你使用字节不使用MB时,你会发现。

相关问题