![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
基础 + 进阶
Mdy1140370434
这个作者很懒,什么都没留下…
展开
-
Mysql架构
第二层架构主要完成大多数的核心服务功能,如 SQL 接口,并完成缓存的查询,SQL 的分析和优化及部分内置函数的执行。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化,如确定查询表的顺序,是否利用素引等,最后生成相应的执行操作。存储引擎层,存储引擎真正的负责了 MysQL 中数据的存储和提取,服务器通过 API 与存储引擎进行通信。不同的存储引擎具有的功能不同,可以根据实际需要进行选取。数据存储层,主要是将数据存储在设备的文件系统之上,并完成与存储引擎的交互。(处理客户端连接请求)原创 2024-01-24 19:04:44 · 325 阅读 · 1 评论 -
MySQL引擎
通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。MyISAM 也是 MySQL 的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当 INSERT(插入)或 UPDATE(更新)数据时即写操作需要锁定整个表,也就是只有表锁(并发量小),效率便会低一些;InnoDB 是一个事务型的存储引擎,有行级锁(并发量大)和外键约束,支持全文检索(全文索引),它的设计目标是处理大容量数据库系统,MySQL 运行时 Innodb 会在内存中建立缓冲池,用于缓冲数据和索引;原创 2024-01-24 19:20:50 · 375 阅读 · 1 评论 -
索引的分类
即一个索引包含多个列,在数据库操作期间,复合索引比单值索引所需要的开销更小(对于相同的多个列建索引),当表的行数远大于索引列的数目时可以使用复合索引。select * from table where b=’’and c=’’索引不生效。select * from table where a=’’and b=’’索引生效。select * from table where b=’’and a=’’索引生效。select * from table where a=’’and c=’’索引生效。原创 2024-01-24 20:47:16 · 351 阅读 · 0 评论 -
索引数据结构
MySQL最终选择B+树作为索引数据结构,因为B树虽是多路平衡树,但叶子节点之间没有联系;B+树是多路平衡树,一个节点可以存储更多的数据,数据记录都存放在叶子节点中,这样非叶子节点就可以存储更多索引,所有叶子节点之间还有一个链指针。MySQL使用自增主键,如果使用二叉树作为索引数据结构,自增时二叉树会像链表一样单边增长;红黑树虽然会旋转平衡,但也是一边的增长,树的高度大。(全表扫描,范围查找)原创 2024-01-24 20:25:17 · 383 阅读 · 0 评论 -
聚簇索引和非聚簇索引
但是 innodb 中也存在非聚簇索引,就是除主键索引(一级索引)之外的索引,也叫辅助索引。例如为 name 列添加索引(二级索引),我们通过 name 找到后并不能找到数据,而是需要再找到主键索引,通过主键索引找到数据,这种索引也称为非聚簇索引。索引的存储和数据的存储是分离的,也就是说找到了索引但没找到数据,需要根据索引上的值(主键)再次回表查询,非聚簇索引。找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,所以 innodb中的主键就是聚簇索引(一级索引)。原创 2024-01-25 19:35:47 · 170 阅读 · 0 评论