MYSQL分区表如何保证数据唯一性
背景:
由于业务数据量大,采用了分库分表(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分区表如何保证数据唯一性相关推荐
- 23 | MySQL是怎么保证数据不丢的?
今天这篇文章,我会继续和你介绍在业务高峰期临时提升性能的方法.从文章标题"MySQL是怎么保证数据不丢的?",你就可以看出来,今天我和你介绍的方法,跟数据的可靠性有关. 在专栏前面 ...
- MySQL实战45讲——MySQL是怎么保证数据不丢的?
文章摘抄自林晓斌老师<MySQL实战45讲>.今天这篇文章, 我会继续和你介绍在业务高峰期临时提升性能的方法. 从文章标题"MySQL是怎么保证数据不丢的? ", 你就 ...
- mysql分区表truncate分区数据_详解MySQL分区表
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...
- mysql如何保证数据不丢失_23 | MySQL是怎么保证数据不丢的?
高峰期临时提升性能方法.跟可靠性有关.如何保证binlog 和 redo log 写入磁盘. WAL 机制(第 2 篇.第 9 篇.第 12 篇和第 15 篇): redo log 和 binlog ...
- MYSQL是如何保证数据不丢的?
一.前言 由于mysql开源.体积小.速度快,总体拥有成本低,目前已广泛被大小公司使用,特别是在互联网,全球前20大互联网网站有18家使用了MYSQL,有些公司除使用外还在mysql的功能基础上做 ...
- 关于数据库数据唯一性保证
数据库数据唯一性 在项目问题不断出现情况下,几经经验,得出一个结论:数据库数据的唯一性无法通过软件里的代码保证,只有数据库自身的唯一索引才可能保证插入的数据是始终唯一的. 例如,之前试图通过插入数据库 ...
- 后台数据到mysql怎样保持实时更新_京东智联云MySQL数据库如何保障数据的可靠性?...
MySQL作为当前最流行的关系型数据库,在各个行业的系统中扮演着最重要的角色.随着大家对数据价值认可的逐步加深,数据的可靠性是最常被问到的一个问题.MySQL是如何保证数据可靠性的?京东智联云RDS- ...
- binlog数据库不写入binlog_京东智联云MySQL数据库如何保障数据的可靠性?
MySQL作为当前最流行的关系型数据库,在各个行业的系统中扮演着最重要的角色.随着大家对数据价值认可的逐步加深,数据的可靠性是最常被问到的一个问题.MySQL是如何保证数据可靠性的?京东智联云RDS- ...
- 23MySQL 是怎么保证数据不丢的
文章目录 23 | MySQL 是怎么保证数据不丢的 binlog 的写入机制 redo log 的写入机制 小结 上期问题时间 23 | MySQL 是怎么保证数据不丢的 只要 redo log 和 ...
最新文章
- 高中毕业就想转行当 Coder,程序员的学历真的不重要么?
- html酒鬼酒网站制作,酒鬼酒
- 021Python路--单例设计模式
- WebApplicationContext初始化
- 基于PaddleOCR实现AI发票识别的Asp.net Core应用
- 课时47.datalist标签(了解)
- DBMS连接不上 —— 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
- 关于JAVA小程序完整打包过程
- QUIC 协议在蚂蚁落地综述
- 读研2年,我选择从中科院退学转行写代码
- 微信小程序随机生成文案
- OpenVAS下载与安装
- 【R语言】ggplot2作图补充(1)
- LPDDR5 JEDEC
- 【模型复现】零样本预测文本分类模型——ESM 快速复现模型
- docker部署博客项目
- Objective-c 学习笔记(二)
- 京东运维开发工程师 2019校招卷总结
- Java 中添加背景音乐
- python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义