数据库知识

-- 考点思维导图

 

-- 索引模块

为什么要使用索引

索引是通过事先排好序,在查找时应用二分查找等高效算法,一般顺序查找复杂度为o(n),二分查找复杂度为o(log2n)。

例:表中有一百万条数据,需要在其中寻找一条特定id的数据,如果顺序查找,平均每条查找50万条数据。使用二分法,最多不超过20次就能找到,两者效率相差2.5万倍

 

什么样的信息能成为索引

1.主键、唯一键以及普通键等

 

索引的数据结构

1.生成索引,建立二叉查找树进行二分查找

2.生成索引,建立B-Tree进行查找

3.生成索引,建立B+-Tree结构进行查找

4.生成索引,建立Hash结构进行查找

 

O(1), O(n), O(logn), O(nlogn) 的区别

 

如何定位并优化慢sql

1.根据慢日志定位慢sql

2.使用explain等工具分析sql

3.修改sql或者尽量走索引

 

show variables like '%quer%';

show status like '%slow_queries%';

set global slow_query_log = on;

set global long_query_time = 1;

select count(id) from school;

explain select t.SchoolName from school t;

type:如果是index/all表示全表扫描,需要优化

extra:using filesort、using temporary表示不能使用索引,效率会受到重大影响,需要优化

 

联合索引的最左匹配原则

1.最左匹配原则,mysql会一直向右匹配知道遇到范围查询(>、<、between、like)就停止匹配。

 

锁模块

1.myISAM默认用的表级锁,不支持行级锁

2.InnoDB默认用的是行级锁,也支持表级锁

 

InnoDB支持事务的同时,也相比myISAM引擎带来了,更大的开销。InnoDB有且仅有一个聚集索引,数据文件是和索引绑在一起的,必须要有主键。通过索引效率很高,但是需要查两次,先查到主键,在通过主键查询到数据。

myISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是分离的,因此myISAM在纯检索系统中,也就是增删改很少的系统中,性能要好于InnoDB。

 

myISAM适合的场景

1.频繁执行全表count语句

2.对数据增删改的频率不高,查询非常频繁的

3.没有事务

 

InnoDB适合的场景

1.数据增删改查都相当频繁

2.可靠性要求比较高,要求支持事务

 

数据库锁的分类

1.按表的粒度划分,可分为表级锁、行级锁、页级锁

2.按锁级别划分,可分为共享锁、排它锁

3.按加锁方式划分,可分为自动锁、显示锁

4.按操作划分,可分为DML锁、DDL锁

5.按使用方式划分,可分为乐观锁、悲观锁

 

数据库事物的四大特性

1.原子性(atomic)事务包含的所有操作,全部执行或者全部失败回滚

2.一致性(Consistency)多个事务操作应满足完整性

3.隔离性(Isolation)多个事务执行,不应该影响其他事物的执行

4.持久性(Durability)一个事务一旦提交,他对数据库的操作及修改应该永久保存在数据库中

 

事务的隔离界别

select @@tx_isolation;

Read uncommitted

Read committed

Repeatable read

Serializable 

1.更新丢失:mysql所有事务隔离级别在数据库层面上均可避免

2.脏读:read committed事务隔离级别以上可避免

3.不可重复读:repeatable read 事务隔离级别以上可避免

4.幻读:serializable事务隔离级别可避免

 

语法部分

1.group by:分组统计

2.having

3.统计相关:count、sum、max、min、avg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值