08 2013 档案
摘要:前言今天算是遇到了一个罕见的案例。SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽。但这次我碰到的问题确实比较诡异,其解决方式也是我第一次使用。下文将为各位看管详细介绍我的解决思路。现象一客户反馈数据库的日志文件不断增长,已分配的磁盘空间快使用完,尝试过事务日志截断(事务日志备份)的操作,但没有任何效果。分析遇到这个问题,我最直接的感受:肯定有大的事务一直在执行,导致日志备份无法截断事务日志的大小。首先,我在该数据库下运行DBCC loginfo() 图一从图一的红色框可以看到,数据库的多个VLF的状态都为2,也就是activ
阅读全文
摘要:什么是转发记录指针?转发记录指针是堆表中特有的数据存储机制。当你修改了某个数据页中的一行时,如果该行所在的数据页已经无法存放其修改后的行,SQL Server会把这行数据移动到一个新的数据页上面去,并在原来的位置留下一个”记录转发指针”,指向到数据行新的位置。 图一滥用记录转发指针的后果 转发记录指针是个非常麻烦的东西,对数据读取的性能百害无一利, 试想在一个满是转发指针记录的表中查找数据时,你需要根据这些转发指针记录在不同的数据页上跳来跳去,对性能的影响可想而知。 甚至连SQL Server自己也意识到这个机制并不完美,在未来的版本中可能不再存在。(《Inside SQL Server 20
阅读全文