我有一个申请
每小时大约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是更好的选择.请让我知道您的意见.
基准测试是一种选择.将不得不搜索任何有助于此的工具.
任何人都可以建议已经有这种问题的基准.
我的建议是将它作为存储过程.您可能需要几个程序.
>一个程序,它结合了您按操作执行的10个语句
进入1个电话
>可以使用CURSOR迭代参数表以进入过程1的过程
你的过程将是
>使用参数填充表,该参数将通过过程2输入到过程1中
>执行程序2
这将产生性能优势,因为不需要连接到MysqL服务器20000 * 10次.虽然每个请求的开销可能很小,但毫秒加起来.即使每次请求保存为0.1ms,仍然可以节省20秒.
另一种选择可能是通过调整10个查询从上述数据库表中提取数据来修改您的请求,以便一次执行所有20k数据操作(如果可行).所有这一切的关键是将参数加载到单个批处理插入中,然后在过程中使用MysqL服务器上的语句来处理它们而无需进一步往返.