Mysql事务--笔记

1.sql语句执行过程:连接器、分析器、优化器、执行器。

2.mysql常见的存储引擎:innodb(磁盘)、myisam(磁盘)、memory(内存)。

       hash索引一般用在memory存储引擎上。

3.innodb存储数据采用两种同名文件:

       .frm(存储表结构和源数据的地方)

       .ibd(实际存储数据的地方)

4.myisam存储数据采用三种同名文件:

       .frm

       .MYD(存放数据文件)

       .MYI(存放索引文件)

5.不同存储引擎的区别在于索引事务的区别。

6.innodb支持事务,myisam不支持事务。

7.myisam默认是表锁;innodb默认是行锁,但同时支持表锁。

8.innodb锁的是索引,如果没有索引就锁表。

9.myisam不支持外键。

10.面试回答问题:采用总--分结构。

11.go语言mysql连接池

       xrom或gorm配置。

12.分析器将sql语句转换为AST(抽象语法树)

13.Apache Calcite是一款开源SQL解析工具, 可以将各种SQL语句解析成抽象语法术AST(Abstract Syntax Tree), 之后通过操作AST就可

       以把SQL中所要表达的算法与关系体现在具体代码之中。

14.优化器的两个原则CBO(基于成本的优化)和RBO(基于规则的优化),大部分都是基于CBO的优化。

15.mysql中指定了连接条件时,满足查询条件的记录行数少的表为驱动表。

16.连表查询时查询表顺序会被优化器改变,STRAIGHT_JOIN关键字可以按照自己指定的顺序查表。

17.bin log、redo log、undo log 区别与作用

       binlog:归属于mysql service,默认是不开启的。主从复制需要开启。

       redo log、undo log归属于innodb存储引擎。

       undo log:回滚日志,如:执行一条insert语句则undo log记录一条与之相反的delete语句。

       redo log:实现事务的持久性。

       bin log和undo log是append的状态,而redo log是循环写状态。

18.建立主从库的时候尽量采用一种存储引擎,否则会引起存储结构之间的转换。

19.文件存储分为行式存储和列式存储。每种文件都有自己的文件头和文件尾。

20.在事务提交前只需要将redo log持久化即可。不需要将数据持久化。

       写数据需要先写到内存,然后到用户空间的OS Buffer中,最后调用系统命令fsync()写入到磁盘。

       0,1,2代表了mysql设置写入磁盘方式的参数值。

21.隔离性是通过锁实现的。

       myisam是表共享读锁表独占写锁

       innodb是共享锁(读锁)排他锁(写锁)

       自增锁、间隙锁、意向共享锁、意向排他锁。

22.Mysql默认的隔离级别是可重复读。

       oracle默认是读已提交。

       当数据库隔离级别不够高的时候,可能会引起脏读、幻读和不可重复读。

更新丢失:类似git的版本覆盖。

脏读:读取到另一个事务未提交的数据。

不可重复读:同一事务的两次查询结果不一致。

幻读:事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测获取到的数据如同鬼影一般。

23.一致性是通过原子性、隔离性和持久性共同来保证的。一致性是事务的根本追求。

视频链接:https://www.bilibili.com/video/BV1M5411a7vj?p=1

猜你喜欢

转载自blog.csdn.net/zaimeiyeshicengjing/article/details/107437521
今日推荐