首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >allowMultiQueries到底是做什么的?

allowMultiQueries到底是做什么的?
EN

Stack Overflow用户
提问于 2016-06-21 22:08:25
回答 2查看 4.3K关注 0票数 8

allowMultiQueries=true添加到JDBC使MySQL接受语句具有多个查询。

但这到底是做什么的呢?这有什么好处吗?

也许它能减少往返旅行造成的延误?有点像

代码语言:javascript
复制
LOCK
UPDATE ...
UNLOCK

如果在一个语句中这样做,锁的时间就会更短。

如果有的话,我什么时候会想把查询合并到一个语句中,而不是单独的语句中呢?

EN

回答 2

Stack Overflow用户

发布于 2016-06-22 14:48:19

为了运行您自己创建的安全脚本,否则需要逐行运行。例如,mysqldump中的一个脚本,或者您本来可以安全和信任地运行的脚本。当我问“你为什么要这么做”时,有人向我指出了这一点。他回应说,他自己储存的脚本,每个脚本都没有用户输入来进行愚蠢和sql注入的潜力。这些例程的大小受到封包的限制,当然,策略是将文件读入缓冲区,并将其用于多个查询。

用于协同运行几个语句,其中一个在调用的短暂性上依赖另一个语句。暂时性的意思是,如果你发出了一个后续的呼叫,而不是通过多个,必要的信息不再为它的一部分可用。一个常见的例子,无论明智与否,都是SQL_CALC_FOUND_ROWSFOUND_ROWS()的结合体,它们在Percona文章一排排?中得到了广泛的揭露。在这种情况下,有一个论点是,不仅返回结果集而且有可用的单个调用--此后不久将捕获的计数--是实现更精确分页例程的更明智的途径。这假设单独调用count(*)和另一个调用数据可能会在多用户并发系统中产生差异,就像我们所有的系统一样。因此,上面提到的语句解决了准确性问题,而不是Percona文章所涉及的性能问题。另一个用例是在查询中启动和使用用户定义变量。但是,其中许多可以折叠到查询中并使用cross join进行初始化。

票数 2
EN

Stack Overflow用户

发布于 2016-06-22 03:21:56

如果有的话,我什么时候会想把查询合并到一个语句中,而不是单独的语句中呢?

这个特性有两个很好的用例:

  • 如果您懒惰并且喜欢盲目地运行查询而不检查是否成功或行计数或auto_increment值分配,或者
  • 如果您喜欢增加SQL注入漏洞的几率,username ='' AND 0 = 1;←就在这里。在这种模式下,注入分号之后的任何内容都是错误的,这是应该的。在这种模式下,"oops“的整个世界都可以打开。

我的意思是..。你是对的。别用它。

是的,它减少了往返时间对数据库、流水线查询的影响.如果有一个远距离的数据库.但以增加风险为代价,这是不值得的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37955397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档