什么是mysql软件_mysql可视化工具哪个好

数据库基本原理

什么是mysql软件_mysql可视化工具哪个好

我对DB的理解

一:数据库的组成:存储 + 实例

不必多说,数据当然需要存储;存储了还不够,显然需要提供程序对存储的操作进行封装,对外提供增删改查的API,即实例。

一个存储,可以对应多个实例,这将提高这个存储的负载能力以及高可用;多个存储可以分布在不同的机房、地域,将实现容灾。

二:按Block or Page读取数据

用大腿想也知道,数据库不可能按行读取数据(Why? ? ^_^)。实质上,数据库,如Oracle/MySQL,都是基于固定大小(比如16K)的物理块(Block or Page,我这里就不区分统一称为Block)来实现调度和管理的。要知道Block是数据库的概念,如何对应到文件系统呢?显然需要指出“这个Block的地址在哪里”,当查找到地址后,读取固定大小的数据就相当于完成了Block的读取了。

数据库很聪明的,它不会仅仅只读取需要读取的Block,它还会替我们把附近的Block块都读取加载至内存。实际上,这是为了减少IO次数,提高命中率。事实上,一个Block块的附近Block也是热点数据,这种处理方式很有必要!

三:磁盘IO是数据库的能瓶颈

毫无疑问,数据在磁盘上,少不了磁盘IO。什么磁头旋转,定位磁道,寻址的过程,就不说了,我们是程序员,也管不了这些。但是这个过程确实是非常耗时的,和内存读取不是一个数量级,所以后来出现了很多方式来减少IO,提升数据库能。

比如,增加内存,让数据库把数据更多的加载至内存。内存虽好,但也不能滥用,为什么这么说呢?假设数据库中有100G数据,如果都加载至内存,也就说数据库要管理100G磁盘数据+100G内存数据,你说累不累?(数据库要处理磁盘和内存的映射关系,数据的同步,还要对内存数据进行清理,如果涉及数据库事务,又是一系列复杂操作……)不过这里需要指出的是,为了加快内存查找速度,数据库一般对内存进行HASH存放。

如,利用索引,索引相比内存,是一个价比非常高的东西,后文详细介绍MySQL的索引原理。

比如,利用能更好的磁盘…(和咱们就没关系呢)

四,提出一些问题思考下:

为什么我们说利用delete删除一个表的数据较trancate一个表要慢?

【一个按行查找删除,多费劲;一个基于Block的体系结构删除】

为什么我们说要小表驱动大表?

【小表驱动大表会快?什么鬼?MN和NM不是一样的么?有鬼的地方,就有索引!】

探索MySQL索引背后的原理

对于绝大数的应用系统,读写比例在10:1,甚至100:1,而且insert/update很难出现能问题,遇到多的,棘手的就是select了,select优化是重中之重,显然少不了索引!

说起MySQL的索引,我们会冒出很多这些东西:BTree索引/B+Tree索引/Hash索引/聚集索引/非聚集索引…这么多,晕头!

索引到底是什么,想解决什么问题?

老生常谈了,官网说MySQL索引是一种数据结构,索引的目的就是为了提高查询效率。

说白了,不使用索引的话,磁盘IO次数比较多!要想减少磁盘IO次数,怎么办?

我们想通过不断缩小想要获取的数据的范围来筛选出终想要的结果,把每次查找数据的磁盘IO次数控制在一个很小的数量级,是常数数量级。

为了应对上述问题,B+Tree索引出来了!

Hello,B+Tree

在MySQL中,不同存储引擎对索引的实现方式是不同的,这里将重点分析MyISAM和Innodb。

MyISAM引擎的B+Tree索引结构

我们知道对于MyISAM引擎而言,数据文件和索引文件是分离的。从图中也可以看出,通过索引查找到后,就得到了数据的物理地址,然后根据地址定位数据文件中的记录即可。这种方式也叫\”非聚集索引\”。

而对于Innodb引擎而言,数据文件本身是索引文件!通俗点说,叶子节点上,MyISAM存储的是记录的物理地址,而Innodb上存储的是数据内容,这种方式即\”聚集索引\”。

另外一点需要注意的是,对于Innodb而言,主键索引中叶子节点存储的是数据内容,而普通索引的叶子节点中存储的是主键值!也就是说,对于Innodb的普通索引字段查找,先通过普通索引的B+Tree查找到主键后,然后通过主键索引的B+Tree进行查找。从这里你可以看出,对于Innodb而言,主键的建立非常重要!

而对于MyISAM而言,主键索引和普通索引仅仅的区别在于主键只需要查找到一条记录即可停止,而普通索引允许重复,找到一条记录后需要继续查找,在结构上没有区别,如上图所示。

深入B+Tree

提几个问题:

为什么B+Tree把真实的数据放到叶子节点,而不是内层节点?

为什么我们说索引字段要尽可能短,是单调递增的?

为什么复合索引存在左匹配原则?

范围查询(>,<,between,like)对左匹配有什么影响?

关于B+Tree的一些数学理论,咱们就不玩了,至少一点可以肯定的是:数据表的数据量N=F(树的高度h,每个Block存储的索引的个数m)。在N一定的情况下,索引字段越小,那么m会越大,这意味着h将越小!树越低,当然查找的更快!

如果内层节点存放真实的数据,显然m会变小,树将变高。

在实际应用中,我们应该尽可能采用单调递增的字段作为主键,一方面不会使得索引的数据结构变大,减小了索引占用的空间;另一方面也不会频繁的分裂B+Tree,使得效率下降。

比如复合索引(name,age,sex),B+Tree会优先比较name来确定下一步的搜索方向。如果突然来了个(age,sex),根本上就无从下手。这也是符合常理的,对于一本书,我们说“找到几章几节的XXX”,从没有听说过“找到几节的XXX”!这是复合索引的重要特,即左匹配特。

假设存在复合索引(name,age,sex),我们在进行select的时候,并没有按照这个顺序进行,而是sex = \’man\’ and name = \’zfz\’ and age = 27,是否会使用索引呢?数据库是很聪明的,在SQL优化的时候,会自动帮助我们调整!但是如果缺失了复合索引的一列,数据库也将无能为力呢。

对于左匹配,MySQL会一直向右匹配直到遇到范围查询就停止匹配。什么意思?比如复合索引(name,age,sex),对于name = \’zhangfengzhe\’ and age > 26 and sex = \’man\’,实际上只利用到了复合索引的name列。

想利用索引,就得“干净”

什么叫“干净”?就是不要让索引参与计算!比如在索引上应用函数,很可能导致索引失效。为什么呢?

其实不用想,B+Tree上存储的是数据,要比较的话,需要把所有的数据都应用上函数,显然成本太大。

想建立索引,看看区分度

索引虽然物美价廉,但是也别乱来。count(distinct col) / count(*)可以算一下col的区分度,显然对于主键而言,就是1。区分度太低的话,可以考虑下,是否还有必要建立索引呢?

Hash索引

这里并不是要深入分析Hash索引,而是要说明一下Hash的思想真是无处不在!

在MySQL的Memory存储引擎中,存在hash函数,给一个key,通过hash函数进行计算得到地址,所以通常情况下,hash索引查找,会非常快,O(1)的速度。但是也存在hash冲突,和HashMap一样,通过单链表的形式解决。

思考下,hash索引是否支持范围查询呢?

显然是不支持的,它只能给一个KEY去查找。就如同HashMap一样,查找key包含\”zhangfengzhe\”的,会很快么?

SQL优化神器:explain

SQL优化的场景很多,网上的技巧也很多,完全记不住!

要想彻底解决这个问题,我想只有把索引背后的数据结构和原理做适当的理解,遇到书写SQL或者SQL慢查询的时候,我们有基础去分析,再利用好explain工具去验证,就应该问题不大呢。

explain查询的结果,可以告诉你哪些索引正在被使用,表是如何被扫描的等等。这里我将演示个Demo。

数据表student:

注意复合索引(age,address)

符合左前缀匹配

复合索引失效

OK,到这里,准备结束了,查询容易,优化不易,且写且珍惜!

关注作者私信回复:“ 架构 ” 就可以免费获取 Ja架构学习资料(有Spring,MyBatis,Netty源码分析,高并发、高能、分布式、微服务架构的原理,JVM能优化等…)这些成为架构师必备的知识体系,及架构思维导图!

版权声明:《什么是mysql软件_mysql可视化工具哪个好》文章主要来源于网络,不代表本网站立场,不承担相关法律责任,如涉及版权问题,请发送邮件至[dcseo8@163 。com]举报,我们会在第一时间进行处理。本文文章链接:https://www.dcseo.cn/39294.html
(0)

相关推荐

  • 芯片检测机构(深圳芯片三方检测机构)

    读创/深圳商报记者 陈姝 12月9日,公认的测试、检验和认证机构SGS在深圳举行了半导体及可靠测试实验室升级开业典礼,升级后,实验室服务领域向汽车电子产品领域延伸。SGS中国区总裁…

    2022年5月27日
    47
  • 期间费用包括哪些费用(期间费用包括什么内容)

    在做账的时候,除了期初费用、期末费用外,还有期间费用。期间费用比较多跟复杂,也是企业在一个期里面的支出反应等,很多人对于期间费用的具体包括的种类不清楚,期间费用都指哪些? 期间费用…

    2022年5月10日
    53
  • ps软件有哪些主要功能(ps常用功能)

    Adobe Photoshop,简称“PS”,主要处理由像素所构成的数字图像,Photoshop拥有强大的图片处理工具和绘图工具,可以有效地进行图片编辑工作。在版本的Photosh…

    2022年5月27日
    75
  • google校内招聘信息(2022年谷歌中国招聘官网)

    本轮春招劳模是谁?别问,问就是小动作频频的谷歌,俗称“闷声发大财”!加之近期岗位多多,导致NG今年死盯谷歌,但结局嘛~咱们放到后面再细说~ 子凭母贵,谷歌今年来财了 近北美科技圈正…

    2022年4月19日
    259
  • 饥荒模组怎么用,steam饥荒模组怎么用

    饥荒作为一款风靡世界的游戏,让很多玩家去废寝忘食地游玩,它的游戏模式虽然简单,但在众多mod的加持下,催生出很多形态各异的玩法。 但对于新手而言,各种mod的玩法还是有些遥远,对他…

    2022年5月27日
    45
  • 10毫米等于多少厘米(10mm等于多少cm)

    10毫米等于1厘米。单位的换算为:1米=10分米;1分米=10厘米;1厘米=10毫米;1米=10分分=100厘米=1000毫米。单位制中,长度的标准单位是“米”,用符号“m”表示,…

    2022年5月23日
    15
  • 表格软件excel如何使用,制表软件 excel

    日常工作中Excel算是大家用的多的一个办公软件,使用办公软件拿讲究多的就是速度、效率。今天我们就来学习一下,Excel中常见的7个快捷操起技巧,以便快速提升大家的工作效率。 技巧…

    2022年5月27日
    42
  • 游戏加速器哪个好电脑(免费外网加速器推荐)

    每到假期,肯定很多小伙伴都会选择宅在家里,打打游戏,放松自己, 但打游戏,烦的就是因为卡顿或者延迟的原因输了游戏。 今天小雷就给小伙伴们带来了这款免费的 PC 游戏加速器,无论是用…

    2022年4月10日
    428
  • 壳牌是哪个国家的品牌(中国壳牌公司简介)

    壳牌机油是荷兰品牌,作为壳美嘉三大润滑油巨头之一,壳牌的认可度在国内还是有口皆碑的,3+类基础油(GTL天然气基础油)主打清洁和静音,缺点就是动力一般。 壳牌机油旗下的产品型号也是…

    2022年5月23日
    63
  • 烤箱哪个牌子好(家用烤箱品牌)

    家用电烤箱排行榜怎么样?电烤箱有众多品牌,应该如何选择还真的是一个非常头痛的问题,这可怎么办呢?电烤箱品牌排行不仅仅是看电烤箱的价格,质量,以及好评度;还要从电烤箱的销量进行直观的…

    2022年5月25日
    51