锁定老帖子 主题:mysql的jdbc驱动分析
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-02
mikewang 写道 kaipingk 写道 PreparedStatement 就是一个接口嘛, 按照接口行事就OK了,就像有的数据库不支持事物一样,那支持事物的rollback commit自然就没有效果了。 文章还是可以,就是太罗嗦了,就看红字就可以了
对你的言论,我不多作评价,但要说2点: 1, 所谓的按章行使,也要把章搞搞清楚, 也就是说, 总得把每个函数的作用搞搞清楚吧? 就拿mysql 而言, 如果是低版本的(< 4.1的), 那么用PreparedStatement 还不如使用Statement来的快。 2, 你有点想当然了,a) 数据库必须支持事务(严格的说,是必须支持本地事务),b)如果不支持xa事务, 而使用事务的话, 那么在征集事务时候(调用enlist函数是) 会发生错误,抛出异常,终止程序, 并非你说的,没有效果! 不要太概念了,概念的东西都是理论的东西,具体实现和概念是有差距的。 数据库必须支持事务吗?完全可以做一个不支持事物的数据库啊(MYSQL MyISAM引擎)! 而且完全可以实现一个不抛异常的api事务操作实现啊(自己实现一个事务接口不给你抛任何异常)! 总得把每个函数的作用搞搞清楚吧---应该是吧没有具体实现搞清楚嘛(我又没反对不该搞清楚)。我的意思就是很多东西就那么回事,没有什么大不了的! |
|
返回顶楼 | |
发表时间:2009-07-02
kaipingk 写道 不要太概念了,概念的东西都是理论的东西,具体实现和概念是有差距的。 数据库必须支持事务吗?完全可以做一个不支持事物的数据库啊(MYSQL MyISAM引擎)! 而且完全可以实现一个不抛异常的api事务操作实现啊(自己实现一个事务接口不给你抛任何异常)! 总得把每个函数的作用搞搞清楚吧---应该是吧没有具体实现搞清楚嘛(我又没反对不该搞清楚)。我的意思就是很多东西就那么回事,没有什么大不了的! 1, 数据库是否必须支持事务, 去查查关于数据库的文献, 有很多,而且都是大部头的。 再去了解一下什么是ACDI,顺便搞清楚数据库和文件系统的区别。 2 MyISAM是支持事务的, 而且支持的就是我说的本地事务。 其实现方式用的是文件锁,(后续的某个版本提供了记录锁的支持), 但是MyISAM的文档上确实说过, 不建议使用事务方式, 同时文档中也说明了理由, 原因是并发太差,而且错误太多。(给你个建议, 我觉得你对MyISAM的了解还是少了些, 最好在去看看文档,补习补习。) 3 你当然可以自己去实现一套api, j2ee 中间有个叫做jca的东西, 如果有兴趣的你可以摆弄一下,搞个不出异常的东西出来,别忘记把 jts 也重新实现一下, 否则还是要抛出异常的! 但是我这里要说的是,我们讨论的jdbc API, 不是你的个人作品。 |
|
返回顶楼 | |
发表时间:2009-07-02
由此,annegu得出结论,在mysql数据库上使用PreparedStatement并不能提高效率(实际测试也表明,PreparedStatement和Statement的效率几乎一样,甚至当使用次数不多的时候,PreparedStatement比Statement还要慢一些)。
这个结论就更...我不想说了...有想说的就替我补充一下 。。。 这个还有待于测试.. |
|
返回顶楼 | |
发表时间:2009-07-02
最后修改:2009-07-02
gembler 写道 你看到的应该是com.mysql.jdbc.PreparedStatement,这是client-side的prepared statement实现,另外一个com.mysql.jdbc.ServerPreparedStatement应该是你没看到的
我看了一下ServerPreparedStatement类的实现,里面确实是实现了动态绑定参数的。我也把主题作了说明,谢谢:) |
|
返回顶楼 | |
发表时间:2009-07-02
最后修改:2009-07-02
annegu 写道 其实,在mysql5上的版本是支持预编译sql功能的
你又... ... 是从4.1开始的 !- - PS: LZ真的是MM么????? |
|
返回顶楼 | |
发表时间:2009-07-02
gembler 写道 annegu 写道 其实,在mysql5上的版本是支持预编译sql功能的
你又... ... 是从4.1开始的 !- - PS: LZ真的是MM么????? 我看的是5的版本,所以我说这个版本上有的,我没说是从这个版本开始的啊。 PS:javaeye说严禁讨论与技术无关的问题。 |
|
返回顶楼 | |
发表时间:2009-07-02
annegu 写道 PS:javaeye说严禁讨论与技术无关的问题。
哪里说? |
|
返回顶楼 | |
发表时间:2009-07-02
gembler 写道 annegu 写道 PS:javaeye说严禁讨论与技术无关的问题。
哪里说? 昨天才做了论坛测试题,请看置顶帖子:JavaEye积分规则,博客和论坛使用规则 四、严禁无聊灌水性帖子 JavaEye的论坛不是用来灌水的,是用来交流技术的,即使是海阔天空版面,也不意味着你可以随意灌水,凡是言之无物的无聊灌水贴,将被删除,并扣除发贴者积分30分。纯灌水贴请到“JavaEye水源”圈子。请记住JavaEye的论坛是一个严肃的技术交流场所,在这里制造垃圾信息将受到惩罚。 版主,我不是灌水,是回答问题,并普及论坛规则! |
|
返回顶楼 | |
发表时间:2009-07-02
annegu 写道 gembler 写道 annegu 写道 PS:javaeye说严禁讨论与技术无关的问题。
哪里说? 昨天才做了论坛测试题,请看置顶帖子:JavaEye积分规则,博客和论坛使用规则 四、严禁无聊灌水性帖子 JavaEye的论坛不是用来灌水的,是用来交流技术的,即使是海阔天空版面,也不意味着你可以随意灌水,凡是言之无物的无聊灌水贴,将被删除,并扣除发贴者积分30分。纯灌水贴请到“JavaEye水源”圈子。请记住JavaEye的论坛是一个严肃的技术交流场所,在这里制造垃圾信息将受到惩罚。 版主,我不是灌水,是回答问题,并普及论坛规则! 这回robbin高兴死了 |
|
返回顶楼 | |
发表时间:2009-07-02
呵呵 大闹咯!
|
|
返回顶楼 | |