【MySQL 的一些问题】

前言

1.前两天汪某说自己秒了一个题,让我看看,我看完之后感觉是线段树+LCA。其实正解是树链剖分+线段树,好吧我发现自己其实还是不会手写树剖,就学着写了写。
2.电脑在周五突然不work了?????我感到了绝望,联系公司的大佬,准备给在寄一台过来。
3.周六罕见的三人云合体,打了场比赛。说实话我就仔细写了两个小时,后边因为面试电话过来就溜了,就写了三个水题,其他的是汪某和zwg写的。最后
zwg干掉了构造题:rank 36
在这里插入图片描述我因为溜的早,估计wsx也溜了:rank 57,58.
在这里插入图片描述这场比赛没有很厉害的队伍,而且大概率赛前已经有题解了,所以其实没怎么在意。
正题:下面学习一下MySQL的各种知识。

MySQL特点

1.开源:这个词其实是很重要的,开源,免费,是很多公司选他的主要原因。
2.插件式引擎:MySQL的SQL语句,是存储引擎来执行的,至于选用哪种,可以自由选择。很方便

引擎的特点

1.Innodb:这个是MySQL的默认存储引擎,支持事务,是一种事务型引擎。支持B树索引,B+树索引
2.MyISam:不支持事务,不支持行级锁(啥叫行级锁?这个后边再提)。但是支持全文索引(啥叫全文索引?),对索引可以有前缀压缩。默认B树索引。
当然了还有其他的很多,有十多种吧,而且还可以自己根据你的业务需求定制开发引擎,当然这个水平还是比较高的。还有一个比较有意思的引擎就是Memory,这个说实话我没用过也不了解,只是记得它是默认支持的索引是Hash索引

读写锁和锁粒度

读写锁就是锁分为两种,读锁和写锁,也叫共享锁和排他锁。这个其实没什么好说的。锁的粒度其实就是说的锁的范围,比如是锁住整张表,还是锁某一行,或者某个字段。一般都是锁一行,这也叫做行锁。行锁实在存储引擎里面实现的。

事务

这个其实可以简单理解为:一组sql语句,他们要么全部执行成功,要么全部执行失败。当然执行失败就是回滚的意思了。其实这个特性就是原子性,操作系统里面也叫不可中断。

事务的四个特性

ACID是事务的四个特性
A(atomicity):原子性,上面已经描述了。
C(consistency):一致性,就是说数据库的数据一致性,举个例子就是,A给B转账,现在A有100,B也有100,他俩加起来200,A转给B100,如果成功变成A:0,B:200,总和还是200,不成功就是A:100,B:100。不会出现失败之后:A100,B:200 也就是总和一直都是200.这就是数据的一致性。当然了这个一致性大多数都是数据的一致性,其实也不仅仅是指这个,他指的是数据库的状态迁移到另外一个状态,这两个状态都是合法的。
I(isolation):隔离性,就是两个事务之间的数据是不可见的。
D(durability):持久性。这个其实概念比较宽泛,可以简单的理解就是事务一旦成功,他对数据库的修改就会一直存在。

事务的隔离级别

在ACID中有一个隔离性,讲的是两个事务之间操作数据的时候对对方是不是可见的,这个数据可见的等级,就是隔离的级别。
READ UNCOMMITED:未提交读,这个指的是事务A读了数据X,然后对X+1,这个修改还没提交,事务B又读了X,其实这个时候X已经不是正确的值了,这就是脏读(Dirty Read).这里其实事务所做的修改对其他事务时可见的,就是说其他的事务知道你改了,但是还会读X。
READ COMMITED:提交读。未提交读的不同点就是事务之间的修改在未提交之前时不可见的,但是它可以看见已经提交的数据。这样会造成一种不可重复读的问题。
REPEATABLE READ:可重复读,这个解决了脏读的问题。但是无法解决幻读,幻读的意思就是A读取了某个表的数据,然后B插了一条新的数据进来,结果A回来发现多了一行,就像出现了幻觉一样,这个行也叫做幻行。Innodb 会有一种MVCC的解决方案,解决幻读问题。
SERIALIZABLE:串行化,这个时最高的隔离级别,就是所有的事务都需要顺序执行。

MVCC

MVCC就是多版本并发控制的缩写。Innodb会在数据行的增加两列, 一个是行的创建时间,一个是过期时间。这个时间其实并不是真的时间,而是一种系统自己给定的编号。每次事务创建时,系统就会给这个事务一个编号。以可重复读为例:
SELECT:
(1)只会查早行版本号早于这个事物的版本号的行并且需要这个行没有被删除。
INSERT:这个直接给行的版本号表记未当前的系统的版本号。
DELETE:这个会把删除标记设置为当前的版本号。
基本的工作原理大概就是这样,这样其实就避免了加锁。效率比较高。

索引

突然不想写了,留着明天再补,反正这两天闲着。

发布了383 篇原创文章 · 获赞 58 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_41863129/article/details/104886120