数据库必学知识介绍

SQL语言

表的创建,删除,修改 链接方式的区别(内链接,左外连接,右外连接,全连接),连接的条件(natural,using,on) 嵌入子查询

索引方法

顺序索引(稠密索引和稀疏索引)

顺序索引的方式和操作系统内存管理的分页机制比较相似。稠密索引就是给每一个数据块建一个指针,把指针顺序摆放在一起就是索引了。稀疏索引,要求数据块本身是聚集堆放的,找到最大的小于要查询值的指针,然后循序遍历至找到目标为止。对于文件过大的时候,索引本身就很庞大,因此又建立了分级索引。

B树索引

B树索引,实际上是分为B树索引和B+树索引两种方法。MySQL用的B+树,MongoDB用的B树。关于B数和B+树如何索引,给大家安利两篇文章,写的通俗易懂。

漫画:什么是 B- 树?

漫画:什么是 B+ 树?

为什么选择B树?

(1) 对于数据库查找,索引的文件都存在磁盘上,磁盘IO的是非常消耗时间的,因此要减少磁盘IO的次数,而B数相比于二叉树,或者其变种AVL和RD-Tree的高度更低,因此磁盘IO的次数更好;

(2) B数是平衡树,查找,删除和插入是相对稳定的。

为什么选择B+树

(1) B+树所有的数据都保存在叶节点上,查找数据都必须到达叶子节点,因此其查找效率是恒定的;

(2) B+树的叶子节点有指针指向下一个叶子节点,形成了一个链表。而叶子节点间又是排序的,因此对于范围查找只需要先找到头的位置,然后遍历链表就可以了;

(3) B+树的非叶子节点不需要存储数据,只作为索引,因此B+数的阶数可以更高,故单个节点保存的数据个数会更多,使得B+树更加矮胖,因此磁盘IO的次数会更少。

哈希索引

散列索引就比较好理解了,实际就是在哈希表中保存文件的指针。所遇到的问题和哈希表中存在的问题是相同,如何选择好的哈希函数,数据过大后如果扩容,扩容的过程中有拷贝如何提高扩容的效率。当超过了装载因子后,可以新建一个更大的哈希表,但是并不一次性拷贝全部数据,而是当要插入或删除某个数据时,就将该桶中的所有数据拷贝。

mysql引擎对比”>MySQL引擎对比

(InnoDB,MyISAM)

k

数据库的锁

(行锁,表锁,页级锁,意向锁,读锁,写锁,悲观锁,乐观锁,以及加锁的select sql方式)

隔离级别

可串行化 可重复读 已提交读 未提交读

由上到下隔离级别依次降低。都不允许脏写

事务的ACID特性

事物:构成单一逻辑工作单元的操作集合 ACID特性

(1) 原子性:要么都发生,要么都不发生;

(2) 一致性:数据保存一致性,A和B转账,必须保证转账前后A和B账户的总额不变;

(3) 隔离性:多个事务并发执行,但是实际上必须是前后执行,不能交叉;

(4) 持久性:修改后永久有效

优化

(explain,慢查询,show profile)

分库分表,主从复制,读写分离。

一致性哈希

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐