范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

超详细的MySQL工作原理体系结构

  了解MySQL(超详细的MySQL工作原理 体系结构)1.MySQL体系结构2.MySQL内存结构3.MySQL文件结构4.innodb体系结构一、了解MySQL前你需要知道的引擎是什么:MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。当我们理解了引擎这个概念,自然而然就知道引擎层的作用就提供各种不同引擎给你选择,然后用你选出来的引擎去处理sql语句二、MySQL体系结构MySQL 最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理 (Query Processing)及其他系统任务(Server Task)和数据的存储/提取相分离。这种 处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储 的方式。
  由图,可以看出MySQL最上层是连接组件。下面服务器是由连接池、管理工具和服务、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。用户:进行数据库连接的人。支持接口:是第三方语言提供和数据库连接的接口,常见的有jdbc,odbc,c的标准api函数等等。管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql复制、集群等(见图)连接层:提供与用户的连接服务,用于验证登录服务。
  —> 连接池:由于每次建立建立需要消耗很多时间,连接池的作用就是将这些连接缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。服务层:完成大多数的核心服务功能。有sql接口,解析器parser,优化器optimizer,查询缓存 cache/buffer 。
  ​ —>SQL接口:接受用户的SQL命令,并且返回用户需要查询的结果。比如select * from就是调用SQL Interface
  ​ —>解析器: SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。其功能是:
  a.将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。
  ​ b.如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的。
  ​ —>优化器:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是"选取-投影-联接"策略进行查询。举一个例子:select * from users where uname="admin";
  1.这个select查询先根据where语句进行选取,而不是先将表全部查询出来以后再进行uname过滤。(选取)
  ​ 2.这个select查询先根据*进行属性投影,而不是将属性全部取出以后再进行过滤。(投影)
  ​ 3.将这两个查询条件联接起来生成最终查询结果。(联接)
  ​ —>缓存器: 查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。通过LRU算法将数据的冷端溢出,未来得及时刷新到磁盘的数据页,叫脏页。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等
  ​ 简而言之, 服务层执行过程:sql语句通过sql接口,服务器如果缓存cache有命中查询结果,直接读取数据。如果没有命中查询结果,由解析器进行sql语句的解析,预处理,经过优化器进行优化后提交给引擎层。通俗地说—>服务层告诉引擎层要做什么。引擎层: 提供各种存储引擎,真正的负责MySQL中数据的存储和提取。常见有innodb myisam 。innodb支持全文索引,事务(高并发),行锁,myisam 性能优先。 mysql中查询引擎语句:show engines.通俗地说—>引擎层会转发服务层解析出来的sql语句告诉存储层要做什么(增删改查)并且告诉存储层要以何种方式做(innodb myisam等等)。存储层: 数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。SQL的执行流程:数据库通常不会被单独使用,而是由其它编程语言通过SQL支持接口调用MySQL。由MySQL处理并返回执行结果。首先,其它编程语言通过SQL支持接口调用MySQL,MySQL收到请求后,会将该请求暂时放在连接池,并由管理服务与工具进行管理。当该请求从等待队列进入到处理队列时,管理器会将该请求传给SQL接口,SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的数据进行对比,如果匹配则通过缓存直接返回处理结果;否则,去文件系统查询:由SQL接口传给后面的解析器,解析器会判断SQL语句是否正确,若正确则将其转化为数据结构。解析器处理完毕后,便将处理后的请求传给优化器控制器,它会产生多种执行计划,最终数据库会选择最优的方案去执行。确定最优执行计划后,SQL语句交由存储引擎处理,存储引擎将会到文件系统中取得相应的数据,并原路返回。在我们专业老师的pdf资料里面每一层也讲得很细 见下
  创建新表时如果不指定存储引擎,那么系统就会使用默认存储引擎,MySQL5.5 之前的 默认存储引擎是 MyISAM,5.5 之后改为了 InnoDB。 MySQL 中同一个数据库,不同的表格可以选择不同的存储引擎。
  MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务完整性 没有要求或者以 SELECT、INSERT 为主的应用。每个 MyISAM 在磁盘上存储成 三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm 文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比 MyISAM 的存储引擎,InnoDB 写的处理效率差一些,并且会占用更多的磁盘空 间以保存数据和索引。InnoDB:所有的表都保存在同一个数据文件中,InnoDB 表的大小只受限于操作系统文件的大小限制。Myisam 只缓存索引,不缓存真实数据;Innodb 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响。MEMORY 存储引擎使用存在于内存中的内容来创建表。MEMORY 类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用 HASH 索引,但是 一旦服务关闭,表中的数据就会丢失。主要用于那些内容变化不频繁的代码表或者作为统计操作的中间结果表。三、MySQL内存结构MySQL中内存大致分为:全局内存(Global buffer)、线程内存(Thread buffer) 两大部分。
  全局内存:缓冲池里面有数据缓存、索引缓存、锁信息、插入缓存等等。此外还有重做日志缓存、额外的内存池。线程内存:Master Thread、IO Thread、Purage Thread、Page Cleaner Thread。
  CheckPoint技术:缓冲池的设计目的为了协调CPU速度与磁盘速度的鸿沟。因此跟新或者删除的时候直接操作的是内存的数据,先写入重做日志,然后再修改内存池里面的数据,最后定时刷新到磁盘上。四、MySQL文件结构参数文件:启动MySQL实例的时候,指定一些初始化参数,比如:缓冲池大小、数据库文件路径、用户名密码等。my.cnf读取优先级是从左自右的顺序,但是当默认读取路径都有配置文件时,最后读取的参数的值,会覆盖前面读取的参数的值。/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf~/.my.cnf日志文件:比如:错误日志、二进制日志、慢查询日志、查询日志等等。例如:通过show variables like "error_log"来查看错误日志存放内容。socket文件:当用UNIX域套接字方式进行连接的时候需要的文件。pid文件:MySQL实例的进程ID文件。表结构文件:用来存放MySQL表结构定义文件。.frm后缀命名的文件都是表结构文件,和存储引擎类型无关。所有的表都会生成一个.frm文件;存储引擎文件:存储引擎正在存储了记录和索引等数据。
  表空间可以在逻辑上管理多个数据文件,而这些数据文件又可以分布在不同磁盘中这就使得一个表的数据、索引等信息可以被记录在多个磁盘中。
  (1)共享表空间:共享表空间文件以.ibdata*来命名; 共享表空间下,innodb所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。共享表空间主要存放double write、undo log(undo log没有独立的表空间,需要存放在共享表空间)
  (2)独立表空间:每个表拥有自己独立的表空间用来存储数据和索引。
  (3)查看数据库是否启用独立表空间:show variables like ‘innodb_file_per_table’;查看,innodb_file_per_table=ON,表示启用了独立表空间;
  (4)使用独立表空间的优点:a.如果使用软链接将大表分配到不同的分区上,易于管理数据文件b.易于监控解决IO资源使用的问题;c.易于修复和恢复损坏的数据;d.相互独立的,不会影响其他innodb表;e.导出导入只针对单个表,而不是整个共享表空间;f.解决单个文件大小的限制;g.对于大量的delete操作,更易于回收磁盘空间;h.碎片较少,易于整理optimize table;i.易于安全审计;j.易于备份如果在innodb表已创建后设置innodb_file_per_table,那么数据将不会迁移到单独的表空间上,而是续集使用之前的共享表空间。只有新创建的表才会分离到自己的表空间文件。
  (5)共享表空间的数据文件配置:innodb_data_file_path参数:设置innoDB共享表空间数据文件的名字和大小,例如innodb_data_file_path=ibdata1:12M:autoextend(初始大小12M,不足自增)innodb_data_home_dir参数:innodb引擎的共享表空间数据文件的存放目录目前主要是使用独立表空间,但是共享表空间也是需要的,共享表空间主要存放double write、undo log等。五、InnoDB表存储结构
  表空间∶表空间可看做是InnoDB存储引擎逻辑结构的最高层。
  段 :表空间由各个段组成,常见的段有数据段、索引段、回滚段等。
  区 :由64个连续的页组成,每个页大小为16kb,即每个区大小为1MB。页:每页16kb,且不能更改。常见的页类型有∶数据页、Undo页、系统页、事务数据页、插入缓冲位图页、插入缓冲空闲列表页、未压缩的二进制大对象页、压缩的二进制大对象页。
  行 :InnoDB存储引擎是面向行的(row-oriented),每页最多允许存放7992行数据。
  a.每页=16Kb(页类型:数据页、undo页、系统页、事务数据页、插入缓冲位图页、插入缓冲空闲列表页、未压缩的二进制大对象页、压缩的二进制大对象页)
  b.区=64个连续的页=64*16Kb=1MB
  作者:#YF#

2019年必买的6类高性价比Linux开发板Dragonboard和Firefly专场大家好,我是人见人爱的小月月,在之前的文章里,我们聊到了2019年必买的6类高性价比Linux开发板OlinuXino专场2019年必买的6类高性价比Linux开发板BPI专场20IT产业的三大定律,你都知道么?作为IT从业人员,如果你不知道IT产业的三大定律,肯定会有人嘲笑你。今天小月月就带大家了解一下三大定律。1摩尔定律这是由英特尔(Intel)创始人之一戈登摩尔(GordonMoor奇瑞新能源艾瑞泽e安全系数高,你还说国产车不靠谱吗?汽车最重要的是不是品质,越是配置,更加不是发动机和变速箱,最重要的不可否认的是安全。每辆汽车在出厂之前都会做安全方面的测试,并且会送去专业的检测机构去检验,符合一定的标准才会出厂销新款奇瑞小蚂蚁带着更大的诚意来啦随着消费者对新能源汽需求的提高,新能源汽车厂家不断在已有的汽车基础上进行升级,奇瑞小蚂蚁这款极受消费者欢迎的汽车也在前段时间迎来了它的新款汽车,即奇瑞小蚂蚁20万蚁粉款,这款汽车在Arduino系列新增四款Nano板,包含WiFiBLE传感器以及硬件加密大家好,我是小月月,MakerFaire2019正在美国加州的SanMateo举行,按照惯例,Arduino会在展会上宣布他们的新产品。今年也不例外,他们发布了新的Nano系列,共乘风破浪,吉利博越PRO搭载的车机系统GKUI实力强大必须承认的是,智能化生活早已渗透到了日常生活之中,它关系到人们生活的每时每刻。当汽车被注入了灵魂,它就不再是一件普通的出行代步工具,车机系统可以说是汽车的大脑。而这款吉利博越PRO车机系统GKUI强大丰富的功能让人期待车机系统,可以说是人们日常用车中常常被忽视的,但又是每天都在接触的配置。一套好的车机系统,不仅仅可以为人们提供丰富的娱乐体验,而且可以为驾驶提供便捷。这款被称为最黑的黑科技的吉克智多媒体车机GKUI,人车家互联,好看还好用汽车想要实现智能化,网联化,车机系统非常关键。正如当年智能手机的崛起并非单纯依靠硬件水平的提高,更多的是得益于系统上的优势。车载系统的好坏对于一些功能的实现和用户体验具有至关重要的矽速科技推出MaixHubAI模型平台,让AI应用不再难面对新兴的AI浪潮,你是否觉得无从入手?觉得算法太过艰涩,AI硬件太过昂贵?矽速科技继推出6美金的AI模组M1,和百元级的AI开发板系列MAIX后,又隆重推出MaixHub模型平台真正好用的GKUI车机系统功能丰富,非常吸引人汽车正在朝着智能化的方向不断前行,对汽车消费者来说,车不只是冰冷的金属机器,而是有头脑的出行伙伴。在汽车智能化道路上,智能车机系统在不断升级进化,带给用户更有趣智能的出行体验。其中高质感汽车奇瑞大蚂蚁很全面随着国内便宜实惠的大尺寸SUV新能源汽车越来越多,很多人开始接受了这类型汽车的存在。但是在新能源汽车市场,很多汽车在设计的时候哦,总是顾此失彼,很多新能源汽车只顾续航,却忽略了汽车
读未来如何艰难,你要尽力而为马化腾有感本来觉得觉得是本励志的图书,主要马化腾的,毕竟是中国首富,从最早的OICQ,到微信,网游帝国,以及腾讯投资的公司如下1美团点评市值2万亿港币。腾讯为第一大股东,持股20。1363。8。23当周行情分析非常抱歉,连续两周没有更新,因为家里出了点事情,老人去世了,基本也没什么时间看盘,所以今天把当前的行情分析了一遍,这里发出本周的观点。首先是一个黄金4小时观察到的多单的机会,从上周宝能开拓新赛道进入新的成长区,跨界造手机近年来,企业跨界屡见不鲜。正如一位企业家所说,如果把企业的体量比作一个矩形,产品数量的多少比作企业的高度,客户关系的深浅是企业的宽度,那么涉足领域的多少则是企业的长度。借由跨界寻求宝能再次跨界宝能手机业务蓄势待发在2017年的时候,宝能宣布要跨界造车,迎来了众多围观者的猜测和质疑,经过不到4年的发展,宝能汽车成功入选强国品牌工程品牌强国计划,新车观致7一经上市便受到了强烈反响,汽车全产业链承德考生家长,百盛手机老刘带着华为,荣耀,和小米送礼了昨天预告过今天的内容是我们老朋友百盛手机的老刘给2021年的高考生送礼。而和老刘一起的,是他的三个朋友华为荣耀和小米。送福利的时间从今天开始,一直到6月12日1承德地区任何考生或者飞利浦FidelioL3综合表现优秀为音乐发烧友带来全方位极致体验在TWS真无线耳机大行其道的今天,HiFi头戴式耳机同样不乏追求者。特别是一直以卓越的音质领先的技术顶级的设计与材质为标准研发每一款产品的飞利浦旗下的高端音频系列Fidelio,更899元飞利浦IPS电竞显示器!我要剃须刀你却给我无线耳机?呃前面就当是跟大家一起分享个段子吧。飞利浦这个品牌大家自然是很熟悉了,经典的,口碑好的产品应该也都大抵相似剃须刀有木有很好?口碑很好价格很高?电池有木有很耐用?当然耐用也不可能没电银行卡上见证百年征程编者按作者陈畑子,国内知名银行卡收藏家,多年从事银行卡收藏,藏品中拥有大量国内外珍稀的银行卡藏品。本文是为祝贺中国共产党成立100周年所撰写,并奉献了大量的珍贵藏品。因版面所限,选300多元飞利浦512G硬盘!显示器大厂跨界做NVME固态有什么猫腻?今天的文章就是评测下,固态硬盘领域里的新秀品牌飞利浦!固态硬盘和内存领域一样,自有颗粒的厂商就那么几个,但是销量最大的,反而不是他们(三星镁光WD东芝)。而是其他搞不清楚颗粒的固态芝杜护航DolbyVISION,4K影音实力诠释在被浩瀚电视自带智能系统覆盖的当下,依然有一群高端玩家采用4K硬盘播放器进行家庭影院观影,源于对电影的热爱,对生活的仪式感,对细节品质的追求,对来访朋友的豪华招待。而芝杜科技(zi设计师的专业眼光太绝了,颜值党月影灯饰每一套都想带回家作为一个资深颜值党,如果你想学会一些小技巧让家里的装修风格上升几个档次,那一定要把家里的灯饰换成全屋铜灯的!我强烈给大家推荐月影家居的这套全屋铜灯套餐,涵盖了北欧轻奢中式简约美式欧