mysq基础知识总结l

一、Mysql架构

               

 

二、Mysql查询过程

 例如执行select * from tablea where id=4;

               

 

三、Mysql中的事务及隔离级别

 事务:InnoDB存储引擎支持事务。事务是mysql的执行最小单元,也就是原子性。要么执行成功,要么执行失败。

>start transaction
>commit
undolog临时表来记录计算的中间值,当事务结束后更新数据,如果执行失败,事务的回滚也依靠undolog。
四大特性:原子性;一致性;隔离性;持久性。
隔离界别:
1.读未提交:脏读,不可重复读;幻读;
2.不可重复读:不可重复读,幻读;
3.可重复读:幻读;
4.串行化;
5.实现隔离机制主要有两种方法:加读写锁;MVCC一致性快照。
 
可使用系统变量设置事务隔离界别:
全局:set global tx_isolation = 'REPEATABLE_READ';
局部:set session tx_isolation = 'REPEATABLE_READ';

 

四、Mysql存储引擎的总结

 Mysql存储引擎有:MyISAM, InnoDB, memory, BDB这几类常用的存储引擎。

 

Mysql存储引擎除了MyISAM和InnoDB,还有BDB和memory(支持Hash索引)
 
MYISAM和InnoDB存储引擎的区别:
MyISAM: 支持全文索引,btree索引,数据压缩;不支持事务,集群索引,数据索引,外键;存储限制256TB;空间使用率低。
 
InnoDB:支持事务,btree索引,集群索引,数据索引,外键;不支持全文索引,hash索引,数据压缩;是存储限制64TB;空间使用率高。
支持聚簇索引,b+tree叶子结点的存储,key值和数据行绑定在一起的。
key值:三种选择(主键索引,唯一索引,rowid).表里有主键用主键,没有主键用唯一键,没有唯一键用rowid(6个字节,21亿数据够存).
 
区别:
1.B+Tree索引叶子节点存储的数据不同。MyISAM使用B+Tree做索引的数据结构,叶子节点的data域存放的是数据记录的地址;InnoDB使用B+Tree做索引结构,叶子节点的data域存直接存储的是数据。
2.查找时,MyISAM存储引擎需要把整个树加载到内存中,再进行查找,因此查询速度快;InnoDB存储引擎只加载树的一部分。

 

五、Mysql中的数据结构b-tree和b+tree

数据结构:btree与B+tree的区别:

btree的节点中key索引值与数据存储在一个节点中;
b+tree中:非叶子节点不存储数据只存储索引值;2.数据存储在叶子结点中,相同数据量减小了树高,优化了查询效率;叶子结点增加了指向下一个叶子结点的指针。

 

六、Mysql中的索引原理

 索引分类:

table student(id,name,age);
1.主键索引;id,b+tree存储;
2.唯一索引;
3.普通索引(二级索引);name,b+tree存储。
 
空间索引,全文索引,组合索引;
聚簇索引,非聚簇索引;
 
聚簇索引与非聚簇索引的区别:
支持聚簇索引,b+tree叶子结点的存储,key值和数据行绑定在一起的。
key值:三种选择(主键索引,唯一索引,rowid).表里有主键用主键,没有主键用唯一键,没有唯一键用rowid(6个字节,21亿数据够存).

 

七、Mysql主从数据同步的实现--binlog

 binlog:存储执行语句。如果创建一张表,执行:

create table student(
     id int not null auto_increment,
     'name' varchar(20)
)engine = MyISAM;
这条语句会记录在binlog中。
 
作用:
mysql集群中数据回滚,数据的恢复。
主从模式下,实现主从数据库数据同步。master写入数据后,binlog发生变化,master会主动通知salver更新数据。salver中的io线程会读binlog再写到relaylog中,再由sql线程写到DB中。
posted @ 2020-09-17 21:42  will287248100  阅读(229)  评论(0编辑  收藏  举报