分享

Informix数据库SQL语句高速缓存技术应用实践

 趋明 2012-03-15

 

摘要:正如我们所知,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 语句中的用法。

STMT_

CACHE 配置参数或 onmode -e

STMT_CACHE 环境变量 SET STATEMENT CACHE

语句

导致的行为
0(缺省值) 不适用 不适用 不使用语句高速缓存
1 0(或未设置) OFF 不使用语句高速缓存
1 1 OFF 不使用语句高速缓存
1 0(或未设置) ON 使用语句高速缓存
1 1 ON 使用语句高速缓存
1 1 未执行 使用语句高速缓存
1 0 未执行 不使用语句高速缓存
2 1(或未设置) ON 使用语句高速缓存
2 1(或未设置) OFF 不使用语句高速缓存
2 0 ON 使用语句高速缓存
2 0 OFF 用户不使用语句高速缓存
2 0 未执行 用户不使用语句高速缓存
2 1(或未设置) 未执行 用户使用语句高速缓存

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多