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