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亿数据够存).
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中。