问题描述
在OLTP生产环境中,在巨大的事务期间,如果我们运行使用的schema的stat gather for transaction会有什么影响??
专家解答
收集统计信息相当于在你的表上运行一系列全表扫描。在CPU方面,如果您串行运行它,那么它将仅在您的服务器上使用单个内核。在I/O方面,这取决于您的存储可以支持什么带宽。
显然,我们建议在尽可能安静的一段时间内运行它,以最大限度地减少影响,但假设您使用默认值,它只会收集那些需要它的对象的统计信息 (即陈旧或丢失的统计数据)。
别忘了,你通常不需要克服对统计数据的痴迷。从10000万行到1.5亿行的表仍然只是 “一个大表”,因此优化器计划通常不太可能发生太大变化。通常是 * 较小 * 表 (从10行到1000行) 的变化对计划有更大的影响,而收集统计数据非常便宜。
其他选项包括: 如果您有备用数据库,则可以在该数据库上收集统计信息并将其导入生产数据库。但是,如果收集统计数据将使您在服务器资源方面 “处于边缘”,那么我感到震惊的是,您的运行是否非常接近极限?
显然,我们建议在尽可能安静的一段时间内运行它,以最大限度地减少影响,但假设您使用默认值,它只会收集那些需要它的对象的统计信息 (即陈旧或丢失的统计数据)。
别忘了,你通常不需要克服对统计数据的痴迷。从10000万行到1.5亿行的表仍然只是 “一个大表”,因此优化器计划通常不太可能发生太大变化。通常是 * 较小 * 表 (从10行到1000行) 的变化对计划有更大的影响,而收集统计数据非常便宜。
其他选项包括: 如果您有备用数据库,则可以在该数据库上收集统计信息并将其导入生产数据库。但是,如果收集统计数据将使您在服务器资源方面 “处于边缘”,那么我感到震惊的是,您的运行是否非常接近极限?
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




