0%

avl树是自带有平衡条件的二叉树,平常的二叉树在插入数据的很可能造成树的左子树或者右子树过长。造成查询是线性。avl要保持树的深度是logN。最简单的想法是要求左右紫薯具有相同的高度。一颗avl树是其每个节点的左子树和右子树的高度最多差1的二叉查找树。

当我们插入的时候必须保证avl树的特性,即是左右子树的高度差最多是1,分析插入的特性我们发现有以下四种情况

阅读全文 »

跳跃表:是基于链表来是实现的。

我们可以先看看单链表的数据的结构。如下图

在这样一个链表中,如果我们要查找某个数据,那么需要从头开始逐个进行比较,直到找到包含数据的那个节点,或者找到第一个比给定数据大的节点为止(没找到)。也就是说,时间复杂度为O(n)。同样,当我们要插入新数据的时候,也要经历同样的查找过程,从而确定插入位置。假如我们每相邻两个节点增加一个指针,让指针指向下下个节点,如下图:

阅读全文 »

锁的作用
​ 锁是为了控制对共享资源的并发访问和操作。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。
两种锁的概念:

  • Latch:闩锁,这是一种轻量级锁,用于线程中的临界资源的操作【例如,操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素,为了保证一致性,必须有锁的介入】。锁定的时间非常短,而且没有死锁检测机制。

  • lock:用于数据事务的锁,并且在一般在commit和rollback后释放。有死锁检测机制。

    阅读全文 »

联合索引的多字段排序的时候,是不可以夸字段排序,首字段也不能取范围的值。

阅读全文 »

explain关键字可以模拟MySQL优化器执行SQL语句,可以很好的分析SQL语句或表结构的性能瓶颈。
explain的执行的结果:
explain

阅读全文 »