仔细阅读过官方手册的同学,一定留意到了对于提升大事务回滚效率,官方提供了两种方法:一是增加 innodb_buffer_pool_size 参数大小,二是合理利用 innodb_force_recovery=3 参数,跳过事务回滚过程。第一种方式比较温和,innodb_buffer_pool_size 参数是可以动态调整的,可行性也较高。第二种方式相较之下较暴力,但效果较好。
两种方式各有自己的优点,第一种方式对线上业务系统影响较小,不会中断在线业务。第二种方式效果更显著,会短暂影响业务连续,回滚所有没有提交的事务。
查询大量数据的,如果出现如下情况,就说明最大内存已经耗尽:
可临时修改脚本使用内存大小进行处理:
注意:
当使用libmysqlclient作为库时,PHP的内存限制将不会计算用于结果集的内存,除非将数据读入PHP变量。与mysqlnd的内存占用将包括完整的结果集。
由于缓冲查询是默认的,下面的示例将演示如何使用每个API执行无缓冲的查询。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)