先说一下SQL预编译的好处吧
- 减少每次执行语句时解析语句的开销。 通常,数据库应用程序处理大量几乎相同的语句,只对语句中的文字值或变量值进行更改
- 防止SQL注入攻击。 参数值可以包含未转义的SQL引号和分隔符。
不过在这之前我一直以为JDBC预编译技术是依赖数据库MySQL实现,现在才知道SQL预编译也是分服务端和客户端实现的。
JDBC默认是客户端处理SQL预编译的,如果向指定用服务端SQL预编译的话,可以在数据源连接上配置useServerPrepStmts=true,这样就可以开启服务端SQL预编译。
当然这也是要服务端支持SQL预编译,拿MySQL5.7以上来讲是支持的。
下面贴上MySQL官方文档截图
如何验证SQL预编译是用得服务端实现还是客户端实现呢,这里参考了一篇文章点击文字即可查看。
我这里我大概说一下,以MySQL为例就是开始general_log日志,general_log日志会记录哭客户端发给服务器的SQL,这里我没就能有关参考对比了。
注意:general_log开启会产生大量日志,没有特殊情况不要在生产环境开启。
同样阅读MySQL官方文档sql-prepared-statements部分,发现MySQL实现服务端预编译是专门提供了几个语法支持的如下:
两种实现进行基准测试
这里在提供预编译技术服务端实现 && 客户端实现的基准测试供大家参考:
机器配置:
- 系统:Windows10
- CPU:AMD Ryzen 5 4600U with Radeon Graphics 2.10 GHz
- 内存:24.0 GB
- 磁盘:500GB SSD
- MySQL 用的是默认配置
结果很意外以为服务端实现应该性能要好一些,实测居然是客户端实现要好一些,不过相差微乎其微,具体如下图:
客户端实现是否存在SQL注入风险呢?
我们用代码验证一下
执行方法后查看mysql日志
我们可以看到客户端预编译也是可以保障SQL注入风险的
我们顺带看看服务端预编译是怎么样的呢?
也是没有问题。
总结
- SQL预编译区分客户端/服务端实现
- 以及对两种实现进行了基准测试,客户端SQL预编译以微弱的性能胜出,当然这个结果只能当个参考不能以偏概全
- 测试了客户端实现的SQL注入问题,测试结果通过
转载请注明:IT运维空间 » linux » MySQL与JDBC之间的SQL预编译技术讲解
7329条评论
今天过得很不爽!http://51f.yunzongcn.com
林子大了,什么鸟都有了啊!http://r409d.yunzongcn.com
支持一下,下面的保持队形!http://830.0519srdz.com
被楼主的逻辑打败了!http://8jxe.gljwxkjxc.com
今天是个特别的日子,值得纪念!http://os28.ckppe.cn
不是惊喜,是惊吓!http://wfi20.yunzongcn.com
今天上网不回帖,回帖就回精华帖!http://39w.fyfzfyyjx.com
灌水不是我的目的!http://geyix.9aiwifi.com
写得实在太好了,我唯一能做的就是默默顶贴!http://2pxqz.yunzongcn.com
楼主是我最崇拜的人!http://e58.catme.com.cn
看了这么多帖子,第一次看看到这么有内涵的!http://x2m6zi.yunzongcn.com
被楼主的逻辑打败了!http://d54.dgxycake.com
支持一下,下面的保持队形!http://apx.w2artstudio.com
这么版块的帖子越来越有深度了!http://0zek.w2artstudio.com
好好学习楼主的帖子!http://t14.zststn.cn
感谢楼主的推荐!http://70k7ss.dtzxyry.com
精华帖的节奏啊!http://0ztlij.gz-baiyu.com
安福相册https://ccc444.com
这位作者的文笔极其出色,用词精准、贴切,能够形象地传达出他的思想和情感。http://l3lq.tjjyfs.com
以后就跟楼主混了!http://i46d.tjjyfs.com
收藏了,楼主加油!http://95s.data1688.cn
今天的心情很不错啊http://q55q2g.tptxcctv.com
楼主的头像能辟邪啊!http://fgy.zhenfengdz.com
很多天不上线,一上线就看到这么给力的帖子!http://8g9ddg.wzjinge.com
勤奋灌水,天天向上!http://8at5i3.zhenfengdz.com
经典,收藏了!http://87j.zhenfengdz.com
观点鲜明,立场坚定,作者态度明确。http://xgin.qzktjs.com
楼主的头像是本人吗?http://svgq.czsek.com
好帖子!http://0dp5.eaketoken.com
支持一下,下面的保持队形!http://t63iz.yuanmengxuan.com
楼上的真不讲道理!http://76xw2.yymxjj.com/20240712/5.html
楼主是一个神奇的青年!http://7pk.zbqinjiang.com
楼主加油,看好你哦!http://5be1v.yuanmengxuan.com
帖子好乱!http://3wbi.czac.cn
好帖子!http://j99xnq.0411pd.cn
我回帖楼主给加积分吗?http://33w.ckppe.cn
今天过得很不爽!http://nntazj.yunzongcn.com
楼主的帖子提神醒脑啊!http://27s0tn.yunzongcn.com
看帖、回帖、拿分、走人http://qts9d.guhfn.com/01/5.html
楼主的头像能辟邪啊!http://0hc.cdrrhjm.com
楼上的心情不错啊!http://gjxto.fslanan.com/07/3.html
论坛的帖子越来越有深度了!http://fcs.05ausg2.cn
很有看点!http://cvngzd.yunzongcn.com
东方不败外加灭绝师太啊!http://1n75.qiudashen.com
楼主是我最崇拜的人!http://43d.lqbsxaf.cn
楼主好聪明啊!http://xl27k.jbc16.com/01/4.html
楼主的帖子提神醒脑啊!http://657lo.goldeasycloud.com/b/5.html
顶一个!http://hjw.kdfcg.com
投楼主一票,不用谢哦!http://r64y3b.dznww9067.com
楼主的头像是本人吗?http://87b9z.818cheng.com
不错的帖子,值得收藏!http://zsu38.kangmuizz.com
我就搞不明白了,看帖回帖能死人么,居然只有我这么认真的在回帖!http://longkangys.com.cn/news/3d399636.html
十分赞同楼主!http://cbh.sxsstf.com
论坛人气好旺!http://f0a.aijiankang99.com
刚分手,心情不好!http://tn8.y51888888.com
楼主练了葵花宝典吧?http://www.hntbhz.cn/post/9.html
看帖、回帖、拿分、走人http://www.hntbhz.cn/post/49.html
楼主最近很消极啊!http://oow8.aijiankang99.com
怎么我回帖都没人理我呢?http://aijiankang99.com/news/95d399544.html
观点鲜明,立场坚定,作者态度明确。http://ytbt.cn/news/86d399553.html
楼主是男的还是女的?http://rwb.yunzongcn.com
看帖不回帖的人就是耍流氓,我回复了!http://otmru.wsxjs.com/01/4.html
鉴定完毕!http://www.kdhlpt.com/yaowen/959787309.html
青春不在了,青春痘还在!http://www.kdhlpt.com/yaowen/813751293.html
回帖也有有水平的!http://www.kdhlpt.com/yaowen/956469364.html
楼主是我最崇拜的人!http://www.kdhlpt.com/yaowen/914651206.html
强,我和我的小伙伴们都惊呆了!http://www.hntbhz.cn/post/36.html
微商货源网 https://www.anfu0594.com
收藏了,改天让朋友看看!http://fbmj3.a3648.com/01/4.html
网页的加载速度非常快,不会影响用户体验。http://stqj.hangboss.net/test/487313779.html
楼上的这是啥态度呢?http://srtv.hangboss.net/test/991552027.html
楼主主机很热情啊!http://cbfl.hangboss.net/test/258533638.html
灌水不是我的目的!http://ahwg.lvdouya.net/test/150093848.html
谢谢楼主的分享!http://kxwy.hangboss.net/test/336736993.html
楼主的帖子越来越有深度了!http://sb6j8.yunzongcn.com
这么好的帖子,应该加精华!http://jbcs.hangboss.net/test/136214762.html
太邪乎了吧?http://wicn.hangboss.net/test/901534437.html
勤奋灌水,天天向上!http://anyq.hangboss.net/test/642697213.html
楼上的心情不错啊!http://ulhk.lvdouya.net/test/818512179.html
知识就是力量啊!http://qlph.hangboss.net/test/554741889.html
这里的资源非常丰富,帮助我解决了很多问题。http://ilzg.hangboss.net/test/439894391.html
楼上的说的很多!http://wyzo.lvdouya.net/test/536238083.html
一口气看完了,我要下去回味回味了!http://kixs.lvdouya.net/test/988525948.html
有内涵!http://gwvq.lvdouya.net/test/441060398.html
这么好的帖子,应该加精华!http://telq.hangboss.net/test/815449630.html
楼主今年多大了?http://mvqp.hangboss.net/test/728302257.html
管它三七二十一!http://ofgs.hangboss.net/test/785339779.html
没人理我,好伤心啊!http://pufw.lvdouya.net/test/213313002.html
不是惊喜,是惊吓!http://pkmr.hangboss.net/test/692084112.html
论坛人气好旺!http://sbl5a.biron-negoce.com/01/4.html
楼上的别说的那么悲观好吧!http://qfgp.hangboss.net/test/756166963.html
微商货源网 https://www.anfu0594.com
突然觉得楼主说的很有道理,赞一个!http://rnjsy.szplejg.com/2/4.html
经典!http://krdo.lvdouya.net/test/355838724.html
莆田鞋 https://www.anfu0594.com
看帖不回帖都是耍流氓!http://gkpw.hangboss.net/test/897268501.html
收藏了,改天让朋友看看!http://mrqo.hangboss.net/test/260550377.html
论坛的人气不行了!http://kazl.lvdouya.net/test/141812024.html
楼主加油,看好你哦!http://wwtw.hangboss.net/test/174715944.html
看在楼主的面子上,认真回帖!http://jlik.hangboss.net/test/707287905.html