数据库
神的力量
无无
展开
-
PreparedStatement重新认知(2)——防止SQL注入
回顾上篇,我们对PreparedStatement在MySQL下的工作机制进行了探究,了解到它在一般情况下并不比Statement更快(具体分析可参看: PreparedStatement重新认知(1)——它真的预编译吗),但我们还是建议使用它的原因是,它有一个非常重要的特性是Statement所不具备的:防止SQL注入正文引用wikipedia对SQL注入的定义:SQL inject...原创 2020-02-16 22:31:04 · 494 阅读 · 5 评论 -
PreparedStatement重新认知(1)——它真的预编译吗
起因最近在阅读数据库连接池相关的书籍,书中有一小节提到了Statement与PreparedStatement的区别,并指出使用PreparedStatement会对SQL进行预编译,并将预编译的SQL存储下来,下次直接使用,提高效率。与之相对的是Statement,它需要频繁进行编译,从这个角度而言,PreparedStatement会比Statement更快,但事实真的是这样的吗?书中并没有...原创 2020-02-06 10:31:23 · 1651 阅读 · 0 评论 -
MySQL死锁case分析
死锁发现2018-01-18 14:10:03 线上环境批量更新库存的地方出现了死锁2018-01-25 16:50:03 线上环境批量更新库存的地方出现了死锁org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [UPDATE goods_inventor原创 2018-02-07 22:02:17 · 2784 阅读 · 0 评论 -
MySQL之rewriteBatchedStatements
网上很多文章,都说MySQL驱动并没有实现”真正的”batchUpdate,执行的时候还是一条一条按顺序将SQL发送到MySQL服务器,其实这是错误的。先贴一段源码(基于MySQL 5.1.40驱动),执行batchUpdate的时候最终执行如下方法:executeBatchInternalprotected long[] executeBatchInternal() throws S...原创 2018-03-14 23:53:50 · 6826 阅读 · 10 评论