mysql - Maria-db并发插入数据丢失问题

标签 mysql sql concurrency mariadb innodb

尝试通过多个批处理作业插入数据时,我遇到数据丢失问题。 我们有 10.1.21-MariaDB-1~jessie 版本,以 InnoDB 作为默认存储引擎。

我遇到过以下情况:

尽管为数据库中的一条记录生成的插入语句中存在值,但缺少列值。

表自动递增索引值显示数字170,但实际记录数为165。所以这里5条记录全部丢失了。

有人可以指导我解决这个问题吗?

最佳答案

情况 1:您从外部得知缺少 5 个特定行。需要更多信息来讨论这个问题。

情况 2:COUNT(*) 表示 165,但 SHOW TABLE STATUS 表示 170“行”。不要相信STATUS;这是一个估计。

情况 3:您执行了一堆 INSERTCOUNT(*) 表示 150,SHOW CREATE TABLE 表示 AUTO_INCRMENT = 170..这表示某些 ID 已被“烧毁”。所有类型的 INSERT 语句(多行、IGNORE、IODKU、REPLACE、ROLLBACK 等)都有烧毁 id 的方法。忍受它。如果您描述您的陈述,我们可以进一步详细说明。

关于mysql - Maria-db并发插入数据丢失问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45181989/

相关文章:

mysql - 如何将结果从一行链接到同一张表上的另一行

mysql - 我想借助 LIKE 语句显示 `ADSTech` 的结果

sql - 将列合并为一列 SQL Server

java - java中线程安全的随机访问循环数组?

mysql - 如何使用相关子查询进行更新?

php - 在外部(非 WP)脚本中包含 WordPress 导航

php - 从同一个表但不同时间范围检索数据的最佳方法是什么?

c# - 如何在 ORACLE 中使用单个命令运行一次更新和提交

java - 跨线程变量的每次读取都应该是 volatile 的、原子性的还是由同步包装的?

monad 中的多线程