记一个mysql造成大量磁盘读写的问题(猜测)

前一天通过mysqldump --single-transatcion 导出数据,由于数据量较大、磁盘速度较慢及网速也比较慢(在另一台服务器操作)整个备份过程消耗了几十个小时。今天终于是完了,文件有100多g。
打开系统,发现问题,数据库响应太慢了,检查发现磁盘io过多且大量读写。
那么就要查出为什么会发生大量读写,查了很长时间,大概找到原因了

因为 --single-transaction 会开始事务,但长时间未提交,所以mysql要记录期间的所有操作,待事务提交之后才可以删除。
该事务提交之后,mysql就会处理这期间的数据,该删的就删。
参考:https://www.cnblogs.com/zhangcaiwang/p/16127618.html

执行 show engine innodb status ;
查找 History list length ,看后面的数字,等什么时候变小了就好了
在这里插入图片描述

以上只是猜测。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用Qt读写MySQL数据库的例子: 首先,需要安装Qt的MySQL驱动程序。您可以从Qt的官方网站下载并安装MySQL驱动程序。 接下来,创建一个新的Qt控制台应用程序项目,并在项目中包含MySQL驱动程序的头文件和库文件。 ``` // 头文件 #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> // 库文件 QT += sql ``` 然后,您需要连接到MySQL数据库并执行一些查询。以下是一个连接到MySQL数据库并查询表格的例子: ``` // 建立数据库连接 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // MySQL服务器地址 db.setDatabaseName("mydatabase"); // 数据库名称 db.setUserName("myusername"); // 用户名 db.setPassword("mypassword"); // 密码 if (!db.open()) { qDebug() << "Failed to connect to database."; return 1; } // 执行查询 QSqlQuery query; query.prepare("SELECT * FROM mytable"); if (query.exec()) { while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() << id << name; } } else { qDebug() << "Failed to execute query."; } // 关闭数据库连接 db.close(); ``` 在上面的代码中,使用QSqlDatabase类连接到MySQL数据库并打开连接。然后,使用QSqlQuery类执行查询并遍历结果集。最后,关闭数据库连接。 如果您需要执行更新、插入或删除操作,可以使用QSqlQuery类的其他方法。例如: ``` // 插入数据 query.prepare("INSERT INTO mytable (id, name) VALUES (?, ?)"); query.addBindValue(4); query.addBindValue("John"); if (!query.exec()) { qDebug() << "Failed to insert data."; } // 更新数据 query.prepare("UPDATE mytable SET name = ? WHERE id = ?"); query.addBindValue("Jack"); query.addBindValue(4); if (!query.exec()) { qDebug() << "Failed to update data."; } // 删除数据 query.prepare("DELETE FROM mytable WHERE id = ?"); query.addBindValue(4); if (!query.exec()) { qDebug() << "Failed to delete data."; } ``` 现在,您已经知道如何使用Qt读写MySQL数据库了。您可以根据需要进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值