线上数据出现重复记录,是落盘慢的原因吗?

  • 【TiDB 版本】:tidb-ansible v3.0.8
  • 【问题描述】:
> select id, name, nickname created_at, updated_at, deleted_at from members where name in ('123456789000','998877665544','coco756','13268869264') order by name;
+-------+--------------+------------+---------------------+------------+
| id    | name         | created_at | updated_at          | deleted_at |
+-------+--------------+------------+---------------------+------------+
|   187 | 123456789000 | 刘振华     | 2020-01-16 10:38:00 | NULL       |
| 30197 | 123456789000 | 刘振华     | 2020-01-16 10:38:00 | NULL       |
|   189 | 123456789000 | 刘振华     | 2020-01-16 10:38:00 | NULL       |
|   188 | 123456789000 | 刘振华     | 2020-01-16 10:38:00 | NULL       |
| 30198 | 123456789000 | 刘振华     | 2020-01-16 10:38:00 | NULL       |
|   130 | 13268869264  | 你好       | 2020-01-15 13:14:15 | NULL       |
|   129 | 13268869264  | 你好       | 2020-01-15 13:14:15 | NULL       |
| 30142 | 13268869264  | 你好       | 2020-01-15 13:14:15 | NULL       |
| 30186 | 998877665544 | 乔三       | 2020-01-16 08:21:30 | NULL       |
|   174 | 998877665544 | 乔三       | 2020-01-16 08:21:30 | NULL       |
| 30187 | coco756      | 王艳艳     | 2020-01-16 08:27:51 | NULL       |
| 30188 | coco756      | 王艳艳     | 2020-01-16 08:27:51 | NULL       |
|   175 | coco756      | 王艳艳     | 2020-01-16 08:27:51 | NULL       |
+-------+--------------+------------+---------------------+------------+
13 rows in set (0.00 sec)
  1. 请问表有主键或者唯一键吗?
  2. 如果 id 是主键或者唯一键的话可以先排查一下是否由于并发 Insert 导致的,因为单凭 updated_at 的字段精确到秒的话是比较难判断并发写入的情况。正常情况下,落盘的速度与重复记录无关 。

估计是并发问题,这边后端程序会检查name字段是否存在,这边让前端点击按钮的时候变灰色,然后name字段添加唯一约束看看

问下,添加 PRIMARY KEY 报错是怎么回事?

TiDB 暂时不支持对已经存在的表添加 Primary key

我看用 mydumper 从mariadb 数据库迁移过来的表有主键,这个主键只是兼容,实际不起任何作用对吧?

TiDB 与 MySQL 的 Primary key 都是一样,非空唯一。只是 TiDB 暂时还不支持,对已存在的表添加 Primary key ,必须在新建表的时候指定。

OK Thanks

:+1::+1::+1: