day05数据库篇

一、隔离级别:
1.未提交读
2.脏读:包括脏读,不可重复读,幻读
3.读已提交
4.不可重复读
5.可重复读
二、存储引擎
常见的存储引擎有InnoDB和MyISAM,和mermory,mysql默认存储引擎是InnoDB
InnoDB与MyISAM区别:
1.InnoDB支持事务,MyISAM不支持事务

2.InnoDB通过undolog,支持事务回滚、当前读,MyISAM没有undolog和redolog

3.InnoDB支持外键,MyISAM不支持外键

4.InnoDB因为是聚簇索引,数据和索引是一起存储的,MyISAM数据和索引是分开存储的

三、undolog 和readlog

undolog:
回滚数据,以行为单位,记录数据每次的变更,一行记录有多个版本并存
多版本并发控制,即快照读(也称为一致性读),让查询操作可以去访问历史版本

扫描二维码关注公众号,回复: 14783614 查看本文章

readlog:redo log 的作用主要是实现 ACID 中的持久性,保证提交的数据不丢失

四、锁
根据锁的颗粒度划分为三种锁
全局锁:锁定数据库中的所有表,可以用于数据备份,当需要进行数据备份前,使用全局锁锁住所有的表,然后进行备份操作,可以保证数据库数据的一致性
表级锁:每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在
MyISAM、InnoDB、BDB等存储引擎中。
行级锁:每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用
在InnoDB存储引擎中。
五、事务
1.什么是事务?
事务是一组操作要么同时成功,要么同时失败。
2.事务的四大特性
2.1原子性:一个原子操作要么同时成功,要么同时失败
2.2一致性:事务的执行不能破坏数据库数据的完整性和一致性,事务执行前后数据的状态保持一致
2.3隔离性:在并发场景下,不同的事务并发操作相同的数据,每个数据有自己的完整的数据空间,事务之间相互隔离
2.4持久性:事务一旦提交,数据库的数据改变是永久的,即使数据库崩溃宕机,重启数据库后也能恢复数据
六、数据库设计

使用PowerDesinger根据原型图,设计表结构,生成sql语句执行
七、索引

1.索引的作用:提交查询的效率
2.索引分类:
普通索引:最基本的索引,没有任何的限制
唯一索引:与普通索引一致,不同的就是索引列的值必须唯一,但允许有空值,如果是组合索引,则列值的组合必须唯一
主键索引:它是一种特殊的索引,用于唯一标识数据表中的某一条记录,不允许有空值,一般用primary来约束
联合索引:联合索引又叫复合索引,多个字段上建立的索引,能够快速复合查询条件的检索
全文索引:老版本的MySQL自带的全文索引只能用于数据库引擎未MYISAM的数据表,新版本MySQL5.6的InnoDB支持全文索引
二级索引:除主键外的其它字段建立的索引称为二级索引。被索引的字段值作为索引数据,叶子节点还包含了主键值
3.索引的底层数据结构
3.1 B+Tree 索引: 最常见的索引类型, 大部分索引都支持 B+树索引.
3.2Hash 索引: 只有 Memory 引擎支持, 使用场景简单. 
3.3S-Full-text(全文索引): 全文索引也是 MyISAM 的一个特殊索引类型, 主要用于全 文索引, InnoDB 从Mysql5.6 版本开始支持全文索

5.索引创建原则
1). 针对于数据量较大,且查询比较频繁的表建立索引。
2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索
引。
3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。
4). 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。
5). 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空
间,避免回表,提高查询效率。
6). 要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响
增删改的效率。
7). 如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包
含NULL值时,它可以更好地确定哪个索引最有效地用于查询。

八、sql慢查询步骤
1.开启慢查询日志
2.查询慢查询日志信息,分析哪些sql执行语句比较耗时
3.找到了较慢的sql之后,可以采用EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。主要可以根据几个字段,判断sql是否需要优化,特别是是否能命中索引或命中索引的情况
4.查看有没有使用select*或者使用了left join,一张表对多张表,涉及查询的表过多来定位排查问题

九、视图是什么,主要有什么作用?
MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实
际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动
态生成的。

十、节点
根节点:树的最顶端的节点。(根节点只有一个)
子节点:除根节点之外,并且本身下面还连接有节点的节点
叶子节点:自己下面不再连接有节点的节点(即末端),称为叶子节点(又称为终端结点)。度为0

猜你喜欢

转载自blog.csdn.net/weixin_71921932/article/details/129988048