12
返回列表 发新帖
楼主: HuiYiSky

mysq有没有绑定变量的概念

[复制链接]
论坛徽章:
6
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:鼠
日期:2009-01-07 15:48:55生肖徽章2007版:兔
日期:2009-03-10 21:33:47BLOG每日发帖之星
日期:2009-12-24 01:01:082010新春纪念徽章
日期:2010-03-01 11:08:29
11#
发表于 2009-7-30 11:24 | 只看该作者
原帖由 〇〇 于 2009-7-28 15:56 发表
mysql对insert values扩展了,可以批量插入

怎么个批量插入?

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
12#
发表于 2009-8-2 22:01 | 只看该作者
原帖由 HuiYiSky 于 2009-7-22 11:58 发表
我在做多个(50)进程大批量的insert values这种操作的时候发现性能不是很好,每个进程每秒大概在一百左右,在ORACLE中也差不多,但是在ORACLE改成绑定变量以后能提高三四倍,普通的PC机,不知道在MYSQL中怎么能提高insert values这种操作的速度 。


我在服务器端测,不绑定变量每秒600左右,绑定变量,打开游标每秒插入5300条左右,54个字段,500字节左右的。

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
13#
发表于 2009-8-2 22:04 | 只看该作者
原帖由 yueliangdao0608 于 2009-7-27 20:12 发表
不知道你的INSERT 语句是什么形势的?

你能不能说说ORACLE的绑定变量是怎么回事?

stmt="insert into table (name1,,,,,name54) values (:1,:2,:3,,,,,,,,,,:54)";

cursor=prepare(handle,stmt);

OCI_BIND_by_pos(cursor,1,type,len,value,,,,); // 1..54

execute(cursor,1);
execute(cursor,1);
......
execute(cursor,1);;

close(cursor);

prepare 只需1次。
bind也只需1次。

execute每条记录一次,完全避免了语句的解释和处理。

[ 本帖最后由 yulihua49 于 2009-8-2 22:16 编辑 ]

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
14#
发表于 2009-8-3 13:46 | 只看该作者
查了一下mysql完全手册,其中perl接口出现了prepare语句和绑定变量,C接口未见。
也没有发现游标的使用,可我以前记得有的,好像是专门一套函数。
看来mysql完全手册也并不完全。

mysql没有提语句和执行计划的cache和软解析的概念,提及了结果集的cache。
指出,相同的SQL语句产生相同的结果集。这是十分危险的概念,数据库时时在变化,它那个结论是站不住脚的。


由此看来,一般情况下,MYSQL的性能是无法与ORACLE比的。

看了那篇文章的例子的执行时间,都要比我们平台上ORACLE慢一个-二个数量级。
它大约都是数十毫秒,我们类似的语句都是几个,0.几个毫秒。

[ 本帖最后由 yulihua49 于 2009-8-3 13:59 编辑 ]

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
15#
发表于 2009-8-3 14:01 | 只看该作者
原帖由 kiddwyl 于 2009-7-30 11:24 发表

怎么个批量插入?

绑定一个数组,如1000个-10000个记录一起插入,可以大大加快进度。
ORACLE还可以:
INSERT INTO table (name1,,,,,,)
VALUES(val1,,,,,,,)
VALUES(val1,,,,,,,,)
......
VALUES(val1,,,,,,,,);
一次插入多个记录。

[ 本帖最后由 yulihua49 于 2009-8-3 14:03 编辑 ]

使用道具 举报

回复
论坛徽章:
27
数据库板块每日发贴之星
日期:2005-12-22 01:01:31ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:09版主2段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
16#
发表于 2009-8-30 21:32 | 只看该作者
MYSQL可以:
insert into tables valuse (...),(,,,),(,,,),(,,,),(,,,),(,,,),(,,,),(,,,),(,,,) ;

使用道具 举报

回复
论坛徽章:
19
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:06:13BLOG每日发帖之星
日期:2010-03-28 01:01:02ITPUB9周年纪念徽章
日期:2010-10-08 09:31:222012新春纪念徽章
日期:2012-01-04 11:51:22
17#
发表于 2009-9-1 19:26 | 只看该作者
这里所谓的bind variable和oracle里面的意义已经不同了吧,oracle的bind var主要是为了解决sql过度解析所导致的shared pool问题,mysql没有sql共享。
前面提到的大部分都是一个普通变量而已,目的只是为了传值给sql

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表