Timeout occurred while waiting for latch: class 'COLUMNSTORE_ROWGROUP_COLLECTION'
今天发现线上数据库主从延迟严重:
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id as database_id, dr_state.redo_queue_size, is_ag_replica_local = CASE WHEN ar_state.is_local = 1 THEN N'LOCAL' ELSE 'REMOTE' END , ag_replica_role = CASE WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED' ELSE ar_state.role_desc END FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id ) JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id) JOIN sys.dm_hadr_database_replica_states dr_state on ag.group_id = dr_state.group_id and dr_state.replica_id = ar_state.replica_id;
从库大量日志没有做,当时就想到可能是从库有事物没有执行完毕,查看了一下未结束的事物和锁信息,发现并不是这个原因,查看错误日志:
消息
Timeout occurred while waiting for latch: class 'COLUMNSTORE_ROWGROUP_COLLECTION', id 00000030F72767A0, type 4, Task 0x00000030FF058CA8 : 0, waittime 44400 seconds, flags 0x1a, owning task 0x00000030FF058CA8. Continuing to wait.
我擦,这不是上次碰到的问题吗,假定您启用 Microsoft SQL Server 2014年的 AlwaysOn 可用性组功能。在 rowgroups 转换为压缩的状态将导致在主站点上聚集 Columnstore 索引 (CCI) 为插入数据时,在辅助站点上的重做线程可能会遇到闩锁超时错误。COLUMNSTORE_ROWGROUP_COLLECTION内部锁争用,这里说明下,这是SQL Server2014 12.0.2000的一个BUG,列存储锁争用,我们需要升级补丁或者重启数据库才能够解决,我是碰到两次了,最终解决办法就是给从库打了一个补丁,完美解决。
热衷于学习讨论MySQL和SQL Server,NoSQL等数据库技术,欢迎加入SQL优化群:659336691
分类:
SQL Server
标签:
列存储
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!