使用SQLite进行日志记录

问题描述 投票:2回答:3

我想将SQLite用作WCF服务日志记录的数据库后端。一切看起来都不错,但是如何从真实系统中提取数据库日志文件,又不锁定数据库以进行日志检查/分析?该系统似乎负载非常大,每次尝试获取数据库日志文件时,它都会被锁定。

c# asp.net .net sqlite rdbms
3个回答
0
投票

SQLite允许具有多个进程/应用程序以打开相同的数据库文件以供读取和写入(写入时涉及一些锁定,但这通常不会带来很大的问题)。

您应该具有日志记录过程,可以将新行连续记录到数据库中,同时,卸载/提取过程可以将较旧的行复制到其他位置。

但是,如果您不应该在打开数据库时使用标准复制功能将数据库复制为文件,因为它很可能会损坏数据库(在Windows上,由于严格的锁定,甚至可能无法实现。)>]

相反,要让卸载过程使用标准SQLite API(或某些具有SQLite支持的脚本语言)连接到数据库,使用该API读取行,并在其他地方(例如在另一个SQLite数据库或大型“真实” SQL中)创建该数据的副本数据库,例如MySQL,Postgres或MSSQL(如果愿意,也可以在文本文件中)。


0
投票

使用SQLite的online backup API提取数据而不必锁定数据库。


0
投票

您现在可以使用SQLite的Write-Ahead Logging模式来启用对SQLite数据库的并发读写。

© www.soinside.com 2019 - 2024. All rights reserved.