一、引擎
1.MySQL体系结构
2.存储引擎简介
存储引擎就是存储数据、建立索引、更新/查询数据等技术实现的方式。存储引擎是基于表的,而不是基于库的,索引存储引擎也被称为表类型。
a.数据库建表时默认存储引擎是InnoDB
b.查看当前数据库支持的存储引擎
3.默认存储引擎
(1)介绍
InnoDB是一种兼顾可靠性和高性能事务通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL的存储引擎,
(2)特点:
DML【增删改】操作遵循ACID模型,支持事务;
行级锁,提高并发访问性能;
支持外键约束,保证数据的完整性和正确性;
(3)InnoDB的逻辑结构:
page:是磁盘操作的最小单元
4、其他存储引擎
(1)、MySAM的特点
介绍:MySAM是MySQL早期默认的存储引擎。
特点
a、不支持事务和外键。
b、支持表级锁,不支持行级锁。
c、访问速度快。
(2)、Memory的特点
介绍:Memory存储数据时存储在内存中,由于受到硬件和断电对的影响,Memory只是用来当做临时表的存储和缓存来使用。
特点
a、内存存放
b、hash索引(默认)
(5)InnDB、MySAM和Memory的区别
(6)存储引擎的选择
二、索引
1、简介
在进行数据库查询操作且查询对象数据量庞大 我们可以选择添加索引来提高查询性能 。索引h可以更快的获取数据库的数据和结构 。类似于书本上的目录 。
2、分类
唯一索引:索引列中的值必须是唯一的,但是允许为空值。
主键索引:是一种特殊的唯一索引,不允许有空值。(主键约束,就是一个主键索引)。
组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。
普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一 点。
3、索引的应用
4、索引的结构
(1)常见的几种索引
(2)存储引擎对索引的支持
(3)B+Three的了解
innerDB的默认索引结构是B+tree来实现的
(4)Hash索引
采用 Hash 进行检索效率非常高,基本上一次检索就可以找到数据,而 B+ 树需要自顶向下依次查找,多次访问节点才能找到数据,中间需要多次 I/O 操作,从效率来说 Hash 比 B+ 树更快。
I、采用hsah索引可能会出现hash冲突的问题
我认为,Hash的进行存放索引和数据,是采用hash算法来经过计算再存储到hashtable(散列表又称哈希表),这样来看hash索引和hashmap集合的存储数据的形式是大致相等的,那么解决hashmap中的hash冲突的方法也应该适用于解决hash索引中的hash冲突的问题。纯属个人理解。
(5)小结
B+Three:支持范围查找,可以稳定查询。
Hash索引: 不支持大范围查找(hash索引指向的数据是无序的),支持精准范围查找。