mysql B+树中为什么同层的非叶子节点所在的页也使用双向链表连接?
一、mysql B+树中同层的非叶子节点所在的页也使用双向链表连接的原因
这样设计是为了提高查询效率。在查询过程中,当查询到某个非叶子节点时,需要继续向下查找。同一页中的节点被连接起来,可以缩短查找路径,从而提高查询效率。
同时,由于非叶子节点也被存储在数据页中,当需要访问某个叶子节点时,可以通过直接访问该页在内存中的地址来提高访问速度。如果没有使用双向链表连接同层级的非叶子节点,就需要进行繁琐的磁盘I/O操作,会降低访问速度。
二、mysql概述
1、简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是较好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
2、应用环境
与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。
Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。
3、系统特性
MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和 Tcl 等。支持多线程,充分利用 CPU 资源。优化的 SQL查询算法,有效地提高查询速度。既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。提供用于管理、检查、优化数据库操作的管理工具。支持大型的数据库。可以处理拥有上千万条记录的大型数据库。支持多种存储引擎。MySQL 是开源的,所以你不需要支付额外的费用。MySQL 使用标准的 SQL数据语言形式。MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。三、双向链表简介
1、定义
双向链表(Double Linked List)是一种更复杂的链表,每个节点除了包含元素域,还包含两个链接:一个指向前一个节点,当此节点为名列前茅个节点时,指向空值;另一个指向下一个节点,当此节点为最后一个节点时,指向空值。
2、基本操作
is_empty() 判断链表是否为空length 链表长度travel() 遍历整个链表,打印元素add(item) 在链表头部添加元素append(item) 在链表尾部添加元素insert(pos, item) 在指定位置插入元素remove(item) 删除元素clear() 清空链表is_contain(item) 判断元素是否存在3、创建双向链表结点
实现代码:
//创建双向链表结点Node* create_node(int data){ Node* node = (Node*)malloc(sizeof(Node));//申请内存 node->data = data; node->prev = NULL; node->next = NULL; return node;}
延伸阅读1:B+树结构定义
m阶B+树的结构定义如下:
每个节点非常多有m个子节点。除根节点外,每个节点至少有m/2个子节点,注意如果结果除不尽,就向上取整,比如5/2=3。根节点要么是空,要么是独根,否则至少有2个子节点。有k个子节点的节点必有k个关键码。叶节点的高度一致。
相关推荐HOT
更多>>
URL与URI有什么区别?
一、URL与URI的区别1、定义不同URI是Uniform Resource Identifier(统一资源标识符)的缩写,是一种用于标识某个资源的字符串标准,包括URL和UR...详情>>
2023-10-14 22:39:25
Web逆向、软件逆向、安卓逆向、APP逆向是什么?
一、Web逆向、软件逆向、安卓逆向、APP逆向是什么Web逆向、软件逆向、安卓逆向和APP逆向都是指对不同类型的软件或应用进行反向工程,从而了解其...详情>>
2023-10-14 19:55:32
员工管理系统有什么功能?
一、员工档案管理员工档案是企业管理的基础,员工管理系统可以集成各种员工信息,包括个人基本信息、工作经历、学历证书、薪资福利、家庭成员等...详情>>
2023-10-14 18:23:57
复杂地图找最短路径算法是什么?
一、复杂地图找最短路径算法是什么1、Dijkstra 算法Dijkstra 算法,是由荷兰计算机科学家 Edsger Wybe Dijkstra 在1956年发现的算法,戴克斯特...详情>>
2023-10-14 13:46:34热门推荐
技术干货






