首页 > 数据库 > MySQL > 正文

mysql连接与关闭问题

2024-07-24 12:40:04
字体:
来源:转载
供稿:网友
请高手指点,数据库连接打开以后,连续执行几个操作以后再关闭,和执行一次操作就关闭,然后执行第下一次操作有什么区别,哪一个性能更好呢?
例如:
方案一:
mysql.open();
mysql.insert('sql1');
mysql.insert('sql2');

mysql.insert('sqln');
mysql.close();
方案二:
mysql.open();
mysql.insert('sql1');
mysql.close();
mysql.open();
mysql.insert('sql2');
mysql.close();

mysql.open();
mysql.insert('sqln');
mysql.close();
方案一和方案二到底哪一个效率更高,性能更好呢? 请各位高手指教,并给出理由,谢谢。
网友回复:mark帮顶,我自己感觉是第一种效率高一点,呵呵,没有理论基础,等待高手
网友回复:呵呵,其实经常碰到这样的情况,循环操作数据库,但是一直没有找到相关资料,介绍怎样使用更好,只好上来找找高手。


网友回复:肯定是第一个效率高的。
从最简单的来说,连接数据库是要有时间的,多次的连接效率肯定慢。
而且要是是远程数据库的话,你这种不停的要求连接的语句会带宽占用时间也大。


第二种方法应该是防止有的线程占线的,就是连接后有大段不需要连数据库的逻辑执行的程序,但像楼主这样写的连续执行sql的都不用多说了,肯定是第一个好。
第二种是用时间作代价来防止占线的。
网友回复:假如执行时间比较长的话,第一种会不会占用连接时间过长而导致超时呢?还有许多框架的设计不用手动打开连接和关闭连接,那是怎么设计的呢,感觉应该是第二种方案呢
网友回复:正在使用中的mysql连接是不会超时的,我不知道你的“许多框架的设计不用手动打开连接和关闭连接”什么意思我用java,.net,delphi连数据库都是要连接的,所谓的不用手动连接只是某些控件已经帮你连了。

mysql的连接超时是可以自己设置的,我记得是设置timeout的属性,你可以设成不超时。但是在一般情况下不会超时的。那些设计不关闭连接的程序应该是会长时间占用mysql的线程的,对于很多用户访问数据库的程序不适用。
网友回复:第一个高。

第一个相当于一个长连接。
就像憋了好久的尿,一下子全解决了
第二个连接太频繁。
就像一分钟去一趟厕所。
^_^
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表