mysql – 多个查询VS存储过程

前端之家收集整理的这篇文章主要介绍了mysql – 多个查询VS存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个申请
每小时大约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服务器上的语句来处理它们而无需进一步往返.

原文链接:https://www.f2er.com/mysql/433161.html

猜你在找的MySQL相关文章