Mysql数据库的一些知识点

文章详细介绍了MySQL中的InnoDB和MyISAM两种主要存储引擎的差异,包括外键支持、事务处理、锁机制和数据恢复能力。同时,讨论了数据库的三大范式以及索引的概念、数据结构(B+树和Hash索引)、优缺点,特别强调了B+树在索引中的应用和优势,并列举了索引失效的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySql常用的存储引擎有哪些,他们有啥区别?

常见的有innoDB,MyIsam.
区别:
从外键上:innodb支持外键,myisam不支持。
从事务的角度:innodb支持事务,myisam不支持。
从锁的使用:innodb支持表锁和行锁,myisam支支持表锁。
从可恢复性上看:innodb根据事务日志进行恢复,myIsam没有事务日志。

数据库的三大范式

第一范式:确保每列保持原子性,数据表中的所有字段都是不可分割的。
第二范式:确保表中每列都与主键相关。
第三范式:确保每列和主键都是之间相关,而不是间接相关。

索引的定义

索引是对数据库表一列或者多列进行排序的一种结构。
索引使用的数据结构是B+树结构。

索引的优缺点

优点:
1.加快了访问效率。
2.将随机I/O变为顺序I/O。
3.加快了表与表之间的连接。
缺点:
1.从空间角度来看:索引需要占用一定量的物理空间。
2.从时间角度来看:创建和维护索引都需要花费时间。

索引的数据结构

索引的数据结构主要有B+树索引和hash索引。在innodb中,存在这两种索引,B+树索引是默认的数据结构。
B+树索引又可以分为主键索引和辅助索引,主索引为聚簇索引,辅助索引为非聚簇索引。聚簇索引是以主键作为B+树索引的键值,叶子节点存放着完整的数据结构,非聚簇索引是以非主键作为B+树索引的键值,叶子节点存放着主键,使用非聚簇查询的时候,会先找到主键值,然后通过聚簇索引找到对应的数据。

hash索引和B+树索引的区别

1.hash索引是无序的,hash表是无序的。
2.hash索引不支持范围查找。
3.因为hash索引中存在hash冲突,所以每次查找是,hash索引的性能不稳定,B+树索引性能很稳定。
4.hash索引不支持模糊查询和最左前缀匹配。

B树和B+树的区别

1.B树的内部节点和叶子节点均存放键和值,而B+树的内部节点存放的是键,叶子节点存放的才是值。
2.B树适用于随机查询,而B+树适合顺序查询。

为什么索引使用B+树这个数据结构,而不是B树?

1.B树适用于随机检索,而B+树适合顺序索引。
2.B+树的空间利用率更高,B+树的内部节点只存放键,叶子节点只存放值,而B树内部节点和叶子节点都存放值和键。
3.B+树的性能更加稳定,所有的查找都是从内部节点到叶子节点,而B树的话,有可能在叶子节点才找到,有可能在内部节点就找到了。

聚簇索引和非聚簇索引最大的区别在于数据和索引是否分开存储。

索引在是什么情况下会失效?

1.不符合最左前缀匹配原则。
2.判断条件中有or。
3.在索引上进行计算。
3.在索引上进行隐式转换会导致索引失效。
4.在索引中使用函数会导致索引失效。
5.在索引中使用!,=,<>会导致索引失效。
6.在使用like查询时,用%开头会导致索引失效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值