知识点
面试被问的
-
数据库索引b+数,hash
B+数是一个平衡大多叉树,搜索效率基本相当
哈希索引 采用一定的哈希算法,把键值换成新的哈希值,检索时不需要类似B+
1、所有的非叶子节点只存储关键字信息。
2、所有卫星数据(具体数据)都存在叶子结点中。
3、所有的叶子结点中包含了全部元素的信息。
4、所有叶子节点之间都有一个链指针。 -
数据库语言(DML、DDL、DCL、DQL、TCL)
DDL 数据库定义语言 create(创建表结构) drop(删除表内容和定义) alter (修改表结构)
DML 数据库操作语言 insert update delete(删除数据)
DQL 数据库查询语言 select
DCL 数据库控制语言 grant revoke if else
TCL 事务控制 COMMIT Rollback -
行级锁 表级锁,乐观锁
表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低
行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高
乐观锁: 是用版本号控制,认为并发量少 -
存储过程
存储过程类型分为存储过程 (PROCEDURE) 和存储函数 (FUNCTION)
一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
一些关键字
1) delimiter// 识别创建语句
2) PROCEDURE 存储过程
3) call 调用
4) begin开始,以end结束
5) IN输入参数
6)out 输出参数
7) inout 输入输出参数 -
drop truncate 和delete 区别
drop 1 | truncate 2 | delete |
---|---|---|
DDL | DDL | DML |
删除数据+表结构 | 删除数据 | 删除数据 |
不记录事务日志 | 不记录事务日志 | 操作计入事务日志(rollback) |
执行速度> | 执行速度> | 执行速度> |
范围Table | 范围Table | 范围Table,view |
- 为什么说B+Tree这个结构能对查询加速?全表扫描是怎么做的?走索引是怎么做的?
1)B+Three 磁盘读写代价更低,内部节没有指向具体信息的指针。因此内部节点比b-three小,同一内部节点信息存放磁盘快,容纳关键字多,一次从内存读出关键字多,减少IO读写次数
2) B-Three 遍历效率低下的问题。B+Three 只需要遍历所有叶子节点就可以实现整棵树的遍历,范围查找B+Three 支持的很好
3)所谓索引,即快速的定位和查找,那么索引的组织结构减少查找过程的磁盘IO的存取次数
4) 局部性原理,磁盘预读。