Informix数据库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语句高速缓存内的分析信息和查询计划。

时间: 2024-10-26 05:48:59

Informix数据库SQL语句高速缓存技术应用实践的相关文章

MySQL数据库SQL语句的C++ ODBC接口类测试结果 (转载)

c++|mysql|odbc|数据|数据库|语句 发信人: engineer (剑胆琴心~还是得走,sigh...), 信区: Linux 标  题: MySQL数据库SQL语句的C++ ODBC接口类测试结果 (转载) 发信站: BBS 水木清华站 (Mon Aug  9 18:03:47 1999)   [ 以下文字转载自 Database 讨论区 ] [ 原文由 engineer 所发表 ]         MySql数据库SQL语句的C++ ODBC接口类测试结果            

oracl数据库sql语句怎么查询工资最低的两名员工编号,姓名,工资等信息。

问题描述 oracl数据库sql语句怎么查询工资最低的两名员工编号,姓名,工资等信息. 查询每个部门工资最低的两个员工编号,姓名,工资,等信息.关键是工资最低的两名员工 解决方案 SELECT * FROM ( SELECT bumen, price, ROW_NUMBER () OVER ( PARTITION BY bumen ORDER BY bumen, price DESC ) rn FROM table1 WHERE bumen IN ( SELECT bumen FROM tabl

textbox-求大神指导C#数据库SQL语句updatedata

问题描述 求大神指导C#数据库SQL语句updatedata String SQLString = string.Format(" update {0} set 坐标X/m= {1},坐标Y/m={2},高程H/m={3} where 点号='{4}'",str,int.Parse(textBox1.Text),int.Parse(textBox2.Text),int.Parse(textBox3.Text),textBox4.Text);///设置sql查询语句 OleDbDataA

sql优化-mysql数据库sql语句优化,求大神!!!!

问题描述 mysql数据库sql语句优化,求大神!!!! SELECT DISTINCT uid, level,username,ansnum FROM test WHERE level=100 GROUP BY uid ORDER BY ansnum DESC LIMIT 12; uid.ansnum均已建索引,主要是GROUP BY uid导致特别慢,如何提速??? 解决方案 MySQL数据库SQL语句优化原则 解决方案二: 根据你的查询需求,没有特别好的优化办法.注意group by 和o

mssql 压缩数据库 检查备份集 修复数据库 sql语句

mssql 压缩数据库教程 检查备份集 修复数据库 sql语句 本教程提供了关于mssql server 压缩数据库 检查备份集 修复数据库的sql语句,并且实例说明的操作方法. 3.压缩数据库 dbcc shrinkdatabase(dbname) 4.转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go 5.检查备份集 restore verifyonly from disk='e:d

把字符串转换成数据库SQL语句格式_应用技巧

复制代码 代码如下: '把字符串转换成数据库SQL语句格式 '------------------------------------------------- Function AllStr2Database(str,strType)     Dim strTemp:strTemp=str     Select Case strType         Case ""         Case "num"             strTemp = Clng(st

数据库sql语句to_char优化[mysql和oracle ]

最早发现这个问题是在买买提分析中,如果 在数据库sql语句中用  代码如下 复制代码 select * from 表名 where  to_char('表中的日期字段', 'YYYY-MM-DD') = '2011-01-11', 如果的表中的数据不多,那么执行这个语句ok没有问题, 如果表中的数据过多(1000- 3000万),那么会提示数据库内存溢出~~~~ 解决方案: ORACLE: 表中的日期字段  代码如下 复制代码 <= to_date(#map.st_date:VARCHAR# 

把字符串转换成数据库SQL语句格式

复制代码 代码如下: '把字符串转换成数据库SQL语句格式 '------------------------------------------------- Function AllStr2Database(str,strType)     Dim strTemp:strTemp=str     Select Case strType         Case ""         Case "num"             strTemp = Clng(st

SQL语句优化技术分析

优化|语句 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:        ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询.由此可见用IN的SQL至少多了一个转换的过程.一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不