《数据库》小结03

一、乐观锁和悲观锁

资源并发锁
1.乐观锁:

  • 操作时不上锁,适用于多读模式。
  • 乐观锁在不发生取锁失败的情况下开销比悲观锁小,但是一旦发生失败回滚开销则比较大,也可能造成脏读。
  • 乐观锁机制避免了长事务中的数据库加锁开销,大大提升了大并发量下的系统整体性能表现。

2.悲观锁:

  • 操作时上锁。
  • 提供安全保障,但效率不高,增加死锁机会,增加系统负载,降低并行性。

二、清理binlog日志两种方法

  • MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间。
  • 1.手动删除
  • 2.通过设置binlog过期的时间,使系统自动删除binlog文件

三、数据库常用引擎

1.InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。

  • 如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
  • 如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)
  • B+树索引

2.MyISAM: 插入数据快,空间和内存使用比较低。

  • 如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。
  • 如果应用的完整性、并发性要求比较低,也可以使用。
  • B+树索引

3.MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。

  • 如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。
在这里插入图片描述

四、redis和mysql的区别

  • mysql是关系型数据库,redis是缓存数据库。
  • mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢。
  • redis用于存储使用较为频繁的数据到缓存中,读取速度快。redis是key-value的数据结构,每条数据都是一个键值对,键的类型是字符串,且键不能重复,值的类型有字符串string、哈希hash、列表list、集合set和有序集合zset。
  • mysql和redis因为需求的不同,一般都是配合使用。

五、数据库三大范式和五大约束

1)三大范式

  • 1.第一范式:每列都是不可拆分的最小单元。
  • 2.第二范式:满足1NF后,每列都依赖于主键,每个表只描述一件事情。
  • 3.第三范式:满足2NF后,每列都与主键直接相关。利用外键做表的关联,一张表只能包含另一张表的主键。

2)五大约束

  • 1.主键约束【主键默认非空和唯一,自动增长的一定是主键,主键不一定需要自动增长】
  • 2.唯一性约束
  • 3.默认值约束
  • 4.非空约束
  • 5.外键约束
发布了60 篇原创文章 · 获赞 55 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/MARY197011111/article/details/87825347