加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql – 多个查询VS存储过程

发布时间:2020-12-11 23:45:57 所属栏目:MySql教程 来源:网络整理
导读:我有一个申请 每小时大约20000个数据操作 DATA-OPERATION总共有30个参数(对于所有10个查询).有些是文本,有些是数字.一些文本参数长达10000个字符. 每个数据操作都遵循以下内容: 单个DATA-OPERATION,在数据库中插入/更新多个表(大约10个). 对于每个数据操作,

我有一个申请
每小时大约20000个数据操作
DATA-OPERATION总共有30个参数(对于所有10个查询).有些是文本,有些是数字.一些文本参数长达10000个字符.

每个数据操作都遵循以下内容:

>单个DATA-OPERATION,在数据库中插入/更新多个表(大约10个).
>对于每个数据操作,我采取一个连接,
>然后我在DATA-OPERATION中为每个查询使用新的prepared-statement.
>每次执行查询时都会关闭Prepared语句.
>连接将重复用于所有10个预准备语句.
> DATA-OPERATION完成后,连接关闭.

现在执行此数据操作,

> 10个查询,10个准备语句(创建,执行,关闭),1个n / w调用.
> 1个连接(打开,关闭).

我个人认为,如果我从10个以上的查询中创建一个存储过程,那将是更好的选择.

在SP的情况下,DATA-OPERATION将具有:

> 1个连接,1个可调用语句,1个/ w命中.

我建议这样,但我被告知

>这可能比SQL查询更耗时.
>它会在DB服务器上增加额外负载.

我仍然认为SP是更好的选择.请让我知道您的意见.

基准测试是一种选择.将不得不搜索任何有助于此的工具.
任何人都可以建议已经有这种问题的基准. 最佳答案 任何建议都部分取决于执行查询的脚本所在的位置.如果执行查询的脚本与MySQL实例位于同一服务器上,那么您将看不到那么大的差异,但与1个存储过程相比,执行200k查询仍然会有一个小的开销.

我的建议是将它作为存储过程.您可能需要几个程序.

>一个程序,它结合了您按操作执行的10个语句
进入1个电话
>可以使用CURSOR迭代参数表以进入过程1的过程

你的过程将是

>使用参数填充表,该参数将通过过程2输入到过程1中
>执行程序2

这将产生性能优势,因为不需要连接到MySQL服务器20000 * 10次.虽然每个请求的开销可能很小,但毫秒加起来.即使每次请求保存为0.1ms,仍然可以节省20秒.

另一种选择可能是通过调整10个查询从上述数据库表中提取数据来修改您的请求,以便一次执行所有20k数据操作(如果可行).所有这一切的关键是将参数加载到单个批处理插入中,然后在过程中使用MySQL服务器上的语句来处理它们而无需进一步往返.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读