摘要:正如我们所知,Informix 数据库优化器采用基于“成本”优化方式,当接收到用户发出的SQL语句后,Informix优化器要对SQL语句进行编译,根据成本最低的原则生成最终的执行计划进行执行。对于每一个SQL语句,都要进行编译工作,为了提高系统的性能,特别是对具
- 正如我们所知,Informix 数据库优化器采用基于“成本”优化方式,当接收到用户发出的SQL语句后,Informix优化器要对SQL语句进行编译,根据成本最低的原则生成最终的执行计划进行执行。对于每一个SQL语句,都要进行编译工作,为了提高系统的性能,特别是对具有大量相同SQL语句的系统,Informix从9.2版本开始,就提供了SQL语句高速缓存机制SQL Statement Cache (SSC),将已分析并优化的SQL语句缓存到内存中,以使执行相同SQL语句的多个用户能够实现以下性能改进: 响应时间缩短,原因是绕过了分析和优化步骤 占用的内存量减少,原因是数据库服务器在用户间共享查询数据结构 通过采用SQL语句高速缓存机制,可以大大提高拥有大量相同SQL语句系统的性能。 下图显示数据库服务器如何对多个用户访问SQL语句高速缓存。 图 1. 使用SQL语句高速缓存时的数据库服务器操作
当数据库服务器第一次为用户 1 执行SQL语句时,数据库服务器检查完全一样的SQL语句是否在SQL语句高速缓存中。如果不在高速缓存中,那么数据库服务器分析该语句、确定最优的查询计划并执行该语句。 当用户 2 执行完全一样的SQL语句时,数据库服务器在SQL语句高速缓存中查找该语句而不需要分析和优化该语句。 同样,如果用户 3 和用户 4 执行完全一样的SQL语句,数据库服务器不必分析和优化该语句。相反,它使用内存中SQL语句高速缓存内的分析信息和查询计划。 启用SQL语句高速缓存 STMT_CACHE 配置参数为 0(缺省值)时,数据库服务器将不使用SQL语句高速缓存。 使用以下方法之一可更改该 STMT_CACHE 的缺省值: 更新 ONCONFIG 文件以指定 STMT_CACHE 配置参数,并重新启动数据库服务器。 如果将 STMT_CACHE 配置参数设置为 1,那么数据库服务器将在单个用户将 STMT_CACHE 环境变量设置为 1 或在应用程序中执行 SET STATEMENT CACHE ON 语句时,为该用户使用SQL语句高速缓存。 STMT_CACHE 1 如果 STMT_CACHE 配置参数为 2,那么数据库服务器将所有用户的SQL语句存储到SQL语句高速缓存中,除非单个用户使用 STMT_CACHE 环境变量或 SET STATEMENT CACHE OFF 语句关闭该功能。 STMT_CACHE 2 使用 onmode -e 命令动态地覆盖 STMT_CACHE 配置参数。 如果使用 enable 关键字,那么在单个用户将 STMT_CACHE 环境变量设置为 1 或在应用程序中执行 SET STATEMENT CACHE ON 语句时,数据库服务器将为该用户使用SQL语句高速缓存。 onmode -e enable 如果使用 on 关键字,数据库服务器将所有用户的SQL语句存储到SQL语句高速缓存,除非单个用户通过 STMT_CACHE 环境变量或 SET STATEMENT CACHE OFF 语句关闭该项功能。 onmode -e on 根据 STMT_CACHE 配置参数的设置(或 onmode -e 的执行),下表为用户总结了SQL语句高速缓存的用法,以及在 STMT_ CACHE 环境变量的应用程序和 SET STATEMENT CACHE 语句中的用法。
|