首页 > 其他分享 >【优化】使用绑定变量 OR 不使用绑定变量,这不是问题的根源?

【优化】使用绑定变量 OR 不使用绑定变量,这不是问题的根源?

时间:2024-04-07 17:55:35浏览次数:15  
标签:变量 系统 绑定 使用 OLTP OLAP SQL

就目前现状来看,大家有点过分强调绑定变量的作用了。
任何一种优化方法都尤其适用场景,绑定变量技术也不例外。不可盲目的将其信奉为影响性能的罪魁祸首。

1.分清系统是OLTP还是OLAP类型很重要
通常来说,我们把业务分为两类,在线事务处理系统(OLTP)和在线分析系统(OLAP)或者决策支持系统(DSS)。这两类系统在数据库设计上截然不同。比如OLTP系统强调数据库的内存效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作;而OLAP系统则强调数据分析,强调SQL执行时间,强调磁盘I/O,强调分区等。

2.OLTP类型的系统适合大量使用绑定变量技术
OLTP系统是一个数据块变化非常频繁,SQL语句提交非常频繁的系统。对于数据块来说,应尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用绑定变量技术来达到SQL重用,减少物理I/O和重复的SQL解析,从而极大的改善数据库的性能。

3.OLAP系统中使用绑定变量是徒劳的
在OLAP系统中,不需要使用绑定变量(Bind),因为系统中SQL数量和执行频率都很低,SQL语句的分析时间较之执行时间来说可以忽略不计。但是OLAP中可以大量使用位图索引,物化视图,对于大的事务,尽量寻求速度上的优化,没有必要像OLTP那样要求快速提交,甚至要刻意减慢执行的速度。绑定变量真正的用途是在OLTP系统中,这个系统通常有这样的特点,用户并发数很大,用户的请求十分密集,并且这些请求的SQL 大多数是可以重复使用的。

4.小结
以上从理论层面解析了绑定变量的适用场景。希望给大家在日常优化过程中有些指导。请大家避免盲目调优带来的窘境

标签:变量,系统,绑定,使用,OLTP,OLAP,SQL
From: https://www.cnblogs.com/ivenlin/p/18119590

相关文章

  • 3-STM32+W5500远程升级篇OTA(阿里云物联网平台)-STM32通过W5500使用http下载程序文件,
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/alyota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  ......
  • bs4的使用 遍历文档树
     bs4的使用#遍历文档树#搜索文档树(5种过滤规则)#limit和recursive参数importrequests#pip3installbeautifulsoup4解析html和xml,修改html和xmlfrombs4importBeautifulSoup#res=requests.get('https://www.autohome.com.cn/news/1/#liststart')##withop......
  • 如何使用单片机 pwm 控制 mos 管?
    目录选择适合的硬件连接电路编写代码参考示例程序一程序二测试与调试注意事项        使用单片机(如常见的Arduino、STM32等)通过PWM(脉冲宽度调制)控制MOS管(金属氧化物半导体场效应管)是一种常见的电路控制方法。以下是一个基本的设计步骤指南:选择适合的硬......
  • 【求助】使用flask编写网页时遇到的问题
    @app.route('/signup',methods=['GET','POST'])defsecret():  form3=SecretForm()  ifrequest.method=='POST':    secret=form3.secret.data    ifsecret=='111111':      returnredirect(ur......
  • Item22:将成员变量声明为private
    芝士wa2024.4.7参考资源:EffectiveC++中文版第三版侯捷/译索引号:主图B300TP312C++/D60-3成员变量不该是public的理由:如果成员变量不是public,客户唯一能访问对象的方法就是通过成员函数,这种做法提高了规范性和一致性private可以实现只读,只写,读写的操作封装意义,public和......
  • Go 项目依赖注入wire工具最佳实践介绍与使用
    目录一、引入二、控制反转与依赖注入三、为什么需要依赖注入工具3.1示例3.2依赖注入写法与非依赖注入写法四、wire工具介绍与安装4.1wire基本介绍4.2安装五、Wire的基本使用5.1前置代码准备5.2使用Wire工具生成代码六、Wire核心技术5.1抽象语法树分析5.2模板编程七......
  • 多线程环境中使用MyBatis时避免出现没有token的问题
    //很重要,在多线程没有token下面三行可以解决mybatis方法报错//1.通过当前的WebUtil.getRequest()获取Servlet请求的属性ServletRequestAttributesservletRequestAttributes=newServletRequestAttributes(WebUtil.getRequest());//2.将获取到的Servlet请求属性设置......
  • Vue组件使用(父组件监听子组件数据变化,子组件使用父组件的数据,并监听父组件的数据变化)
    文章来源:https://blog.csdn.net/laodanqiu/article/details/129370442子组件使用父组件数据父组件父组件声明变量 父组件向子组件传递数据子组件 Vue数据类型type有以下几种:String:字符串类型。例如:“helloworld”。Number:数字类型。例如:12,1.5。Boolean:布尔类型。......
  • ConfigMap 多种使用方法
    介绍ConfigMap是Kubernetes中的一种资源对象,用于存储非敏感的配置数据,例如键值对、环境变量、配置文件等。它提供了一种将配置数据与应用程序解耦的方式,使得应用程序可以更灵活地部署和管理。注意:ConfigMap在设计上不是用来保存大量数据的。在ConfigMap中保存的数据......
  • 【Linux】shell 脚本基础使用
    在终端中输入命令可以完成一些常用的操作,但是我们都是一条一条输入命令,比较麻烦,为了解决这个问题,就会涉及到shell脚本,它可以将很多条命令放到一个文件里面,然后直接运行这个文件即可。shell脚本类似Windows的批处理文件shell脚本就是将连续执行的命令写成一个文件。......