每个页面视图的成本更高 - 数据库写入还是文件写入?

6 database performance file-io

当您需要在应用程序中的每个页面视图上记录一些数据时,最有效的解决方案是什么?您应该写入文件还是写入数据库?

或许两者都没有 - 也许您应该将数据缓存在内存或文件中,并且只是偶尔将其写入数据库(或文件系统,如果您使用内存缓存)?

Nic*_*ght 9

如果它纯粹记录少量数据而没有后续查找,则几乎可以保证直接文件I/O更高效.您正在失去DBMS的所有优势 - 索引,事务完整性(实际上,ACID),并发访问等.

这几乎听起来像是在谈论简单的日志记录.如果是这种情况,并且您不需要对结果数据进行频繁的复杂查询,那么如果性能严重问题,您可能最好使用直接文件I/O. 但是要注意并发写入问题.

如果需要RDBMS的属性,您可能会考虑使用SQLite,对于简单的负载而言,它会比大多数具有较少开销的RDBMS获得更好的性能,但代价是一些好处(高度并发访问和网络上的可用性)其他机器是一些"大佬").但是,在一般情况下,它仍然不如直接文件I/O快.

您稍后提到它是用于页面查看跟踪导致我问:您是否递增计数器,而不是记录有关页面视图的数据?如果是这样,我强烈建议选择类似SQLite的东西(做一些像UPDATE tbl SET counter = counter + 1).你真的不想要进入参与手工做这个时机的问题 - 如果你不这样做是正确的,你会开始同时访问丢失数(A写着"100",B写着"100" ,A写"101",B写"101"; B应该写102,但无法知道).