mysql
2021-04-22 09:40:08 0 举报
mysql基础架构
作者其他创作
大纲/内容
联合索引最左匹配假设有一张表,有id,name,age gender 四个字段,id是主键,name,age是组合索引列组合索引使用的时候必须先匹配name,然后匹配age
聚簇索引非聚簇索引
这个索引的key值,可以是主键。如果没有主键,那么就是唯一键,如果没有唯一键,那么就是一个自生成的6字节的rowId
select * from table where name = \"zhangsan\"先根据name查询id,再根据id查询整行的记录,走了2棵B+树,此时这种现象叫做回表当根据普通索引查询到聚簇索引的key值之后,再根据key值在聚簇索引中获取所有行记录
联机分析处理
对海量历史数据进行分析,产生决策性的影响
联机事务处理
innodb
关系型数据库
mysql的索引系统
1. 局部性原理数据和程序都有聚集成群的倾向,,同时之前被访问过的数据很有可能再次被查询,空间局部性,时间局部性2. 磁盘预读内存跟磁盘在发生数据交互的时候,一般情况下有一个最小的逻辑单元,,称之为页,dataPage,页一般由操作系统决定是多大,一般是4k或者8k,而我们在进行数据交互的时候,可以取页的整数倍来进行读取,innodb存储引擎每次读取数据,读取16k
存储引擎
向innodb插入数据的时候,必须要包含一个索引的key值
server
Hive
mysqloracledb2...
数据仓库
只能有一个聚簇索引,但是有很多非聚簇索引
hash、二叉树、平衡二叉树AVL、红黑树、B树、B+树
要求在很短的时效内返回对应的结果
是否是聚簇索引取决于数据跟索引是否放在一起的!
1. mysql数据存储在什么地方?磁盘2. 查询数据比较慢,一般情况下卡在哪里?IO3. 去磁盘读取数据时,是用多少读多少吗?磁盘预读4. 索引存储在哪里?磁盘,查询数据的时候会优先将索引加载到内存中5. 索引在存储的时候需要什么信息?需要存储什么字段?key:实际数据行中存储的值文件地址offset:偏移量6. 这种格式的数据要使用什么样的数据结构来进行存储K-V哈希表、树(二叉树、红黑树、AVL树、B树、B+树)7. mysql的索引系统中不是按照刚刚说的格式存储的,为什么?
索引下推select * from table where name = ? and age = ?在没有索引下推之前:先根据name从存储引擎中获取符合规则的数据,然后在server层对age进行过滤有索引下推之后:根据name,age两个条件来从存储引擎中获取对应对数据
OLAP
OLTP
1. mysql表中有几个索引?至少一个2. 回表3. 索引覆盖4. 最左匹配5. 索引下推
client
0 条评论
回复 删除
下一页