摘要: SQL Server资源调节器的作用如果有5个业务都很繁忙的数据库需要部署在一台服务器上,为了避免相互的资源抢占,我们通常会在服务器上安装5个SQL Server实例来分别承载这5个数据库,然后分别设置每个实例的最大和最小内存、CPU掩码等,用以s控制这5个业务数据库的资源分配。笔者的公司曾经就有这... 阅读全文
posted @ 2015-01-03 16:27 i6first 阅读(3952) 评论(7) 推荐(2) 编辑
摘要: 新一代读写分离技术——AlwaysOn早在SQL Server 2005的时候微软就已经实现了数据库的查询分离技术——发布订阅。但生产库和查询库的同步性能较差,时常出现性能问题,因此在大型生产环境中一直被人所诟病。从SQL Server 2012开始,微软逐渐使用AlwaysON技术来取代发布订阅。... 阅读全文
posted @ 2014-12-03 12:04 i6first 阅读(6314) 评论(6) 推荐(5) 编辑
摘要: 延迟是AlwaysOn最大的敌人之一延迟是AlwaysON的最大敌人之一。对AlwaysON而言,其首要目标就尽量减少(无法避免)主副本、辅助副本的数据延迟,实现主副本、辅助副本的“数据同步”。只有主副本、辅助副本的同步延迟越小越高,只读访问的实性性才会越高,数据库的RTO(Estimating F... 阅读全文
posted @ 2014-12-02 19:56 i6first 阅读(3112) 评论(9) 推荐(5) 编辑
摘要: 导言完整备份不能截断事务日志,这是所有SQL Server DBA的一个常识,为此,当数据库处于完整恢复模式时(非特别说明,下文所提到都是完整恢复模式下的数据库),DBA们必须频繁地使用事务日志备份的方式来防止日志文件变得过大。这几乎成为了DBA们的一个定理,但,作为一个DBA,你证明过这个定理吗?... 阅读全文
posted @ 2014-05-05 09:26 i6first 阅读(10222) 评论(19) 推荐(10) 编辑
摘要: 相信大家对内存数据库的 概念并不陌生,之前园子里也有多位大牛介绍过SQL内存数据库的创建方法,我曾仔细 拜读过,有了大致了解,不过仍有很多细节不清晰,比如: (1)内存数据库是把整个数据库放到内存中的吗? (2)数据都在内存里面,那宕机或者断电了,数据不是没有了吗? (3)据在内存是怎么存放的,还是按照页的方式吗,一行的大小有限制吗? (4)内存数据库号称无锁式设计,SQL是如何处理并发冲突的呢? 相信这些疑问也是大家在思考内存数据库时经常遇到的难题,下文将为大家一一揭开这些问题的面纱,如有不对之处,还请各位看官帮我指出。 一、内存数据库是如何存储的,只放在内存吗?是把整个数据库放在内存吗? 阅读全文
posted @ 2014-02-14 15:20 i6first 阅读(4374) 评论(5) 推荐(4) 编辑
摘要: 原文地址:http://rusanu.com/2012/07/27/how-to-shrink-the-sql-server-log/ 说明:本文为了更好的说明收缩的过程,在原文翻译的基础上增加了一些个人的理解,省略了部分内容,建议大家在阅读本文时参考原文。 一、问题场景我的数据库日志文件已经增大到200G了,我也尝试去收缩数据库,但大小没有改变,请问该如何减小日志文件的大小?这个问题实际上就是说执行DBCC SHRINKFILE没有减小日志文件的大小,到底是什么原因导致的呢? 二、准备知识1、LSNLSN用来标识特定日志在日志文件中位置(详情请见什么是LSN:日志序列号),它由两部分组成:一 阅读全文
posted @ 2014-01-27 15:12 i6first 阅读(4630) 评论(5) 推荐(8) 编辑
摘要: 一同事反馈SQL无法正常登录了,以前都是通过windows集成身份验证登录进去的(sa密码早忘记了),今天就改了服务器的机器名,现在无论如何都登录不进去。 SQL登录时如果采用windows集成身份验证,登录框将会以“机器名\当前系统用户名”的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入。 了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示“新机器名\当前系统用户名”。要知道windows集成身份验证能登录的原因是在SQL的登录名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,如果机器名变更了,“新机器名\当前系统用户名”肯定无法正常登录。. 阅读全文
posted @ 2014-01-09 20:50 i6first 阅读(4049) 评论(18) 推荐(4) 编辑
摘要: 前天接到同事电话:SQL服务器磁盘空间爆满导致数据库无法访问。远程到服务器上,发现原来是SQL错误日志文件惹的祸,数据库在1秒内产生上100M大小的日志,没多长时间就将磁盘空间堵满了。SQL错误日志记录了数据库运行过程的遇到的各种问题及一些重要信息,作为排错需要,我们通常都不会主动去清理这些日志文件,只有每次重启服务器时,SQL会自动删除时间最老的日志文件,并新生成一个日志文件。通过在服务器上查看数据库的日志文件,发现存在大量的query notification dialog的信息,而且出现的频率非常的高,导致日志文件增大非常快。通过google了解到这个错误跟service broker的 阅读全文
posted @ 2013-11-07 17:19 i6first 阅读(2366) 评论(14) 推荐(4) 编辑
摘要: 前言今天算是遇到了一个罕见的案例。SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽。但这次我碰到的问题确实比较诡异,其解决方式也是我第一次使用。下文将为各位看管详细介绍我的解决思路。现象一客户反馈数据库的日志文件不断增长,已分配的磁盘空间快使用完,尝试过事务日志截断(事务日志备份)的操作,但没有任何效果。分析遇到这个问题,我最直接的感受:肯定有大的事务一直在执行,导致日志备份无法截断事务日志的大小。首先,我在该数据库下运行DBCC loginfo() 图一从图一的红色框可以看到,数据库的多个VLF的状态都为2,也就是activ 阅读全文
posted @ 2013-08-25 21:36 i6first 阅读(10489) 评论(33) 推荐(31) 编辑
摘要: 什么是转发记录指针?转发记录指针是堆表中特有的数据存储机制。当你修改了某个数据页中的一行时,如果该行所在的数据页已经无法存放其修改后的行,SQL Server会把这行数据移动到一个新的数据页上面去,并在原来的位置留下一个”记录转发指针”,指向到数据行新的位置。 图一滥用记录转发指针的后果 转发记录指针是个非常麻烦的东西,对数据读取的性能百害无一利, 试想在一个满是转发指针记录的表中查找数据时,你需要根据这些转发指针记录在不同的数据页上跳来跳去,对性能的影响可想而知。 甚至连SQL Server自己也意识到这个机制并不完美,在未来的版本中可能不再存在。(《Inside SQL Server 20 阅读全文
posted @ 2013-08-05 19:54 i6first 阅读(1121) 评论(4) 推荐(3) 编辑