为什么mysql慢 在空闲时期 也很慢

我使用cursor创建了一个mysql慢过程但它運行太慢...它在40到60之间的秒。..

 


这是慢的因为你是循环遍历结果集,逐行并为每个返回的行执行单独的插入语句。这就是为什么它会慢
讓我们简要总结你在做什么。首先您正在运行查询:
(显然,返回这些行的顺序并不重要)
然后对于从该查询返回的每一行,您要向叧一个表中插入一行
第一列的值来自查询返回的值。
第二列的值正在分配一个作为参数传递给过程的值
第三列的值来自一个计数器,從1开始每行增加1.
mysql慢被优化执行操作这样。但是它没有优化使用存储过程循环通过一个游标行。
如果你想获得一些合理的性能你需要SIGNIFICANTLY REDUCE您运行的各个INSERT语句的数量,而不是考虑在集合而不是单独的行中处理数据一种方法是将行批量化为??扩展插入语句,可以一次插入多個行 (您可以在一个语句中插入的行数实际上受到max_allowed_pa??cket的限制。)
这种方法会显着提高性能但不会避免游标的开销,将每行取入过程變量
这样的东西(在你的过程的主体中)可能执行得更好,因为它从select中获取结果集并插入所有行
 
ping和route后发现网络通信都是正常的洏且在mysql慢机器上进行本地连接发现是很快的,所以网络问题基本上被排除了以前也遇到过一次这样的问题,可后来就不知怎么突然好了这次又遭遇这样的问题,所以想看看是不是mysql慢的配置问题在查询mysql慢相关文档和网络搜索后,发现了一个配置似乎可以解决这样的问题就是在mysql慢的配置文件中增加如下配置参数:

我要回帖

更多关于 mysql慢 的文章

 

随机推荐