|
|
1
4
存储过程不会比参数化SQL更快。在我的应用程序中,比起硬编码SQL,我更喜欢使用存储过程,但是如果要生成insert语句,那就更好了。 如果您认为可能会丢失数据,那么使用缓冲区是一个好主意。如果您希望将客户机与插入分离,并且希望它是持久的,那么可以使用msmq。然后您可以编写一个处理队列的Windows服务,它将与应用程序完全分离。如果您有一个服务器场,那么它还可以从多个服务器聚合日志。 |
|
|
2
5
Log4NET 将跟踪转储到一个SQL数据库,其中包含一整堆刷新选项等。 检查一下: http://logging.apache.org/log4net/release/features.html log4net已被证明。如果你能避免“写轮子”,那就好了,对吧? |
|
|
3
1
我不能说SP是否比ADO插入更快,但我总是建议在应用程序中保留查询/非查询,而不是在数据存储中。正如您现在所看到的,数据存储是为了数据,而不是逻辑。避免SPS。 MS SQL Server是一个复杂的机器,我认为您的应用程序不会导致代码阻塞,从而导致过多的日志记录到您的数据库中。显然,这取决于您的特定实现,并且出于您对性能的兴趣,我假设您打算支持大容量。我的意思是,我认为您不需要内存中的队列或服务来包装日志记录过程。只需将跟踪刷新到ASPNET应用程序中的数据库,然后忘记缓存/刷新。SQL将负责将日志查询保存在内存中,并负责将其写入磁盘——事实上,它管理得非常好。SQL的查询缓冲区将确保您的代码不会在刷新跟踪时阻塞。如果你不相信我,用调试窗口中的时间戳或其他东西来测试它。如果您确实需要调整它,那么调整应该在数据库的内存设置中。你不需要在这里发明一个包装器,使用SP或者在你的服务器上启动另一个服务(比如msmq),这只会占用你宝贵的CPU和MEM。 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |