`
丁林.tb
  • 浏览: 797223 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于MySQL的 compound-statement SQL

阅读更多

背景

       将多个语句发给MySQL,可以减少网络交互次数。对于带事务的情况,可以缩短单线程上事务的生存期。

     将业务逻辑写成存储过程是一种形式,但是考虑到这样等于是将业务逻辑绑定在服务端,不是最佳选择。

有同学提到希望MySQL能够支持类似Oraclecompound-statement SQL ,实际上MySQL5.0就支持啦。

 

C API

       mysql_real_connect 时连接参数增加CLIENT_MULTI_STATEMENTS就可以用分号隔开,将多个SQL语句一起发给Server

   其实在mysql自带的客户端中,连接参数就已经设置了这个位。

   mysql_real_connect(&mysql, host, user, password,

                          database, opt_mysql_port, opt_mysql_unix_port,

                          connect_flag | CLIENT_MULTI_STATEMENTS)

 

MySQL 客户端用法

       但是即使如此,用户在客户端输入用分号区分的多个SQL语句,其实还是在客户端拆分以后按顺序发送的。

       也就是说类似这样的语句 mysql> insert into test123 values(1,'a');insert into test123 values(2,'a'); 实际上是先执行完成第一个insert,返回结果后再发送第二个。

       其原因是mysql客户端在解析用户输入时,会将”;”作为语句终结符。

       重定义语句终结符即可。实际上要实现多语句的语法,我们在创建存储过程时就用过了。

 

delimiter ;;

begin;insert into test123 values(1, 'aaaaa');insert into test123 values(1, 'aaaaa');insert into test123 values(1, 'aaaaa'); commit;;

 

这样第二行是整行发给server端。

 

说明

       在单线程测试上述场景压力下,compound-statement的方式比单线程性能提升约20%,其原因是减少网络交互次数。

       在多线程压力下,性能是否提升则取决于各线程事务间的互斥关系。性能提升的得益点在于单个线程事务生存期缩短。

1
2
分享到:
评论
1 楼 lidayu_up 2013-04-07  
用wireshark抓包可以证明以上观点正确,但性能测试没有测试

相关推荐

    compound-sort-helpers_2.9.2-1.0.0.zip

    【标题】"compound-sort-helpers_2.9.2-1.0.0.zip" 提供的是一个名为 "compound-sort-helpers" 的组件,版本号为2.9.2-1.0.0。这个组件可能是一个软件库或工具,用于帮助实现复杂排序功能。 【描述】"vertxcombo....

    cytoscape.js-compound-drag-and:用于添加和删除子项的复合节点拖放UI

    cytoscape化合物拖放描述用于添加和删除子项的复合节点拖放UI( )依存关系Cytoscape.js ^ 3.4.0使用说明下载库: 通过npm: npm install cytoscape-compound-drag-and-drop , 通过凉亭: bower install cytoscape-...

    compound-eureka:复合测试网的Eureka配置

    cd ~ /compound-eureka # back to this directory yarn link @compound-finance/eureka 这将大大简化在Alpha开发过程中提取更新的过程。 本地部署 要将化合物测试网应用于开发,请在本地启动ganache,然后运行: ...

    The-Compound-Effect-By-darren-Hardy.pdf

    This powerful, practical book, based on years of proven and profi table experience, shows ... The Compound Effect is a treasure chest of ideas for achieving greater success than you ever thought possible

    compound-file-viewer-src.zip_Compound File_OpenMCDF_复合文件查看

    复合文件结构查看工具的代码,内含复合文件格式定义。

    compound-word-splitter:适用于Python的复合单词拆分器

    pip install compound-word-splitter 请注意,默认情况下可用的语言取决于您操作系统的配置,例如: ['en', 'en_CA', 'en_GB', 'en_US'] 如果您想使用其他语言,例如下面的示例中的de_de ,则必须为其安装词典( ...

    NX二次开发UF-DRF-add-compound-weld-symbol 函数介绍

    NX二次开发UF_DRF_add_compound_weld_symbol 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    compound-js:用于以太坊和复合协议JavaScript SDK

    const Compound = require ( '@compound-finance/compound-js' ) ; // in Node.js const cUsdtAddress = Compound . util . getAddress ( Compound . cUSDT ) ; ( async function ( ) { let supplyRatePerBlock = ...

    react-compound-slider:React化合物滑块| 一个小的React滑块,对标记或样式没有意见

    React Compound Slider是一个小的滑块组件,对标记或样式没有意见。 2020年路线图 基本概述: 将滑块源转换为Typescript(完成) 将测试转换为打字稿(完成) 将演示和文档转换为Typescript(完成) 在内部使用...

    A compound-hunting approach to reveal the amidohydrolase-dependent

    一种天然产物挖掘方法在阐明吡咯酰胺类化合物生物合成机理中的应用,郝春霖,虞沂,天然产物生物合成中,发酵液中的一些重要中间体或者结构类似物往往因为含量低、结构不明确等因素而普遍被忽略,这将给目标化合物

    compound-interest-calculator-roman

    在这个名为"compound-interest-calculator-roman"的项目中,我们看到的是由Michael Cole开发的一个以罗马数字显示结果的复利计算器。这个计算器基于HTML技术构建,可能还结合了CSS和JavaScript来实现用户交互和动态...

    react-compound-timer:使用React轻松创建计时器!

    React复合计时器计时器复合组件,用于进行响应和本机响应,以减少构建计时器的痛苦。 它封装了所有计时器逻辑-您只需要考虑渲染!远期计数只需渲染一个简单的计时器,然后从0开始向前计数即可。...

    compound-js-test:测试 CompoundJS

    "compound-js-test" 项目显然是针对 CompoundJS 进行的一系列测试,用于验证其功能和性能。 JavaScript 作为 Web 开发中的主要脚本语言,已经被广泛应用于前端开发。CompoundJS 框架旨在增强 JavaScript 的能力,...

    C BNF grammar

    - compound-statement - expression-list - type-name - abstract-declarator - direct-abstract-declarator - pointer - type-qualifier-list - parameter-declaration - direct-declarator - pointer 3...

    Compound-Simple-Interest-Calculator

    "Compound-Simple-Interest-Calculator" 是一个基于JavaScript的项目,旨在帮助用户计算复合利息和简单利息。在金融领域,利息计算是理解投资收益的重要工具,尤其对于储蓄账户、贷款和投资产品。以下是对这个项目...

    eduweb-react-compound-components-1:用StackBlitz创建:high_voltage:

    本项目"eduweb-react-compound-components-1"显然关注的是如何在React中使用复合组件来提高代码的可重用性和组织性。"high_voltage"可能是一个特定的组件或者项目名称,暗示了这个示例可能涉及电源或能量相关的主题...

    CP-Macrocyclic-host-compound-analysis:用于识别和测量大环主体化合物大小的CellProfiler(版本4.0.3)管道

    标题提到的"CP-Macrocyclic-host-compound-analysis"是基于CellProfiler(版本4.0.3)构建的一个特定分析管道,目的是专门针对大环主体化合物进行分析。这个管道旨在帮助研究人员自动识别并量化大环化合物的大小,...

    shirisha-simple-and-compound-intrest

    在压缩包文件“shirisha-simple-and-compound-intrest-master”中,可能包含了关于这个主题的代码示例、教程或者练习,帮助用户通过编程实现利息计算。这可能是学习金融计算的一个实践项目,用户可以通过分析和运行...

Global site tag (gtag.js) - Google Analytics