频繁查询mysql数据库导致崩溃

使用了ibatis的级联查询,有三张表 A B C 表 A-B是一对多 B-C也是一对多,
查询A的数据的时候就把B中的数据关联查询出来,查询B的数据的时候就把C中的数据查询出来,一次性将数据全部查询出来就回去占用很多的CPU,数据量大的时候可能会导致服务器挂掉,所以我就把A的数据一条一条的查询出来,然后关联查询B和C的数据,就会有所改善,但是随之而来又有问题,就会频繁的访问数据库,导致我的MYSQL所在的服务器当掉…… 哎 各位大侠有没有好的点子? 比如:连接池 我用的 ibatis struts2 spring3

MySQL 在崩溃恢复时,会遍历打开所有 ibd 文件的 header page 验证数据字典的准确性,如果 MySQL 中包含了大量表,这个校验过程就会比较耗时。 MySQL 下崩溃恢复确实和表数量有关,表总数越大,崩溃恢复时间越长。另外磁盘 IOPS 也会影响崩溃恢复时间,像这里开发库的 HDD IOPS 较低,因此面对大量的表空间,校验速度就非常缓慢。另外一个发现,MySQL 8 下正常启用时居然也会进行表空间校验,而故障恢复时则会额外再进行一次表空间校验,等于校验了 2 遍。不过 MySQL 8.0 里多了一个特性,即表数量超过 5W 时,会启用多线程扫描,加快表空间校验过程。
如何跳过校验MySQL 5.7 下有方法可以跳过崩溃恢复时的表空间校验过程嘛?查阅了资料,方法主要有两种:
1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那么 validate = false,即可以跳过表空间校验。实际测试的时候设置 innodb_force_recovery =1,也就是强制恢复跳过坏页,就可以跳过校验,然后重启就是正常启动了。通过这种临时方式可以避免崩溃恢复后非常耗时的表空间校验过程,快速启动 MySQL,个人目前暂时未发现有什么隐患。2. 使用共享表空间替代独立表空间这样就不需要打开 N 个 ibd 文件了,只需要打开一个 ibdata 文件即可,大大节省了校验时间。自从听了姜老师讲过使用共享表空间替代独立表空间解决 drop 大表时性能抖动的原理后,感觉共享表空间在很多业务环境下,反而更有优势。
临时冒出另外一种解决想法,即用 GDB 调试崩溃恢复,通过临时修改 validate 变量值让 MySQL 跳过表空间验证过程,然后让 MySQL 正常关闭,重新启动就可以正常启动了。但是实际测试发现,如果以 debug 模式运行,确实可以临时修改 validate 变量,跳过表空间验证过程,但是 debug 模式下代码运行效率大打折扣,反而耗时更长。而以非 debug 模式运行,则无法修改 validate 变量,想法破灭。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-22
你换一台好的服务器就行了,最好是能挂中型ERP系统数据库那种。
第2个回答  2012-08-30
用框架,就受限于框架,拿到源码改一下吧,加入 memcache 加一层缓存。没有memcache 使用文件缓存也行,效果肯定有提升。
做的项目多了,反而不在喜欢用框架。

频繁查询mysql数据库导致崩溃
1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那么 validate = false,即可以跳过表空间校验。实际测试的时候设置 innodb_force_recovery =1,也就是强制恢复跳过坏页,就可以跳过校验,然后重启就是正常启动了。通过这种临时方式可以避免崩溃恢复后非常耗时的表空间校验过程,快速...

MySQL异常频繁数据操作受阻mysql一直出错
2.连接超时 当使用JDBC连接到MySQL数据库时,如果连接响应时间过长,就会触发连接超时。解决方案一般包括以下几个方面:a.设置合理的连接超时时间:可以通过修改MySQL配置文件来设置合理的连接超时时间。b.优化网络环境:通过升级硬件设备、合理规划网络拓扑等方式,提高网络传输速度。c.使用连接池:连接池可以...

无限进行的MySQL查询如何解决mysql一直查询
如果查询语句需要查询大表中的数据,一次性查询可能会导致查询缓慢,甚至无法返回结果。对于这种情况,可以对查询结果进行分页查询。可以使用LIMIT命令实现对查询结果进行分页,并使用索引优化查询。总结 无限进行的MySQL查询问题对于数据库的性能是有很大影响的。因此,我们需要及时分析查询语句、优化查询性能、检...

MySql 查询数据时间过长,导致程序报错 怎么解决
请检查你程序文件中,调用Mysql的模块,以C#为例,会使用ado.NET来操作Mysql数据库,在配置文件中,会有<TimeOut>属性,默认是60000ms 即一分钟.查询时,程序请求Sql =>sql处理 =>sql返回结果,如果处理过程超过60000ms 就会报错,将这个属性该为更大的数值即可解决,如果是其他语言开发的程序,应该也...

MySQL崩溃不响应尝试这些方法解决问题mysql不响应
方法五:升级MySQL版本 如果以上方法都无法解决问题,那么有可能是MySQL本身存在一些严重的bug导致崩溃。这种情况下,最好的办法是升级到最新版本的MySQL,以修复可能存在的问题。当MySQL出现崩溃不响应的情况时,首先尝试重启MySQL服务,并查看MySQL错误日志,使用MySQL的诊断工具定位问题,优化MySQL配置文件,...

如何解决MySQL卡死问题mysql三四步不动了
在高负载情况下,MySQL的数据表可能会变得非常庞大,从而导致查询和更新操作变慢。为了保证MySQL的性能,我们需要定期优化数据表。常见的数据表优化方法包括删除无用数据,重建索引和分库分表。通过这些方法,我们可以减少数据表的体积,加速查询操作并提高MySQL的稳定性。结语 MySQL是一个强大的数据库管理系统...

MySQL看来不稳定频繁的闪退危机ankmysql闪退
如果系统正在处理非常复杂的查询并尝试在同时处理大量请求的情况下从MySQL数据库中读取大量数据,这将导致MySQL在关键时刻闪退。这是因为MySQL的内存分配可能会出现问题。如果一个查询申请了太多的内存,那么MySQL就会被迫关闭。(3) 内存不足 当MySQL运行时发现没有足够的内存来处理查询时,它可能会出现频繁的...

高效处理数据MySQL应对一亿条数据瓶颈的解决方案mysql一亿条_百度知...
2. 正确的选择索引。索引是数据库非常重要的优化手段之一。正确的索引选择能够让查询数据的速度大幅提高。但是,如果索引被选择不当,也会降低查询效率甚至导致数据库崩溃。因此,在选择索引时,需要权衡其中的利弊,同时,基于数据的结构和查询规则可以测试一下不同的索引来确定哪个索引对查询更有利。3. ...

MySQL导入数据时崩溃这可能是产生的原因及解决方法mysql一导入就...
另一个导致MySQL导入数据时崩溃的原因是主键约束或唯一约束。如果导入数据时,新数据与表中现有数据产生冲突,则可能会导致MySQL崩溃。应该在导入数据之前检查并删除现有的单一或主键约束。或者,在导入数据时关闭单一或主键约束,并在导入结束后重新启用。代码示例:关闭单一或主键约束:ALTER TABLE table_name...

MySQL自动关闭问题的解决方法mysql一直自动关闭
1.2 非法操作 非法操作也是导致 MySQL 数据库自动关闭的主要原因之一。例如,查询速度过快、执行了非常复杂的查询语句、磁盘可用空间不足等。1.3 系统故障 系统故障也可能是导致 MySQL 自动关闭的原因之一。例如,操作系统崩溃、磁盘损坏、停电等。2. 解决方法 2.1 配置参数设置 在 My.cnf 配置文件中...

相似回答