问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java为啥使用 preparestatement麻烦告诉我

发布网友 发布时间:2022-04-23 07:12

我来回答

2个回答

热心网友 时间:2022-04-13 16:08

其中分析分为硬分析(Hard Parse)和软分析(Soft Parse)。一条SQL语句通过语法检查后,Oracle 会先去shared pool 中找是否有相同的sql,如果找着了,就叫软分析,然后执行SQL语句。硬分析主要是检查该sql所涉及到的所有对象是否有效以及权限等关系,然后根据RBO或CBO模式生成执行计划,然后才执行SQL语句。可以看出,硬分析比软分析多了很多动作,而这里面的关键是“在shared pool 中是否有相同的sql”,而这就取决于是否使用绑定变量。另:oracle9i引入了soft soft parse,先到pga中的session cursor cache list列表中去查找(session cursor cache list的长度是由session_cache_cursor参数决定的),如果没有找到这条sql,这时候才去检查shard_pool.对于Oltp系统,很多时候硬分析的代价比执行还要高,这个我们可以通过10046事件跟踪得知。(2)共享池中SQL语句数量太多,重用性极低,加速了SQL语句的老化,导致共享池碎片过多。共享池中不同的SQL语句数量巨大,根据LRU原则,一些语句逐渐老化,最终被清理出共享池;这样就导致shared_pool_size 里面命中率下降,共享池碎片增多,可用内存空间不足。而为了维护共享池内部结构,需要使用latch,一种内部生命周期很短的lock,这将使用大量的cpu 资源,使得性能急剧下降。不使用绑定变量违背了oracle 的shared pool 的设计的原则,违背了这个设计用来共享的思想。2、怎么查看没有使用绑定变量select * from v$sql or v$sqlarea 查看是否有很多类似的语句,除了变量不一样,其他的都一样3、如何使用绑定变量?编写java 程序时,我们习惯都是定义JAVA 的程序变量,放入SQL 语句中,如String v_id = 'xxxxx';String v_sql = 'select name from table_a where id = ' + v_id ; 以上代码,看起来是使用了变量v_id ,但这却是java 的程序变量,而不是oracle 的绑定变量,语句传递到数据库后,此java 的程序变量已经被替换成具体的常量值,变成:select * from table_a where name = 'xxxxx' ;假定这个语句第一次执行,会进行硬分析。后来,同一段java 代码中v_id 值发现变化(v_id = 'yyyyyy'),数据库又接收到这样的语句:select * from table_a where name = 'yyyyyy' ;ORACLE 并不认为以上两条语句是相同的语句,因此对第二条语句会又做一次硬分析。这两条语句的执行计划可是一样的!其实,只需将以上java 代码改成以下这样,就使用了oracle 的绑定变量:String v_id = 'xxxxx';String v_sql = 'select name from table_a where id = ? '; //嵌入绑定变量stmt = con.prepareStatement( v_sql );stmt.setString(1, v_id ); //为绑定变量赋值stmt.executeQuery();在Java中,结合使用setXXX 系列方法,可以为不同数据类型的绑定变量进行赋值,从而大大优化了SQL 语句的性能。4、java中应用绑定变量的例子PreparedStatement stmt = conn.prepareStatement('select a from b where c = ? ');stmt.setLong(1,123);stmt.executeQuery()……结论:绑定变量主要适用在Oltp,运行时间很短的系统。如客服系统,时时地进行insert方面的系统。数据仓库系统不适用,和数据库仓库系统的一条sql运行时间相比,硬分析的代价显然是微不足道的,通过硬分析去选择正确的执行计划才是关键。

热心网友 时间:2022-04-13 17:26

你可以选择使用框架Hibernate这个框架
mysql是datetime类型,java是String类型,jsp页面上显示多了个“.0...

datetime类型的数据在数据库存储的时候是精确到毫秒的,因为你在存取的时候只精确到额秒,所以数据库默认的给添加了一个.0。所以你在后台取出时是带.0的。如果你要在页面上也看到精确到分的,那你在后台截取字符串然后在传到前台就好了

Java程序为什么需要数据库连接池麻烦告诉我

socket文件描述符不释放,还是上面的原因,socket资源不释放,操作系统不能分配新的资源[编辑]建立连接的资源开销 java的数据库连接相对来说是重量级的,构建一个连接的系统开销很大,不停的关闭、创建数据库连接对应用系统来说开销太大[编辑]连接池的应用 连接池是存储、管理数据库连接的容器,应用程序把...

android软件开发android软件开发教程第二版电子版

1)使用xml文件布局 使用xml首先对于界面进行布局,然后在Activity里面进行引用是最常见的应用软件开发技术,这种方式使用的最大,需要学习的内容也最多。学习时需要熟悉: a)五种Layout布局 深刻理解五种布局组织控件的方式是一个基本的基础,这样你才可以在实际的界面中灵活的使用每种布局结构,构造出需要的界面。 b)常用...

我国的央企有哪些?麻烦详细回答我,谢谢

3 import javasqlConnection; 4 import javasqlDriverManager; 5 import javasqlPreparedStatement; 6 import javasqlResultSet; 7 import javasqlSQLException; 8 9 10 public class TestCon1{ 11 public static void main(String[] args) 12 { 13 Connection con = null; 14 String sql; 15 PreparedStatement p...

preparestatement java statement java的statement Java里面statement java中substring用法 java中resultset jdbc中statement java servlet statement
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
松下洗衣机出现E2怎么处理? 大阳h8电动车如何开4挡 中国邮政代扣金额1000元是什么意思呢? 立马电动车隐藏的4挡怎么调出来 非深户临时身份证办理 梦幻西游网易版官方如何下载 离温州东庄最近的招商银行在那里 九牧地漏和潜水艇地漏哪个更好九牧地漏 潜水艇下水管和九牧提篮尺寸一样吗 潜水艇水槽下水管好用还是九牧好用 jdbc 中prepareStatement对sql中的占位符赋值问题 关于prepareStatement的问题 statement和preparedsteament的区别 prepareStatement为什么会空指针? java中对数据库操作时,prepareStatement的Statement区别是什么?_百度... preparedstatement用法是什么? 为什么PrepareStatement可以防止sql注入 prepareCall和prepareStatement有什么区别 preparStatement和普通statement的区别? java中对数据库的操作Statement和PrepareStatement这两个方法有什么不... Statement与PrepareStatement区别 Preparestatement的意义,为什么要用它啊? Statement和PrepareStatement有什么区别? 红烧鸡翅中的制作方法步骤 原味红烧鸡翅中怎么做 红烧鸡翅怎样做更好吃 红烧鸡翅怎么做的? 红烧鸡翅应该怎么做法? 怎么能做好红烧鸡翅? 红烧鸡翅怎么做? 浅谈JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣_百度... 提问prepareStatement怎么转成Mysql的语句? con.prepareStatement()执行之后如何清除sql 在PS里怎样把多张动图放在同一张里 就是一张图上有几张GIF 怎样用PHOTOSHOP将多张GIF格式的动态图片合成一张? 在ps中如何把两张gif图合并? 怎么用PS把两张GIF融在一起 怎么用PS把两个GIF图像合并 用PS如何合并两个gif动画 如何用ps合并多个gif 怎么把两张以上的GIF左右拼接在一起,不是融在一起。用PS或者其他。 我想用Photoshop和ImageReady把两张GIF动画合在一起,具体应该怎么做呢?? 屏幕使用时间设定什么意思 建设手机银行自己给自己转账怎么转 在微信上怎样给自己的微信上转帐呢 怎样给自己转运 茶有几种类型? 茶到底分几种?除了红茶、绿茶还有什么? 美的燃气灶打不着火了,不是电池没电的原因,怎么办? 茶分为几大类型?