mysql模块学习-记录

一、索引

1、索引下推

联合索引,老版本是根据第一个索引查询结果集后进行过滤

新版本是通过所有的索引查询结果集进行查询

2、

嵌套循环连接 对于关联字段加了索引的表,使用索引,性能比较好

基于块的嵌套循环连接 对于关联字段没有添加索引的表,会把小表放入内存,一一与大表进行比对,增加性能。

3、mysql一页默认是16k

4、单路排序 一次性拿出所有的字段进行排序

双路排序 拿出id和排序字段进行排序,排序完成后进行回表查询

默认1024个字节,根据这个配置是执行单路还是双路

5、分页查询优化,先查询某页数据的id,再用id进行关联查询,减少查询时候的字段,增加性能

6、尽量使用 count(*),count(列名)和count(常量)不会统计null行

二、事务

隔离级别

1-READ-UNCOMMITTED(读未提交)脏读(事务A读取到了事务B已经修改但尚未提交的数据

2-READ-COMMITTED(读已提交)不可重复读(事务A内部的相同查询语句在不同时刻读出的结果不一致

3-REPEATABLE-READ (可重复读)幻读(事务A读取到了事务B提交的新增数据

4-SERIALIZABLE (可串行化)解决上面所有问题

MVCC实现可见性

三、Innodb存储引擎

1、查询原始数据到缓存

2、写入undo日志(主要用于回滚数据)

3、更新数据到缓存

4、写入redo日志缓存

5、顺序写入redo日志(物理修改,具体在磁盘的位置)

6、写入binlog日志(逻辑修改,记录具体sql)

7、提交commit标记,提交事务

8、数据写入磁盘

WAL机制(Write-Ahead-Logging)

redolog的参数

innodb_flush_log_at_trx_commit:这个参数控制redolog的写入策略,它有三种可能取值:

设置为0:表示每次事务提交时都只是把redolog留在redologbuffer中,数据库宕机可能会丢失数据。

设置为1(默认值):表示每次事务提交时都将redolog直接持久化到磁盘,数据最安全,不会因为数据库宕机丢失数据,但是效率稍微差一点,线上系统推荐这个设置。

设置为2:表示每次事务提交时都只是把redolog写到操作系统的缓存pagecache里,这种情况如果数据库宕机是不会丢失数据的,但是操作系统如果宕机了,pagecache里的数据还没来得及写入磁盘文件的话就会丢失数据。

四、Mysql8.0新特性

1、新增降序索引

2、group by 不再隐式排序

3、增加隐藏索引

4、新增函数索引

5、innodb存储引擎select for update跳过锁等待

6、新增innodb_dedicated_server自适应参数

7、死锁检查控制

8、undo文件不再使用系统表空间

9、 binlog日志过期时间精确到秒

10、窗口函数(Window Functions):也称分析函数

12、默认字符集由latin1变为utf8mb4

13、MyISAM系统表全部换成InnoDB表

14、元数据存储变动

15、自增变量持久化

16、DDL原子化

17、参数修改持久化

五、Mysql8.0主从复制

复制方式 : 

1、从binlog复制

2、增加从全局事务id进行复制

数据同步方式:

1、异步复制,直接写入binlog完事,从节点会有线程来拉取主节点的binlog

2、半同步复制,写入从节点的中继日志,只要有一个从节点响应就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值