我正在使用大型数据集(上千万个记录,有时上亿个记录),并且想要使用与R链接良好的数据库程序。我试图在mysql和sqlite之间做出选择。数据是静态的,但是我需要做很多查询。
在此link to sqlite help中,它指出:
“默认页面大小为1024字节,SQLite数据库的大小限制为2 TB(241字节)。即使它可以处理更大的数据库,SQLite也会将整个数据库存储在单个磁盘文件中,许多文件系统限制了最大存储空间。文件大小要小于这个大小。因此,如果您正在考虑这种规模的数据库,那么最好考虑使用一种客户机/服务器数据库引擎,该引擎将其内容分布在多个磁盘文件中,甚至可以分布在多个卷中。”
我不确定这是什么意思。当我尝试使用mysql和sqlite时,似乎mysql速度更快,但是我还没有构建非常严格的速度测试。我想知道,由于我的数据集的大小,mysql是否比sqlite对我来说是更好的选择。上面的描述似乎暗示可能是这种情况,但是我的数据几乎没有2TB。
我很高兴能从文件系统中了解最大文件大小的限制,以及这如何影响索引表和运行查询的速度。这确实可以帮助我决定使用哪个数据库进行分析。
最佳答案
SQLite数据库引擎将整个数据库存储到一个文件中。对于非常大的文件(SQLite的限制为2TB,如您在帮助中所找到的),这可能不是很有效。另外,SQLite一次只能限制一个用户。如果您的应用程序是基于Web的,或者最终可能是多线程的(例如Android上的AsyncTask
),则mysql可能是可行的方法。
就个人而言,由于您已经完成了测试并且mysql速度更快,所以我只想使用mysql。它将在将来具有更大的可扩展性,并可以让您做更多的事情。