【网站高性能 3】----B+树 vs LSM树

news/2024/5/22 1:17:28/文章来源:https://blog.csdn.net/u013067756/article/details/54346584


B+树  vs  LSM树

 

前言:

    在前面我们介绍到,性能优化之存储性能优化有将1)机械硬盘改成固态硬盘(2)磁盘阵列方式RAID  vs  HDFS ,今天小编和大家分享一个在存储过程,从数据结构方面来提升系统的性能,从数据结构B+树 vs  LSM树来对比了解。

 

什么是B+树?

  B+ 树是一种专门针对磁盘存储而优化的N叉排序树, 一树节点为单位存储在磁盘中。从根开始查找所需要数据所在的节点编号和磁盘位置,将其加载到内存张然后继续查找,直到找到所需要的数据。

 

 什么是LSM树?

     LSM树原理把一棵大树拆分成N棵小树,它首先写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做merge操作,合并成一棵大树,以优化读性能。

 

   特点:将对数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘


 

B+树原理:

    对于传统的极限磁盘有快速的顺序读写、慢速的随机读写的访问特性,这个特性对磁盘存储结构和算法的选择影响较大,为了改善数据访问特性,文件系统通常会对数据排序后进行存储,加快数据的检索速度,这就是要保证数据不断更新、插入、删除后依然有序,传统关系数据库的做法就是使用B+数:

                         


        目前数据库多是采用两级索引的B+数,最多三层。因此可能需要5次磁盘访问才能更新一次记录(3 次磁盘访问获得数据索引行及ID,然后1 数据库读取操作及一次数据文件写操作)。但是由于每次磁盘访问都是随机的,而传统机械磁盘在数据随机访问时性能较差,每次数据访问都需要多次访问磁盘,这就影响数据访问的性能,所以就有人改进了用NoSQL产品的LSM树如下:

 

                    

 

       LSM树可以看作是一个N阶合并树。数据写操作(包括插入、修改、删除)都在内存中进行,并且都会创建一个新记录(修改会记录新的数据值,而删除会记录一个删除标志),这些数据在内存中仍然还是一棵排序树,当数据量超过设定的内存l阂值后,会将这棵排序树和磁盘上最新的排序树合并。当这棵排序树的数据量也超过设定l阂值后,和磁盘_L下一级的排序树合并。合并过程中,会用最新更新的数据覆盖旧的数据(或者记录为不同版本)。

 

LSM树查找原理:

    在需要进行读操作时,LSM树总是从内存中的排序树开始搜索,如果没有找到,就从磁盘上的排序树顺序查找。

 

对比:

   1,在LSM树上进行一次数据更新不需要磁盘访问,在内存即可完成,速度远快于B+树。当数据访问以写操作为主,而读操作则集中在最近写入的数据上时,使用LSM树可以极大程度地减少磁盘的访问次数,加快访问速度。

 

2,当然凡事有利有弊,LSM树和B+树相比,LSM树牺牲了部分读性能,用来大幅提高写性能。

 

        作为存储结构,B+树不是关系数据库所独有的,NoSQL数据库也可以使用B+树。同理,关系数据库也可以使用LSM,而且随着SSD硬盘的日趋成熟及大容带持久存储的内存技术的出现,相信B+树这一“古老”的存储结构会再次焕发青春。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_722777.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网站高性能 4】----网站本身测试(一)

【网站高性能 4】----网站本身测试指标(一) 一个好的网站,我们总会有看起来舒服,浏览起来速度给力,这是我们最基本的评判,那么从专业的角度来说,到底有哪些指标呢? 今天小编就带你一…

【网站高性能 5】----网站本身测试(二)

【网站高性能 5】----网站本身测试(二) 前言: 一个网站好不好,从不同的人看起来是不同的。比如我现在是用户,评价一个网站好坏那就很简单,每一次的点击打开,页面反映的快慢就反应出网站的好坏&a…

【网站高性能 6】----大型网站架构演化知多少(一)

架构演化知多少(一) 前言: 在大型网站中的技术挑战主要是来自什么?主要是庞大的用户、高并发的访问和海量的数据,任何简单的业务一旦要处理数以P计的数据和数以亿计的用户,问题就会变的很棘手。那么大型网站…

【网站高性能 7】----大型网站架构演化知多少(二)

大型网站架构演化知多少(二) 前言: 在前一博文:大型网站架构演化知多少(一)中小编介绍了大型网站的架构发展历程,从初级的架构中只有一台服务器到增加服务器,再到使用缓存&am…

你不可不知的网站:stackoverflow

你不可不知道的网站:stackoverflow 序言: 这是个什么东西?” stackoverflow” 是个国外的论坛网站,计算机技术交流社区,基本上我们现在遇到的问题,在那里都可以找到相关的答案,我们中文遇到的问…

asp.net 客户 显示当前日期时间 服务器 日期时间,ASP.net网站上如何显示当前日期...

在之前的论坛文章中,我们介绍了一种通过JS调用的方式去显示网站当前日期的方法,这个方法适用于PHP,ASP网站,但对于ASP.NET的网站却无法正常的调用出当前的时间。对于ASP.NET网站,要想显示当前的时间,可以使…

服务器网站空间有大小吗,网站服务器和空间大小

网站服务器和空间大小 内容精选换一换GS_WLM_USER_RESOURCE_HISTORY系统表存储与用户使用资源相关的信息,仅在CN上有效。该系统表的每条记录都是对应时间点某用户的资源使用情况,包括:内存、CPU核数、存储空间、临时空间、算子落盘空间、逻辑…

网站漏洞扫描软件wrbscanner_【正方公司】软件安全测试工作介绍(工具篇)

点击蓝字关注我们软件安全一直以来是困扰所有用户和软件从业者的重要问题,正方软件人一直在教育软件安全方面不懈努力,不断引进各种技术手段和工具,提高产品的安全质量。在这里抛砖引玉,简要说说安全扫描工具和安全检测机制。首先…

php 契约编程,PHP契约式编程 第2页_Linux编程_Linux公社-Linux系统门户网站

契约式编程使用抽象类和接口实现契约式编程,这样编程可以使结构更清晰,扩展性高;特别适用于团队开发项目框架编写,比如可以通过定义一个数据库操作模型module,使所有需要操作数据库的module派生类都必须实现模型中的方…

网站的设计风格

这篇文章翻译至:http://www.webdesignfromscratch.com/current-style.cfm 这篇文章前几天看见Mars刊过,不过仅简单列出几个中文标题,对于广大网民来未免有些遗憾。今天终于见到来自淘宝UI团队的辛勤翻译稿,忙不择转过来&#x…

毛哥的快乐生活(26) Servlet版新闻网站之前端样式编码

工欲善其事必先利其器的VSCode 毛哥的原型图都已经画好了,第二天火急火燎的找到小范妹子,想再次目睹范妹子前端设计的风采。 这次毛哥好好瞄了一眼范妹子编码环境,果然是传说中的VSCode,写前端代码相当犀利效果那是顶呱呱。心里好一阵盘算回去自己也要入手最新的VScode用…

做网站用UTF-8还是GB2312?

经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312。 ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别&…

毛哥的快乐生活(28) Servlet版新闻网站之登录页实现

背景 毛哥决定先捋捋思路,每当毛哥想到【思路】这两个字,毛哥就是认真了。非常可怕,因为凡事就怕认真。凡事都怕,你怕不怕? 反正毛哥怕了,嘿,开心的怕。 实际上做到现在,核心功能也就一个Servlet,然后通过识别用户请求里面的method参数,向浏览器返回不同内容。 当…

.NET程序员必须知道的八个网站

当前全球有数百万的开发人员在使用微软的.NET技术。如果你是其中之一,或者想要成为其中之一的话,我下面将要列出的每一个站点都应该是你的最爱,都应该收藏到书签中去。 对于不熟悉.NET技术的朋友,需要说明一下,.NET提供…

JSP+MySQL校园新闻网站(2)–开发环境搭建

点此查看系列文章目录、源代码 本文目录0. 前言1. 背景2. JDK安装3. JDK环境变量配置4. Tomcat下载5. Eclipse下载6. Eclipse配置7. MySQL下载安装8. Navicat下载安装9. 总结0. 前言 系列文章目录、演示网站、源码参见:项目实战系列文章 1. 背景 上一篇讲了需求分…

JSP+MySQL校园新闻网站(3)–数据库与java项目创建

点此查看系列文章目录、源代码 本文目录0. 前言1. 新建数据库2. 新建项目3. 导入jar包4. 准备就绪0. 前言 系列文章目录、演示网站、源码参见:项目实战系列文章 1. 新建数据库 使用Navicat新建数据库shcoolnews。 为了保存管理员用户名、密码,新建us…

JSP+MySQL校园新闻网站(4)–新闻浏览功能开发

点此查看系列文章目录、源代码 本文目录0. 前言1. 任务2. 功能3. 开发3.1 新建view.jsp页面3.2 修改页面编码和标题3.3 添加JDBC数据库操作支持3.4 添加顶部标题栏3.5 为标题栏添加样式3.6 添加新闻表格3.7 为表格添加样式3.8 从数据库加载表格内容3.9 插入测试数据&#xff0c…

JSP+MySQL校园新闻网站(5)–新闻查看功能开发

点此查看系列文章目录、源代码 本文目录0. 前言1. 任务2. 具体功能3. 开发3.1 查看原来的跳转链接3.2 新建article.jsp页面3.3 根据id从数据库查询并显示3.4 为新闻标题添加样式4. 总结0. 前言 系列文章目录、演示网站、源码参见:项目实战系列文章 1. 任务 本篇来…

JSP+MySQL校园新闻网站(6)–管理员登录功能开发

点此查看系列文章目录、源代码 本文目录0. 前言1. 任务2. 具体功能3. 开发流程3.1 点击登录按钮3.2 添加登录页面3.3 判断登录状态3.4 开发错误信息页4. 测试5. 小结0. 前言 系列文章目录、演示网站、源码参见:项目实战系列文章 1. 任务 之前已经实现了新闻列表的…

10款精选的用于构建良好易用性网站的jQuery插件

这篇随笔收集了10款非常给力的jquery 插件,帮助你构建易用性良好的网站,希望对你有用! Embedded help system 看过该插件demo后,感叹道,真是太棒了! 点demo里的How to下面的几个链接看看效果:) Embedded …