Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 性能提高、诊断和监控 » 关于提高性能的提示 » 更新列统计信息

 

统计信息调控器如何维护统计信息

除在执行查询时自动对列统计信息执行调整外,统计信息调控器还监视优化程序统计信息的健康状况和使用情况。统计信息调控器自动评估数据库中每条统计信息的健康状况与有用程度,并执行必需的维护以使统计信息实现自我监控和自我恢复。将在后台执行统计信息维护,且不会明显增加对数据库服务器性能的负荷。

统计信息调控器执行以下任务:

update_statistics 选项控制指定的连接是否可以将查询反馈发送到统计信息调控器。如果将此选项设置为 Off,统计信息调控器将不会从指定的连接接收查询反馈。然而,统计信息调控器仍可从其它连接接收查询反馈并对统计信息执行维护操作。

统计信息调控器根据统计信息的健康状况和使用情况决定何时修正或创建统计信息。可以通过在查询执行期间收集统计信息或者通过称为统计信息清理程序的独立进程,修正或创建统计信息。可以使用 sa_server_option 系统过程的 StatisticsCleaner 选项禁用统计信息清理程序(无需禁用统计信息调控器),但如果统计信息清理程序关闭,则仅当查询运行时才会创建或修正统计信息。

为降低服务器负载,统计信息调控器会停止对难以修正或从不使用的统计信息进行维护。在很短时间内修正数次却仍返回不良估计值的统计信息会被删除,并且在 30 天内不会得到维护。30 天之后将重新创建删除的统计信息,并恢复定期维护。可以使用 sa_server_option 系统过程的 DropBadStatistics 选项禁用该功能。最近 90 天内未使用的统计信息也会被删除。要禁用该功能,请使用 sa_server_option 系统过程的 DropUnusedStatistics 选项。可以使用 CREATE STATISTICS、DROP STATISTICS 或 ALTER STATISTICS 语句,随时恢复对统计信息的维护。

仅针对载入内存的表监视统计信息,这些统计信息每 30 分钟刷新一次。刷新期间,会检查统计信息的健康状况和使用情况,统计信息调控器会对统计信息执行维护。在两次会话之间不会一直保持有关统计信息的状态信息(例如健康状况、使用情况和有关何时更新或删除统计信息的信息)。数据库服务器关闭时会重置状态信息。

 另请参见