当前位置: 首页 > news >正文

网站建设优化教程wordpress多人博客

网站建设优化教程,wordpress多人博客,网站设置超链接,河北网站建设方案一、ORACLE中的类似的函数稳定性关键字#xff08;DETERMINISTIC#xff09; 在ORACLE里#xff0c;function有着一个DETERMINISTIC参数#xff0c;它表示一个函数在输入不变的情况下输出是否确定#xff0c;只要输入的参数一样#xff0c;返回的结果一定一样的#xf…一、ORACLE中的类似的函数稳定性关键字DETERMINISTIC 在ORACLE里function有着一个DETERMINISTIC参数它表示一个函数在输入不变的情况下输出是否确定只要输入的参数一样返回的结果一定一样的以保证函数对于任何输入总是完全相同的方式处理参数oracle的内置函数 UPPER,TRUNC 等都是 deterministic 函数。具体例子如下 ----带DETERMINISTIC的现象 create or replace function f_t(i_p int) return number DETERMINISTIC isi_rtn number;begini_rtn : i_p * dbms_random.value(1,10);return i_rtn;end;/select LEVEL,f_t(1) FROM DUAL CONNECT BY LEVEL10;----不带DETERMINISTIC的现象create or replace function f_t(i_p int) return number isi_rtn number;begini_rtn : i_p * dbms_random.value(1,10);return i_rtn;end;/select LEVEL,f_t(1) FROM DUAL CONNECT BY LEVEL10;可以看到带了DETERMINISTIC参数的多次执行的结果都是一样的能保证函数的稳定性。 二、MogDB/openGauss的三种函数稳定性状态 而MogDB数据库的函数虽然没有DETERMINISTIC关键字但是函数也有着类似的三种状态的关键字分别是immutable、stable和volatile。合理使用着三种不同的状态可以显著改善函数性能。 在数据库里使用\d create function也可以看到这三种状态的关键字提示。 IMMUTABLE(非常稳定) 任何时候调用只要函数的参数不变结果就不变。 纯函数执行结果可能会在规划时被预求值并缓存。 允许优化器在一个查询用常量参数调用该函数时提前计算该函数整数加法操作符底层的函数被 标记为IMMUTABLE。 表示该函数不能修改数据库并且对于给定的参数值总是会返回相同的值。 也就是说它不会做数据库查找或者使用没有在其参数列表中直接出现的信息。immutable, 和stable非常类似, 但是immutable是指在任何情况下, 只要参数一致, 结果就一致。 STABLE(稳定) 稳定在一个事务中调用时只要函数的参数不变结果就不变。 STABLE函数不能修改数据库状态,但是对于相同的参数值它在一次表扫描中将返回相同的结果。 因而优化器可以将相同参数的多次调用优化成一次调用。在索引扫描条件中允许使用STABLE函数。 在大多数情况下是的。在单个表扫描中对相同的参数值返回相同的结果但结果将通过SQL语句进行更改。 结果取决于数据库查找或参数值。 current_timestamp系列函数是 STABLE; 值在执行中不会改变。 immutable和stable很像显著的区别是优化器对immutable和stable函数的处理上,immutable函数在优化器生成执行计划时会将函数结果替换函数. 也就是函数不在输出的执行计划中, 取而代之的是一个结果常量。stable函数则不会如此, 执行计划输出后还是函数。 immutable和stable在调用次数上的明显区别可以用如下的测试验证出来 CREATE OR REPLACE FUNCTION func_out_num() RETURNS INTEGER AS $$ BEGIN RAISE NOTICE Invoke the func.; RETURN 6; END; $$ LANGUAGE PLPGSQL STABLE;select func_out_num() from generate_series(1,10); alter function func_out_num() immutable; select func_out_num() from generate_series(1,10);在本例中当使用STABLE关键字的时候会按照调用10次函数而当使用IMMUTABLE关键字时它会被优化为一次调用。 除此之外把函数内容放到结果集部分两种状态的差异也很大如下测试可以看出 MogDB# create table test_stable (id int, info text); CREATE TABLE MogDB# insert into test_stable select generate_series(1,100000),random()::text; INSERT 0 1000 MogDB# create index idx_test_a on test(id); CREATE INDEX创建如下函数 create or replace function func_stable() returns numeric as $$ declare begin return 2; end; $$ language plpgsql stable; 使用如下语句可以进行验证两种方式的执行计划时间明显不同。 explain analyze select func_stable() from test_stable; 因此在事务中参数一致则结果一致且只关注函数的最终结果可以标记为immutable因为它调用函数的次数少固化了函数的结果执行计划的代价较小。但是一般还是建议使用stable因为它会老老实实的去执行函数而不是只取一个固化的结果。 VOLATILE(不稳定) 默认为VOLATILE。表示该函数的值在一次表扫描中都有可能改变因此不能做优化。 VOLATILE函数可以做任何事情包括修改数据库状态。 在连续调用时即使使用相同的参数也可能会返回不同的结果。优化器不会优化掉此类函数每次调用都会重新求值。 在这种意义上相对较少的数据库函数是不稳定的。 例如: random(), currval(), timeofday()。 任何具有副作用的函数的都不稳定的即使其结果是可预测的。例如: setval()。 只有函数声明了VOLATILE状态才可以进行update操作。 具体的验证如下所示 MogDB# create table test_volatile (id int, info text); CREATE TABLE MogDB# insert into test_volatile select generate_series(1,1000),random()::text; INSERT 0 1000 MogDB# create index idx_test on test(id); CREATE INDEX然后建立测试的函数 create or replace function func_volatile(ida int) returns text as $$ declare result text; begin update test_volatile set infoxiaoguaishou where idida returning info into result; return result; end; $$ language plpgsql volatile; 可以看到测试结果
http://www.zqtcl.cn/news/916903/

相关文章:

  • wordpress建站需要学什么意思sem扫描电镜
  • 总结 设网站门户网站开发一般多少钱
  • 政务网站无障碍建设wordpress虚拟资源主题
  • 确山专业网站建设百度一下一下你就知道
  • 设计类网站排名优秀广告案例
  • 自己做网站如何挣钱天津南开做网站
  • 小型教育网站的开发建设论文前端开发培训哪里好
  • 久免费域名注册网站朋友圈广告推广
  • 深圳著名设计网站西安管控最新消息
  • 珠海网站快速排名提升ftp查看网站后台密码
  • php电子商务网站源码百搜网络科技有限公司
  • 做外贸的网站怎么建立小说网站流量怎么做
  • 官网整站优化四川省造价工程信息网
  • 公司内部网站怎么建立网站建设与管理ppt
  • 做正规网站有哪些前端好学吗需要学多久
  • 1企业网站案例用自己服务器做网站用备案
  • 广州做啊里巴巴网站多少钱自贡公司做网站
  • 天津做家政的网站购物网站功能模块图
  • 哪个网站好网站赚钱的方式
  • 班级网站建设开题报告在线音乐网站开发摘要
  • 昆山装饰公司网站建设wordpress olve
  • 重庆哪个区最繁华百度seo排名规则
  • 长春火车站高清图片网站商城微信支付宝支付宝支付接口
  • 市场体系建设司在官方网站支付宝手机网站支付
  • dedecms 模版网站网站图标下载
  • 余姚 做网站北京南站
  • 腾讯建设网站视频视频视频中国建筑信息平台
  • 关于政务网站建设的调查问卷搜狗网页版
  • 网站开发工程师优势宁波seo网站
  • 做网站用什么编程软件php网站中水印怎么做