MySQL

一.四大特性

含义 详情
A(atomicity) 原子性 即不可拆分的最小单元,事务要么一起成功,要么一起失败
C(consistency) 一致性 事务由一种正确状态转为另一种正确状态
I(isolation) 隔离性 不允许把未提交事务对数据做出的改变提供给其他事务
D(durability) 持久性 事务提交后,做出的改变将永久保存在数据库中

二.存储引擎

通过在navicat中输入命令查看mysql的版本以及支持的引擎;YES表示可以使用、NO表示不能使用、DEFAULT表示该引擎为当前默认的存储引擎
image

1.Inoodb

支持事务、主键、外键约束

2.MyISAM

不支持事务
选择密集型表,筛选大量数据非常迅速;
插入密集型表,并发插入特性;

3.Memory

目标数据小且被非常频繁的访问;
数据的丢失对服务没实质性的影响

4.引擎的选择

  1. 如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
  2. 如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
  3. 如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
  4. 如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
  5. 使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能

三.隔离级别

1.读未提交(Read uncommitted)

事务可以读取到未提交事务对数据做出的改变,容易产生脏读问题;

2.读已提交(Read committed)

事务只能读取到已提交事务对数据做出的改变,避免了脏读问题,但会导致不可重复读和虚读问题;

3.可重复读(Repeatable read)

事务中的多个实例在并发情况下读取到的数据时一致的,但会导致幻读(一个用户在该范围读取一行数据,另一个事务在该范围插入了新行,当用户再次读取数据时会出现新的幻影行),通过GAP锁即可避免了幻读

4.可串行读(Serializable)

强制对事务进行排序,使之不会出现冲突的情况,相当于加上了共享锁

四.Mysql的锁

共享锁(读锁)

允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。即多个用户可以同时读取同一个资源,但不允许其他客户修改。

排他锁(写锁)

允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的读锁和写锁。写锁是排他的,写锁会阻塞其他的写锁和读锁。

行锁

表锁

乐观锁

悲观锁(行锁)

MVCC

MVCC即多版本并发控制,MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。

GAP

五.视图

六.sql优化

七.B+树

注: 存储引擎参考:https://blog.csdn.net/bbj12345678/article/details/120786449

posted @   22干代码  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示