我有一个日志表,可以从多个Web应用程序接收插入内容。我不会对这些数据进行任何搜索/排序/查询。我将把数据拉到另一个数据库来运行报告。初始表严格用于接收日志消息。
有没有办法确保Web应用程序不必等待这些插入?例如,我知道添加大量索引会减慢插入速度,所以我不会。那里还有什么?我不应该添加主键吗? (每晚会将表格抽取到报告数据库中,该数据库将包含大量键/索引)
答案 0 :(得分:10)
如果性能很关键,您可能不希望将此数据写入数据库。我想大多数事情都会将数据库写入处理为往返,但听起来你不想等待返回的确认消息。检查,正如S. Lott建议的那样,将行添加到某个简单的文本文件可能不会更快。
如果数据库写入更快(或者出于安全性或其他业务/操作原因需要),我会在表上放置 no 索引 - 并且包括主键。如果它不会用于读取或更新,并且如果您不需要关系完整性,那么您就不需要在此表上使用PK。
推荐显而易见的:作为每晚报告运行的一部分,清除表中的内容。此外,永远不要重置数据库文件大小(ye olde shrink database命令);经过一周左右的常规使用后,数据库文件应该是它们需要的大小,您不必担心文件增长性能受到影响。
答案 1 :(得分:6)
以下是一些想法,请注意最后一些想法,你会有极高的音量:
答案 2 :(得分:5)
没有钥匙, 没有限制, 没有验证, 没有触发器, 没有计算列
如果可以,请让服务插入异步,以便不等待结果(如果可以接受)。
您甚至可以尝试插入“每日”表格,这应该是更少的记录, 然后在批处理晚上运行之前移动它。
但主要是在桌面上NO KEYS / Validation(PK和Unique索引会杀了你)