背景:

由于业务数据量大,采用了分库分表(Mycat);为了提高查询效率,使用了时间来分区;分区之后表的唯一索引必须带上分区字段。

假设有一张订单表(table_order)业务字段为order_no(订单号),分区字段为create_tm(创建时间);唯一索引就是联合索引order_no+create_tm。

问题:

分布式系统中多个节点,对同一订单并发处理,发现table_order中没有该订单,然后都在该表中增加订单。因为订单号没有唯一索引,多个节点都新增数据成功,这就导致table_order中出现多条同样的订单数据。

解决方案一:

使用数据库唯一索引保证数据唯一性

建立一张中间表(假设为table_order_no),该表不分区,使用order_no作为唯一索引;同时保证每次在table_order中新增数据时,在table_order_no表中也新增数据。

解决方案二:

使用分布式锁防止并发处理

每次在处理订单时,都去尝试获取分布式锁,只有获取成功才能处理该订单。通过防止并发,保证一次只有一个节点处理订单,可以避免同时插入同一订单,从而保证订单唯一性。

方案二优化:

只在新增时,使用分布式锁,避免每次处理都去获取分布式锁,影响性能。

MYSQL分区表如何保证数据唯一性相关推荐

  1. 23 | MySQL是怎么保证数据不丢的?

    今天这篇文章,我会继续和你介绍在业务高峰期临时提升性能的方法.从文章标题"MySQL是怎么保证数据不丢的?",你就可以看出来,今天我和你介绍的方法,跟数据的可靠性有关. 在专栏前面 ...

  2. MySQL实战45讲——MySQL是怎么保证数据不丢的?

    文章摘抄自林晓斌老师<MySQL实战45讲>.今天这篇文章, 我会继续和你介绍在业务高峰期临时提升性能的方法. 从文章标题"MySQL是怎么保证数据不丢的? ", 你就 ...

  3. mysql分区表truncate分区数据_详解MySQL分区表

    前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...

  4. mysql如何保证数据不丢失_23 | MySQL是怎么保证数据不丢的?

    高峰期临时提升性能方法.跟可靠性有关.如何保证binlog 和 redo log 写入磁盘. WAL 机制(第 2 篇.第 9 篇.第 12 篇和第 15 篇): redo log 和 binlog ...

  5. MYSQL是如何保证数据不丢的?

    一.前言   由于mysql开源.体积小.速度快,总体拥有成本低,目前已广泛被大小公司使用,特别是在互联网,全球前20大互联网网站有18家使用了MYSQL,有些公司除使用外还在mysql的功能基础上做 ...

  6. 关于数据库数据唯一性保证

    数据库数据唯一性 在项目问题不断出现情况下,几经经验,得出一个结论:数据库数据的唯一性无法通过软件里的代码保证,只有数据库自身的唯一索引才可能保证插入的数据是始终唯一的. 例如,之前试图通过插入数据库 ...

  7. 后台数据到mysql怎样保持实时更新_京东智联云MySQL数据库如何保障数据的可靠性?...

    MySQL作为当前最流行的关系型数据库,在各个行业的系统中扮演着最重要的角色.随着大家对数据价值认可的逐步加深,数据的可靠性是最常被问到的一个问题.MySQL是如何保证数据可靠性的?京东智联云RDS- ...

  8. binlog数据库不写入binlog_京东智联云MySQL数据库如何保障数据的可靠性?

    MySQL作为当前最流行的关系型数据库,在各个行业的系统中扮演着最重要的角色.随着大家对数据价值认可的逐步加深,数据的可靠性是最常被问到的一个问题.MySQL是如何保证数据可靠性的?京东智联云RDS- ...

  9. 23MySQL 是怎么保证数据不丢的

    文章目录 23 | MySQL 是怎么保证数据不丢的 binlog 的写入机制 redo log 的写入机制 小结 上期问题时间 23 | MySQL 是怎么保证数据不丢的 只要 redo log 和 ...

最新文章

  1. 高中毕业就想转行当 Coder,程序员的学历真的不重要么?
  2. html酒鬼酒网站制作,酒鬼酒
  3. 021Python路--单例设计模式
  4. WebApplicationContext初始化
  5. 基于PaddleOCR实现AI发票识别的Asp.net Core应用
  6. 课时47.datalist标签(了解)
  7. DBMS连接不上 —— 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
  8. 关于JAVA小程序完整打包过程
  9. QUIC 协议在蚂蚁落地综述
  10. 读研2年,我选择从中科院退学转行写代码
  11. 微信小程序随机生成文案
  12. OpenVAS下载与安装
  13. 【R语言】ggplot2作图补充(1)
  14. LPDDR5 JEDEC
  15. 【模型复现】零样本预测文本分类模型——ESM 快速复现模型
  16. docker部署博客项目
  17. Objective-c 学习笔记(二)
  18. 京东运维开发工程师 2019校招卷总结
  19. Java 中添加背景音乐
  20. python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义

热门文章

  1. sed删除代码空行和删去行尾空白
  2. 计算几何,三维向量的旋转
  3. 国家高新技术企业,科创板上市会更容易吗?
  4. 【转载】Python遍历pandas数据方法总结
  5. MuleSoft----初识mulesoft
  6. ~1 ccf 2022-06-2 寻宝!大冒险!
  7. 【Android】带可输入功能的下拉框EditSpinner,附带Filter功能
  8. APP流量变现的“快车”,你坐上了吗?
  9. Python 中的 defaultdict 数据类型
  10. 有符号数与无符号数之间运算问题