欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库必学知识介绍

程序员文章站 2022-12-10 17:33:28
SQL语言 表的创建,删除,修改 链接方式的区别(内链接,左外连接,右外连接,全连接),连接的条件(natural,using,on) 嵌入子查询 索引方法 顺序索引(稠密索...

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的次数会更少。

哈希索引

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

(InnoDB,MyISAM)

k

数据库的锁

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

隔离级别

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

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

事务的ACID特性

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

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

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

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

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

优化

(explain,慢查询,show profile)

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

一致性哈希