请问应该使用SQLite还是SQL Server?我之前一直将XML文件作为数据存储方式来执行添加、删除和更新操作。有人建议我使用SQLite以获取更快的操作速度,但我不熟悉SQLite,只了解SQL Server。
请问应该使用SQLite还是SQL Server?我之前一直将XML文件作为数据存储方式来执行添加、删除和更新操作。有人建议我使用SQLite以获取更快的操作速度,但我不熟悉SQLite,只了解SQL Server。
SQLite是一个很棒的嵌入式数据库,您可以将其与应用程序一起部署。如果您正在编写分布式应用程序,那么SQLite具有不需要任何单独的安装程序或维护的巨大优势——它只是一个单独的dll文件,随着您的应用程序的其他部分一起部署。
SQLite还在进程中运行,并减少了数据库带来的许多开销——所有数据都被缓存并在进程中查询。
SQLite与您的.NET应用程序集成比SQL Server更好。您可以使用任何.NET语言编写自定义函数,在SQLite引擎内运行,但仍在应用程序的调用进程和空间内,因此可以调用您的应用程序以集成其他数据或执行操作,同时执行查询。这种非常不寻常的能力使某些操作变得更加容易。
SQLite通常比SQL Server快得多。
但是,SQLite一次只支持一个写入器(即每个事务的执行)。当需要锁定整个数据库时,SQLite会锁定整个数据库,并且只有一个写入器可以持有写入锁。由于其速度,这对于小到中等大小的应用程序实际上并不是问题,但如果您有更高的写入量(每秒数百个),那么它可能会成为瓶颈。有许多可能的解决方案,例如将数据库数据分离为不同的数据库,并将写入缓存到队列中并异步写入它们。但是,如果您的应用程序可能会遇到这些使用要求并且尚未针对SQLite编写,则最好使用其他东西,如具有更细粒度锁定的SQL Server。
更新:SQLite 3.7.0添加了一种名为“写前日志记录”的新日志模式,支持读取时并发写入。在我们内部的多进程争用测试中,相同的有争议的读/写序列的计时从110秒降至8秒。