数据库的完整性和一致性
关系型数据库保证数据的完整性和一致性是最佳的。
完整性
- 实体完整性:每个实体独一无二(主键/唯一索引)
- 参照完整性 (引用完整性): 子表中不能有父表中没有的数据(外键)
- 域完整性:数据都是有效数据(数据类型和长度,非空约束,默认值约束,检查约束)
-- 检查学生年龄是否为1到200的数字
stuage in check (stuage between 1 and 200)
alter table tb_student add constraint;
一致性
数据的一致性用事务来实现。
事务:一系列对数据不可分割的操作(要么全做,要么全不做)
事务ACID特性:
atomicity 原子性 | 不可分割 |
consistency 一致性 | 前后数据状态保持一致 |
isolation 隔离性 | 多个并发事务不知道彼此的中间状态 |
duration 持久性 | 事务完成后,对数据的修改要持久化 |
并发事务访问数据可能产生的五大类问题:
- 第一类丢失更新
- 第二类丢失更新
- 脏读(读脏数据)
- 不可重复读
- 幻读
解决:
单版本并发控制-加锁-悲观锁-性能太差
多版本并发控制(MVCC)- 乐观锁 - 不会经常遇到数据冲突 一条数据多个版本 -性能更好-需要冗余字段支持
直接操作锁非常麻烦,设置事务隔离级别,数据库自动加合适的锁
事务隔离级别:
- 读未提交
- 读提交 --避免读到脏数据 oracle默认
- 可重复读–避免幻读 mysql默认
- 串行化–最高事务隔离级别,性能最差,无并发 ,悲观锁。
更多内容:参考这篇
数据库的完整性和一致性相关推荐
- mysql分库一致性_分库分表带来的完整性和一致性问题
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在最近做的一个项目中,由于每天核算的数据量过于庞大,需要把数据库进行分库保存.当数据 ...
- 利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复。
利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复. 一.pt-table-checksum检查主从库数据的一致性 pt-table-checksum在MASTE ...
- NoSQL数据库:数据的一致性
NoSQL数据库:数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点,得到的数据结果一致: 用户一致性 对同一用户,访问集群期间得到的数据一致: 解决用户一致性:使用粘性会话,将会话绑定 ...
- 数据库缓存双写一致性的一些个人想法
数据库缓存双写一致性的一些个人想法 有这么个问题,还是经典面试题: 说我们有个数据库,他的读请求特别多,以至于要在数据库上加一层缓存来抗压,这个都能理解吧. 这里的缓存,可能是和数据库一样的数据,也可 ...
- 缓存淘汰、缓存穿透、缓存击穿、缓存雪崩、数据库缓存双写一致性
缓存淘汰 为什么需要缓存淘汰?你需要缓存30G的数据,但是Redis本身只能使用10G的内存,那你就得做个取舍了,毕竟鱼与熊掌不可兼得.为了利益最大化肯定要保留最重要的10个G. Redis本身提供了 ...
- Redis面试 - 如何保证缓存与数据库的双写一致性?
Redis面试 - 如何保证缓存与数据库的双写一致性? 面试题 如何保证缓存与数据库的双写一致性? 面试官心理分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致 ...
- 数据库系统-数据库的完整性
数据库系统-数据库的完整性 数据库完整性指的是数据的正确性和相容性 数据的正确性:指数据是符合现实世界语义.反映当前实际状况的 数据的相容性:指数据库同一对象在不同关系表中的数据是符合逻辑的 数据库管 ...
- 数据库--MYSQL高级(多表),数据库的完整性,约束,数据类型,多表实现 CRUD 操作
数据库的完整性 用来保证存放到数据库中的数据是有效的,即数据的有效性和准确性确保数据的完整性 = 在创建表时给表中添加约束. 完整性的分类: - 实体完整性(行完整性): - 域完整性(列完整性): ...
- Oracle数据库 | Oracle并发与一致性
在单用户的数据库中,用户可以修改数据,而不用担心其他用户在同一时间修改相同的数据.但是在一个多用户的数据库中,多个事务内的语句可以同时更新相同的数据.注意,同时执行的多个事务必须产生有意义且一致的结果 ...
最新文章
- RHEL5.1NFS+NIS+Authconfig+Autofs实现自动挂载NIS用户主目录
- Linux系统中ctrl+c、 ctrl+z、 ctrl+\ 产生的信号名称
- win10 uwp 毛玻璃
- Maven(二):常用命令、依赖管理
- 微生物 研究_微生物监测如何工作,为何如此重要
- 某简单易懂的人脸识别 API 的开发环境搭建和简易教程
- JavaScript基本概念(下)
- AspxTreeList获取选中项的值
- python 封装_Python之封装
- ThreadPoolExecutor运转机制详解
- stata令相关系数加显著性
- RabbitMQ-官方指南-RabbitMQ配置
- Eclipse代码/目录虚线对齐设置
- 两行命令开启QQ音乐服务,或者官方文档完整过程
- Android10支持ntfs格式u盘
- 大数据Impala系列之初识Impala
- SQL 实验项目3_1-数据更新
- HCSA-08 威胁防护介绍、ARP防护、网络攻击防护、病毒过滤、入侵防御、边界流量过滤
- 我爱计算机:张俊林专访
- html关灯游戏,关灯小游戏 - 在线打字测试(dazi.kukuw.com)