我们想要创建一个BIG缓存表(30 Mio记录),以优化数据库查询。 此缓存表将位于单独的磁盘上。
我们正在使用简单的数据库记录。
问题:当我们将数据插入缓存时,主表空间上的LOG文件开始增加,直到INSERT准备就绪,然后日志文件恢复正常。
问题1:有没有办法在没有日志文件增加的情况下将数百万条记录插入表中?
我们不需要“撤消”选项,所以实际上:您可以将数据插入到任何事务之外的表中,即没有ROLLBACK选项吗?
另外,问题2:有没有更好的方法来创建包含缓存数据的大表?
答案 0 :(得分:1)
SQL Server有多种执行方式minimally logged inserts。这需要SIMPLE
恢复模型等。执行此操作时,生成的日志量很小,因为大多数分配都会被记录。
无法关闭事务或禁用回滚支持。这些当然是合理的功能要求,但现在还不可能。
您还可以尝试减小所写数据的大小,例如使用数据压缩或使用聚簇列存储索引(可能具有惊人的压缩)。
答案 1 :(得分:0)
确保隐式交易已关闭。这样你就不会在当前交易中建立数据。
在SQL Server 2014中,有一种内存表选项可用于此类事情,但如果您在2008年停滞不前,这将无效。
答案 2 :(得分:0)
您不能省略事务日志,但可以使用BULK INSERT和BATCHSIZE选项来减少事务日志大小。
答案 3 :(得分:0)
感谢您的投入!事实上,只有两种解决方案: