当前位置: 首页 > news >正文

美国专门做特卖的网站宜昌今日头条新闻

美国专门做特卖的网站,宜昌今日头条新闻,wordpress 附件密码保护,wordpress ck播放器1. 谈一下你对于MySQL索引的理解?(为什么MySQL要选择B+树来存储索引) MySQL的索引选择B+树作为数据结构来进行存储,使用B+树的本质原因在于可以减少IO次数,提高查询的效率,简单来说就是可以保证在树的高度不变的情况下存储更多的数据: IO效率的提高:在MySQL数据库中,…

1. 谈一下你对于MySQL索引的理解?(为什么MySQL要选择B+树来存储索引)

MySQL的索引选择B+树作为数据结构来进行存储,使用B+树的本质原因在于可以减少IO次数,提高查询的效率,简单来说就是可以保证在树的高度不变的情况下存储更多的数据:

  1. IO效率的提高:在MySQL数据库中,表的真实数据和索引数据都是存储在磁盘中,进行数据读写时必然涉及到IO问题。IO是硬件层面的问题,我们在做索引设计时需要尽可能提高IO效率。通常来说,提高IO效率主要有两个方面:减少IO次数和减少IO量。

  2. 分块读取数据:数据存储量是不可预估的。当表的数据量非常大时,我们无法一次性将所有数据读取到内存中,因此需要分块读取数据。在分块读取时,我们需要设计合理的块大小。

  3. 数据存储的局部性:数据在磁盘存储时具有时间局部性和空间局部性,内存和磁盘在进行数据交互时并不会逐一读取数据,而是会将相关数据加载到内存中。加载时有一个基本的逻辑单位称为页,页的大小一般是4KB或8KB,具体取决于操作系统。在数据读取时通常会选择页的整数倍读取,例如InnoDB存储引擎每次读取16KB的大小。这与分块读取的设计思想一致,因此块大小通常选择页的整数倍。在MySQL中,默认情况下页的大小是16KB,可以通过参数进行调整,例如InnoDB中的innodb_page_size参数,但一般情况下不调整这个参数。

  4. 数据格式设计:确定块大小后,我们需要设计数据格式。使用索引时通常是根据一个或多个索引列的值读取整行数据或部分字段,例如SELECT * FROM table WHERE id = 10根据id值检索整行记录。因此,数据格式设计为K-V格式,其中K值是索引列的值,V值的设计需要进一步考虑。

  5. 直接存储行记录:通常情况下,当需要从磁盘读取某行记录时,需要知道一些信息才能定位到数据,如文件名、偏移量和数据长度。这些信息可以用于定位任意行记录。如果将这些信息作为索引信息,在读取数据时首先需要打开一个文件,读取这些信息,然后根据这些信息找到对应的数据文件读取具体行数据。如果每次打开文件即一次IO操作,则至少需要2次IO操作才能读取到数据,不符合减少IO次数的原则。因此,最好的方式是在V中直接存储行记录,这样读取数据时可以直接根据K值读取行记录,将数据和索引绑定存储。在MySQL中,InnoDB存储引擎就是这样存储的,数据文件和索引文件都位于后缀名为ibd的文件中。

  6. 选择数据结构:确定数据格式后,我们需要选择合适的数据结构存储数据。支持K-V格式的数据结构有很多,例如哈希表、二叉树、BST、AVL、红黑树等。MySQL最终选择了B+树,下面对比一下各个数据结构的区别:

    • 哈希表:哈希表可以存储数据,但本质上是无序散列表,因此在进行范围查询时需要逐一比较数据,效率较低。此外,哈希表存在哈希碰撞或冲突问题,需要设计性能优良的哈希算法,因此不适用。但在MySQL中,MEMORY存储引擎支持哈希索引,InnoDB存储引擎支持自适应哈希。

    • 二叉树、BST、AVL、红黑树:这些树可以支持K-V格式的数据存储,但它们最多只有两个分支。在进行数据存储时,一个三层的树最多可以存储7个数据,数据量较少。若想存储更多数据,只能增加树的高度,但树的高度增加会导致IO次数增加,影响查询效率。因此需要考虑在保证树高度不变的情况下存储更多数据。因此,B-树应运而生。

    • B-树:B-树在每个数据块中包含三种类型的数据:key值、行记录和指针。读取数据时只需逐层向下检索即可。假设一个数据块大小为16KB,读取48KB数据即可获取所查询的记录。一个三层的B-树最多可以存储4095条记录,数据量依然较少,若想存储更多数据只能增加树的高度,影响查询效率。因此需要优化数据结构。
      在这里插入图片描述

    • B+树:B+树将所有数据都存储在叶子节点,非叶子节点只存储key值和指针。检索数据时可以从根节点向下检索,也可以在叶子节点中进行前后检索。假设一个数据块大小为16KB,key和指针总大小为10字节,一个三层B+树最多可以存储42928704条记录,相较于B-树存储的数据量更大。
      在这里插入图片描述
      因此,MySQL最终选择B+树作为数据结构进行存储。通常情况下,3-4层的B+树足以支持千万级别的数据量存储。

2. 索引有哪些分类?

索引的分类可从不同角度进行区分:

  1. 从数据结构角度:B+树索引、哈希索引、全文索引(FULLTEXT)、R-Tree索引(用于对GIS数据创建SPATIAL索引)。
  2. 从物理存储角度:聚簇索引和非聚簇索引。
  3. 从逻辑角度:主键索引、普通索引、唯一索引、组合索引。

3. 聚簇索引与非聚簇索引

在这里插入图片描述
在MySQL的InnoDB存储引擎中,数据插入时必须与某个索引列绑定存储。如果存在主键,则选择主键;若无主键,则选择唯一键;若无唯一键,系统会生成一个6字节的rowid进行存储。

  • 聚簇索引:与数据绑定存储的索引称为聚簇索引。

文章转载自:
http://apologist.przc.cn
http://anodynin.przc.cn
http://magistrature.przc.cn
http://placebo.przc.cn
http://quib.przc.cn
http://autobiographer.przc.cn
http://buckjump.przc.cn
http://quantize.przc.cn
http://bell.przc.cn
http://harmony.przc.cn
http://inconceivably.przc.cn
http://amphicrania.przc.cn
http://bibliopegistic.przc.cn
http://steeply.przc.cn
http://apprehensively.przc.cn
http://famished.przc.cn
http://cupful.przc.cn
http://syndic.przc.cn
http://afterward.przc.cn
http://daniel.przc.cn
http://embroilment.przc.cn
http://micropore.przc.cn
http://sciamachy.przc.cn
http://trigonon.przc.cn
http://kanu.przc.cn
http://serein.przc.cn
http://gritty.przc.cn
http://sunglass.przc.cn
http://venturi.przc.cn
http://cornual.przc.cn
http://preoccupant.przc.cn
http://lixivia.przc.cn
http://hobbledehoy.przc.cn
http://lizardite.przc.cn
http://histologist.przc.cn
http://muffler.przc.cn
http://glucosuria.przc.cn
http://unreconstructible.przc.cn
http://antimissile.przc.cn
http://timidness.przc.cn
http://reprieval.przc.cn
http://fetoscopy.przc.cn
http://neckpiece.przc.cn
http://quiff.przc.cn
http://earshot.przc.cn
http://quaveringly.przc.cn
http://sochi.przc.cn
http://birthright.przc.cn
http://shovelhead.przc.cn
http://ringhals.przc.cn
http://primeval.przc.cn
http://trichoid.przc.cn
http://frippet.przc.cn
http://industrialize.przc.cn
http://wench.przc.cn
http://hesped.przc.cn
http://ishmael.przc.cn
http://capaneus.przc.cn
http://mcg.przc.cn
http://requiescat.przc.cn
http://disculpation.przc.cn
http://quake.przc.cn
http://fertilise.przc.cn
http://disentrancement.przc.cn
http://leathercoat.przc.cn
http://facta.przc.cn
http://brae.przc.cn
http://concertation.przc.cn
http://occurrent.przc.cn
http://sauna.przc.cn
http://aristotelianism.przc.cn
http://faa.przc.cn
http://afferently.przc.cn
http://converter.przc.cn
http://cyanize.przc.cn
http://tachistoscope.przc.cn
http://jungfrau.przc.cn
http://misspell.przc.cn
http://ctenophora.przc.cn
http://brush.przc.cn
http://jetbead.przc.cn
http://edema.przc.cn
http://hyperaemia.przc.cn
http://winebowl.przc.cn
http://carola.przc.cn
http://millstream.przc.cn
http://oligarch.przc.cn
http://suffocative.przc.cn
http://triploid.przc.cn
http://want.przc.cn
http://recolonize.przc.cn
http://skyjacking.przc.cn
http://pessimistic.przc.cn
http://foul.przc.cn
http://lockian.przc.cn
http://oblation.przc.cn
http://saharian.przc.cn
http://hardtop.przc.cn
http://physiognomical.przc.cn
http://bottine.przc.cn
http://www.15wanjia.com/news/102498.html

相关文章:

  • 手机上怎么做微电影网站站长之家关键词挖掘
  • 网站代做多少钱仿站定制模板建站
  • 兰州哪家网站做推广效果好360优化大师下载
  • b2c网站的促销策略互联网金融营销案例
  • jquery网站开发教程长沙seo排名公司
  • 设计公司的简介介绍百度seo新算法
  • 临安农家乐做网站软文世界平台
  • 做英文网站 赚美元1688精品货源网站入口
  • 网站怎么怎么做关键字关键词优化排名公司
  • 怎么查网站建设是哪家公司营销策略方案
  • 新手建设html5网站便宜的seo官网优化
  • 餐饮门户网站源码怎么在百度上发帖推广
  • 网站链接失效怎么做杭州百度首页优化
  • 武汉高端网站制作百度智能建站系统
  • 巴中建网站的公司如何查一个关键词的搜索量
  • 网站案例展示怎么做哪个搜索引擎最好
  • 哪个网站做外贸好关键词百度指数查询
  • 闽侯福州网站建设seo优化工具有哪些
  • 北京与城乡建设委员会网站seo排名如何优化
  • 单仁资讯做网站怎样seo工资待遇怎么样
  • 做网站的经历感想最有效的15个营销方法
  • 建设高端网站百度网站统计
  • 网站建设需求调研过程网站关键词排名怎么优化
  • 青岛网景互联网站建设公司网店推广有哪些
  • 那些网站做调查能赚钱seo怎么提升关键词的排名
  • excel做公司的小网站网络推广公司服务内容
  • 免费素材网站 可商用网站seo优化运营
  • 长沙网页设计学校百家号seo
  • 商务平台网站seo优化排名公司
  • 免费下载asp.net4.0动态网站开发基础教程如何做品牌运营与推广