SQL Server运维踩坑八年,这本实战指南专治数据库疑难杂症
|
我越来越觉得“SQL Server运维踩坑八年,这本实战指南专治数据库疑难杂症”是错的。 它根本不是指南——是八年后才敢翻出来的验尸报告。上个月我拿它查一个凌晨三点挂掉的Always On同步延迟,结果发现第147页写的“强制Failover前务必清空日志缓存”,压根没提SQL Server 2019 CU15之后log_send_queue_size字段在AG健康检查里被悄悄重命名成log_send_queue_bytes。我们三个人盯着监控面板盯了四小时,张磊还用手机录了屏幕视频发到DBA群,标题叫《又见幽灵延迟》,没人点开看,因为都知道点开也没用——那本书2021年印的,印厂油墨都干透了,可代码早换三轮。 我原以为照着书里第三章“索引碎片清理七步法”执行完就万事大吉。结果去年十一月,客户那个跑十年的老系统,重建所有>30%碎片率的索引后,报表查询从2.3秒飙到47秒。李工蹲在机房拿SSMS连了三次,最后一次连上时手抖把“WHERE 1=1”打成了“WHERE 1==1”,报错说语法错误,他当场笑出声——笑完接着骂:“谁他妈写这书不标版本号?”。我没吭声,因为第二步“更新统计信息”那段,我跳过了UPDATE STATISTICS xxx WITH FULLSCAN,改用SAMPLE 20 PERCENT,理由是文档写“日常维护足够”。结果呢?执行计划里嵌套循环变成哈希匹配,tempdb暴涨十七个站,磁盘报警音吵得隔壁运维组关掉了自己服务器的蜂鸣器。 书里说“备份策略必须遵循3-2-1原则”,我就照做:三份全备、两套介质、一份异地。可去年七月暴雨淹了IDC地下层,异地那份存在深圳腾讯云的bak文件,恢复时发现CHECKSUM校验失败。王姐抱着笔记本蹲在楼梯间打伞连热点重传,一边传一边念叨:“你猜怎么着?那本书附录B写的‘校验和损坏即弃用’,但没写SQL Server 2017之后其实支持IGNORE_CONSTRAINTS参数跳过校验……我翻到第492页脚注才发现。”她把笔记本合上,扣在膝盖上,雨滴顺着伞沿砸在封面上,把“实战指南”四个字泡出了毛边。
文章配图,仅供参考 这书站得住的地方只有一处:优胜劣汰。它活下来,不是因为它对,而是因为其他更错的早被淘汰光了。去年冬天我把它摊在桌上,旁边放着Microsoft Docs网页、SQL Server内部博客PDF、还有我自己三年前写的故障时间线Excel——那表格第8列是“是否被这本书误导”,打了十七个勾。第七个勾旁边批注写着:“当时信了‘TempDB文件数=逻辑CPU核数’,配了32个数据文件,结果I/O争用比以前还高;后来问徐工,他说他2015年就这么干过,第二天就删了29个。”书脊裂了两道缝,左边那道是我用指甲抠的——查死锁图谱那段,写“DBCC TRACEON(1204,1222)”就能捕获,可我们生产环境跑完什么都没出来。直到某天深夜我顺手开了Extended Events抓xml_deadlock_report,才发现traceflag在Windows Server 2019上根本不管用,连errorlog都不记。我撕下那页纸,塞进咖啡杯底下垫着,杯子歪了,咖啡洇湿了“图解死锁链”四个字的下半部分。 书里有个小框强调:“不要手动KILL SPID,尤其不要杀SYSTEM SPID”。可今年二月我亲手杀了spid 61,就因为它的wait_type卡在PREEMPTIVE_OS_WAITFORSINGLEOBJECT整整五十三分钟,而sys.dm_exec_requests显示status还是running。我杀完刷新,状态变RUNNABLE,十秒后变SUSPENDED,又十秒变RUNNING,然后整个实例夯住四十秒。监控告警电话响到第二遍时,值班医生刚结束一台阑尾炎手术回科室,接电话第一句是:“你们是不是又动了master?” 我试了三个月,把同一套故障场景在测试环境重复跑了二十七次。每次都在书标注“安全边界”的地方栽倒。比如“备份压缩率建议设为5”——我调成8,结果压缩线程把CPU占满,导致SQL Agent作业延迟三小时;换成2,备份耗时多四十分钟,可凌晨备份窗口刚好卡在运维交接班前五分钟,李工打盹醒来差点漏掉日志截断。这些事书里不写,它只写“按推荐值设置即可”,好像人不用呼吸、服务器不用散热、凌晨四点也没人会困得把BACKUP DATABASE打成BACKUP MASTER。 上周我把这本书借给新来的实习生小赵。他看了两天,在“死锁排查”章节用荧光笔画满整页,还问我:“老师,这里说‘优先升级到最新CU’,可咱们生产库还是2016 SP2,补丁能随便升吗?”我没答,转头去改他提交的部署脚本——他写了ALTER DATABASE SET AUTO_UPDATE_STATISTICS_ASYNC ON,可我们库里有七个表启用了内存优化,那玩意儿根本不支持异步统计更新。我删掉那行,手抖按错了Ctrl+Z,恢复出一行“EXEC sp_updatestats”,保存,发了邮件。邮件正文只有一句话:“别信目录里的章节标题。” 这事我也可能就运气好——上周五没重启那台主库,不然自动参数化设置变更引发的Plan Guide失效问题,现在还卡在性能基线分析里出不来。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


传媒资讯分类总出错?14年运维老炮儿用智能算法提准至98.7%
容器运维视角:技术讨论应回归客观本质
站长圈暗涌的外网技术风向,90%运维人尚未察觉
鸿蒙开发者必修:MySQL运维设计实战
SqlServer存储过程与触发器实战:零基础构建高可用数据审计系统
Linux数据库环境搭建:七步稳态实战指南
物联网老兵揭秘:网站合规运维7大致命盲区