关系型数据库保证数据的完整性和一致性是最佳的。

完整性

  • 实体完整性:每个实体独一无二(主键/唯一索引)
  • 参照完整性 (引用完整性): 子表中不能有父表中没有的数据(外键)
  • 域完整性:数据都是有效数据(数据类型和长度,非空约束,默认值约束,检查约束)
-- 检查学生年龄是否为1到200的数字
stuage in check (stuage between 1 and 200)
alter table tb_student add constraint;

一致性

数据的一致性用事务来实现。
事务:一系列对数据不可分割的操作(要么全做,要么全不做)

事务ACID特性:

atomicity 原子性 不可分割
consistency 一致性 前后数据状态保持一致
isolation 隔离性 多个并发事务不知道彼此的中间状态
duration 持久性 事务完成后,对数据的修改要持久化

并发事务访问数据可能产生的五大类问题:

  • 第一类丢失更新
  • 第二类丢失更新
  • 脏读(读脏数据)
  • 不可重复读
  • 幻读

解决:

  • 单版本并发控制-加锁-悲观锁-性能太差

  • 多版本并发控制(MVCC)- 乐观锁 - 不会经常遇到数据冲突 一条数据多个版本 -性能更好-需要冗余字段支持

    直接操作锁非常麻烦,设置事务隔离级别,数据库自动加合适的锁

事务隔离级别:

  • 读未提交
  • 读提交 --避免读到脏数据 oracle默认
  • 可重复读–避免幻读 mysql默认
  • 串行化–最高事务隔离级别,性能最差,无并发 ,悲观锁。

更多内容:参考这篇

数据库的完整性和一致性相关推荐

  1. mysql分库一致性_分库分表带来的完整性和一致性问题

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在最近做的一个项目中,由于每天核算的数据量过于庞大,需要把数据库进行分库保存.当数据 ...

  2. 利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复。

    利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复. 一.pt-table-checksum检查主从库数据的一致性 pt-table-checksum在MASTE ...

  3. NoSQL数据库:数据的一致性

    NoSQL数据库:数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点,得到的数据结果一致: 用户一致性 对同一用户,访问集群期间得到的数据一致: 解决用户一致性:使用粘性会话,将会话绑定 ...

  4. 数据库缓存双写一致性的一些个人想法

    数据库缓存双写一致性的一些个人想法 有这么个问题,还是经典面试题: 说我们有个数据库,他的读请求特别多,以至于要在数据库上加一层缓存来抗压,这个都能理解吧. 这里的缓存,可能是和数据库一样的数据,也可 ...

  5. 缓存淘汰、缓存穿透、缓存击穿、缓存雪崩、数据库缓存双写一致性

    缓存淘汰 为什么需要缓存淘汰?你需要缓存30G的数据,但是Redis本身只能使用10G的内存,那你就得做个取舍了,毕竟鱼与熊掌不可兼得.为了利益最大化肯定要保留最重要的10个G. Redis本身提供了 ...

  6. Redis面试 - 如何保证缓存与数据库的双写一致性?

    Redis面试 - 如何保证缓存与数据库的双写一致性? 面试题 如何保证缓存与数据库的双写一致性? 面试官心理分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致 ...

  7. 数据库系统-数据库的完整性

    数据库系统-数据库的完整性 数据库完整性指的是数据的正确性和相容性 数据的正确性:指数据是符合现实世界语义.反映当前实际状况的 数据的相容性:指数据库同一对象在不同关系表中的数据是符合逻辑的 数据库管 ...

  8. 数据库--MYSQL高级(多表),数据库的完整性,约束,数据类型,多表实现 CRUD 操作

    数据库的完整性 用来保证存放到数据库中的数据是有效的,即数据的有效性和准确性确保数据的完整性 = 在创建表时给表中添加约束. 完整性的分类: - 实体完整性(行完整性): - 域完整性(列完整性): ...

  9. Oracle数据库 | Oracle并发与一致性

    在单用户的数据库中,用户可以修改数据,而不用担心其他用户在同一时间修改相同的数据.但是在一个多用户的数据库中,多个事务内的语句可以同时更新相同的数据.注意,同时执行的多个事务必须产生有意义且一致的结果 ...

最新文章

  1. RHEL5.1NFS+NIS+Authconfig+Autofs实现自动挂载NIS用户主目录
  2. Linux系统中ctrl+c、 ctrl+z、 ctrl+\ 产生的信号名称
  3. win10 uwp 毛玻璃
  4. Maven(二):常用命令、依赖管理
  5. 微生物 研究_微生物监测如何工作,为何如此重要
  6. 某简单易懂的人脸识别 API 的开发环境搭建和简易教程
  7. JavaScript基本概念(下)
  8. AspxTreeList获取选中项的值
  9. python 封装_Python之封装
  10. ThreadPoolExecutor运转机制详解
  11. stata令相关系数加显著性
  12. RabbitMQ-官方指南-RabbitMQ配置
  13. Eclipse代码/目录虚线对齐设置
  14. 两行命令开启QQ音乐服务,或者官方文档完整过程
  15. Android10支持ntfs格式u盘
  16. 大数据Impala系列之初识Impala
  17. SQL 实验项目3_1-数据更新
  18. HCSA-08 威胁防护介绍、ARP防护、网络攻击防护、病毒过滤、入侵防御、边界流量过滤
  19. 我爱计算机:张俊林专访
  20. html关灯游戏,关灯小游戏 - 在线打字测试(dazi.kukuw.com)

热门文章

  1. Caffe训练分类器不收敛,loss居高不下
  2. Geoserver 谷歌栅格地图的使用
  3. 彻底卸载JDK的方式
  4. 广汽埃安AION S Plus 新车型通过申报,动力有所下降但售价更实惠
  5. QT学习-界面中实时绘制函数图像
  6. 2023我的创作纪念日
  7. Uniapp案例-聊天机器人demo
  8. c++实现basename
  9. 【业界实战】小米大数据总监司马云瑞详解小米用户画像的演进及应用解读
  10. wordpress插件大全-wordpress插件大全安装下载教程