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

弹幕网站开发代码开发商

弹幕网站开发代码,开发商,建设网站 后期的提成方案,海南澄迈住房和城乡建设厅网站二、 MySQL 内部技术架构 047 Mysql内部支持缓存查询吗#xff1f; 当MySQL接收到客户端的查询SQL之后#xff0c;仅仅只需要对其进行相应的权限验证之后#xff0c;就会通过Query Cache来查找结果#xff0c;甚至都不需要经过Optimizer模块进行执行计划的分析优化…二、 MySQL 内部技术架构 047 Mysql内部支持缓存查询吗 当MySQL接收到客户端的查询SQL之后仅仅只需要对其进行相应的权限验证之后就会通过Query Cache来查找结果甚至都不需要经过Optimizer模块进行执行计划的分析优化更不需要发生任何存储 引擎的交互 mysql5.7支持内部缓存8.0之后就废弃掉了 048 mysql8为何废弃掉查询缓存 缓存的意义在于快速查询提升系统性能可以灵活控制缓存的一致性 mysql缓存的限制 mysql基本没有手段灵活的管理缓存失效和生效尤其对于频繁更新的表SQL必须完全一致才会导致cache命中为了节省内存空间太大的result set不会被cache ( query_cache_limit)MySQL缓存在分库分表环境下是不起作用的执行SQL里有触发器,自定义函数时MySQL缓存也是不起作用的在表的结构或数据发生改变时基于该表相关cache立即全部失效。 049 替代方案是什么 应用层组织缓存最简单的是使用redisehcached等 050 Mysql内部有哪些核心模块组成作用是什么 Connectors客户端 MySQL服务器之外的客户端程序与具体的语言相关例如Java中的JDBC图形用户界面SQLyog等。 本质上都是在TCP连接上通过MySQL协议和MySQL服务器进行通信。 MySQL Server服务器 第1层连接层 系统客户端访问 MySQL 服务器前做的 第一件事就是建立 TCP 连接 。 经过三次握手建立连接成功后 MySQL 服务器对 TCP 传输过来的账号密码做 身份认证、权限获 取 。 用户名或密码不对 会收到一个 Access denied for user 错误客户端程序结束执行 用户名密码认证通过 会从权限表 查出账号拥有的权限 与连接关联之后的权限判断逻辑都 将依赖于此时读到的权限 TCP 连接收到请求后必须要分配给一个线程专门与这个客户端的交互。所以还会有个线程池去 走后面的流程。每一个连接从线程池中获取线程省去了创建和销毁线程的开销。 第2层服务层 Management Serveices Utilities 系统管理和控制工具 SQL InterfaceSQL接口 接收用户的SQL命令并且返回用户需要查询的结果。 比如SELECT … FROM就是调用SQL Interface key 非key key 非key SELECT age FROM user MySQL支持DML数据操作语言、DDL数据定义语言、存储过程、视图、触发器、自定义 函数等多种SQL语言接口 Parser解析器 在SQL命令传递到解析器的时候会被解析器验证和解析。解析器中SQL 语句进行 语法分析、语法解 析 并为其创建 语法树 。 语法分析 语法分析主要是把输入转化成若干个tokens包含key和非key。 在分析之后会得到4个Token其中有2个key它们分别是SELECT、FROM。 Optimizer查询优化器 SQL语句在语法解析后、查询前会使用查询优化器对查询进行优化 确定SQL语句的执行路径生成 一个执行计划 。 Caches Buffers 查询缓存组件 MySQL内部维持着一些Cache和Buffer比如Query Cache用来缓存一条SELECT语句的执行结 果如果能够在其中找到对应的查询结果那么就不必再进行查询解析、查询优化和执行的整个过 程了直接将结果反馈给客户端。 这个缓存机制是由一系列小缓存组成的。比如表缓存记录缓存key缓存权限缓存等 。 这个查询缓存可以在不同客户端之间共享 。 第3层引擎层 插件式存储引擎层 Storage Engines 负责MySQL中数据的存储和提取对物理服务器级别维护的底层数 据执行操作服务器通过API与存储引擎进行通信 。不同的存储引擎具有的功能不同管理的表有不同的存 储结构采用的存取算法也不同这样我们可以根据自己的实际需要进行选取。例如MyISAM引擎和 InnoDB引擎。 存储层 所有的数据、数据库、表的定义、表的每一行的内容、索引都是存在 文件系统 上以文件的方式存 在并完成与存储引擎的交互。 051 一条sql发送给mysql后内部是如何执行的说一下 MySQL 执行一条查询语句的内部执行过程 首先 MySQL客户端通过协议与MySQL服务器建连接通过SQL接口发送SQL语句先检查查询缓存如果命中 直接返回结果否则进行语句解析。 也就是说在解析查询之前服务器会先访问查询缓存如果某个查 询结果已经位于缓存中服务器就不会再对查询进行解析、优化、以及执行。它仅仅将缓存中的结果返 回给用户即可这将大大提高系统的性能。 接下来 MySQL解析器通过关键字将SQL语句进行解析并生成一棵对应的解析树 解析器使用MySQL语法规 则验证和解析SQL语句。例如它将验证是否使用了错误的关键字或者使用关键字的顺序是否正确 引号能否前后匹配等 预处理器则根据MySQL规则进一步检查解析树是否合法 例如这里将检查数据表和 数据列是否存在还会解析名字和别名看是否有歧义等。 然后预处理器会进行查询重写生成一棵新解析 树。 接下来 查询优化器将解析树转化成执行计划。 MySQL优化程序会对我们的语句做一些优化如子查询转 换为连接、表达式简化等等。优化的结果就是生成一个执行计划这个执行计划表明了应该使用哪些索 引执行查询以及表之间的连接顺序是啥样等等。我们可以使用EXPLAIN语句来查看某个语句的执行 计划。 最后 进入执行器阶段。 完成查询优化后 查询执行引擎 会按照生成的执行计划调用存储引擎提供的接口 执行SQL查询并将结果返回给客户端。在MySQL8以下的版本如果设置了查询缓存这时会将查询结 果进行缓存再返回给客户端。 052 MySQL 提示“不存在此列”是执行到哪个节点报出的 是在Parser解析器 分析sql语法的时候检查的列。 053 如果一张表创建了多个索引在哪个阶段或模块进行的索引选 择 在优化器阶段Optimizer查询优化器 054 MySQL 支持哪些存储引擎默认使用哪个 查看MySQL提供什么存储引擎 SHOW ENGINES; 也可以通过以下语句查看默认的存储引擎 SHOW VARIABLES LIKE ‘%default_storage_engine%’; 055 Mysql8.0自带哪些存储引擎分别是做什么的 InnoDB存储引擎 InnoDB是MySQL的默认事务型引擎它被设计用来 处理大量的短期(short-lived)事务 。可以确保 事务的完整提交(Commit)和回滚(Rollback)。 除非有非常特别的原因需要使用其他的存储引擎否则 应该优先考虑InnoDB引擎 。 数据文件结构 表名.frm 存储表结构MySQL8.0时合并在表名.ibd中 表名.ibd 存储数据和索引 InnoDB不仅缓存索引还要缓存真实数据 对内存要求较 高 而且内存大小对性能有决定性的影 响。 MyISAM存储引擎 MyISAM提供了大量的特性包括全文索引、压缩、空间函数(GIS)等但 MyISAM不支持事务和行级 锁 有一个毫无疑问的缺陷就是崩溃后无法安全恢复。 优势是访问的 速度快 对事务完整性没有要求或者以SELECT、INSERT为主的应用。 数据文件结构 表名.frm 存储表结构 表名.MYD 存储数据 表名.MYI 存储索引 SHOW VARIABLES LIKE ‘%default_storage_engine%’; MyISAM只缓存索引不缓存真实数据。 Archive引擎 Archive档案存储引擎只支持INSERT和SELECT操作 。 Archive表适合日志和数据采集档案类应用。 根据英文的测试结论来看Archive表比MyISAM表要小大约75%比支持事务处理的InnoDB表小 大约83%。 Blackhole引擎 Blackhole引擎没有实现任何存储机制它会丢弃所有插入的数据不做任何保存 。 但服务器会记录Blackhole表的日志所以可以用于复制数据到备库或者简单地记录到日志。但 这种应用方式会碰到很多问题因此并不推荐。 CSV引擎 CSV引擎可以将普通的CSV文件作为MySQL的表来处理但不支持索引 。 CSV引擎可以作为一种数据交换的机制非常有用。 CSV存储的数据直接可以在操作系统里用文本编辑器或者excel读取。 Memory引擎 如果需要快速地访问数据并且这些数据不会被修改重启以后丢失也没有关系那么使用 Memory表是非常有用。 Memory表至少比MyISAM表要快一个数量级。 Federated引擎 Federated引擎是访问其他MySQL服务器的一个代理跨库关联查询 尽管该引擎看起来提供了一种 很好的跨服务器的灵活性但也经常带来问题因此默认是禁用的。 056 MySQL 存储引擎架构了解吗 内存区域 Buffer Pool:在InnoDB访问表记录和索引时会在Buffer Pool的页中缓存以后使用可以减少磁盘IO操 作提升效率。主要用来缓存热的数据页和索引页。 Log Buffer用来缓存redolog Adaptive Hash Index自适应哈希索引 Change Buffer:它是一种应用在非唯一普通索引页non-unique secondary index page不在缓冲池 中对页进行了写操作并不会立刻将磁盘页加载到缓冲池而仅仅记录缓冲变更Buffer Changes等未来数据被读取时再将数据合并Merge恢复到缓冲池中的技术。写缓冲的目的是 降低写操作的磁盘IO提升数据库性能。 磁盘区域 磁盘中的结构分为两大类表空间和重做日志。 表空间分为系统表空间(MySQL 目录的 ibdata1 文件)临时表空间常规表空间Undo 表空间 以及 file-per-table 表空间(MySQL5.7默认打开file_per_table 配置。系统表空间又包括了 InnoDB数据字典双写缓冲区(Doublewrite Buffer)修改缓存(Change BufferUndo日志 等。 Redo日志存储的就是 Log Buffer 刷到磁盘的数据。 057 能否单独为一张表设置存储引擎 方法1 设置默认存储引擎 SET DEFAULT_STORAGE_ENGINEMyISAM; 方法2 或者修改 my.cnf 文件vim /etc/my.cnf 新增一行default-storage-engineMyISAM 重启MySQLsystemctl restart mysqld 方法3 我们可以为 不同的表设置不同的存储引擎 CREATE TABLE 表名( 建表语句; ) ENGINE 存储引擎名称; ALTER TABLE 表名 ENGINE 存储引擎名称; 058 阿里、京东等大厂都有自研的存储引擎如何开发一套自己的 开发存储引擎并不难难的是开发出来高效的有意义的存储引擎。 简单例子可以看一下官方源码中的示例可以实现一个什么也没做的存储引擎。 有兴趣可以参考官方文档https://dev.mysql.com/doc/dev/mysql-server/latest/ 059 MyISAM 和 InnoDB 的区别是什么 外键 事务 锁 060 具体说一下如何做技术选型 除非几乎没有写操作全部都是高频的读操作可以选择MyISAM作为表的存储引擎其他业务可以一律使 用InnoDB。
http://wiki.neutronadmin.com/news/462007/

相关文章:

  • 手机网站怎么做沉浸式做个外贸网站多少钱
  • 有限公司网站建设 中企动力佛山浏览器下载
  • 漳州最专业的网站建设公司怎么免费做公司网站
  • 优化网站具体如何做医院网站源码asp
  • 在线捏脸网站需要多少钱宣传片拍摄服务
  • seo网站计划书软件开发是啥
  • 网站策划设计建设好大夫在线网站官网做提眉的医生
  • 医疗网站建设方案海口网球场
  • 装饰网站卧室做炕百度做网站公司在哪
  • 旗县政务网站建设工作方案手机端店铺装修
  • 网站建设比赛方案wordpress工单插件
  • 开发建设网站的实施过程是一个如何制作自己的网站二维码
  • 建行手机网站哔哩哔哩网页版稍后再看在哪里
  • 潮州南桥市场中国建设银行网站淄博网站制作开发优化
  • 成都网站设计得多少钱晋城网站建设网站
  • 网站做微信支付携程网站建设项目
  • 惠州网站制作推广低价建设手机网站
  • 免费网站专业建站百度h5为什么发布不了
  • 网站网页的书签怎么做专门给小公司做网站
  • asp网站模板安装seo推广工具
  • 厚街网站仿做网站推广渠道咨询
  • 茂名手机网站建设公司名录网络服务商机构域名是什么
  • 中国建设银行英文网站wordpress 两个网站吗
  • 工信部网站实名认证怎么做新媒体内容营销
  • 顶呱呱网站建设价格网站制作的文章
  • 全球最大的设计网站专业制作存单
  • 建立网站要多少钱成都个人学做网站
  • 网站设计 教程wordpress横幅图像
  • 查网站是什么公司做的大连网站哪家做的好?
  • 杭州市拱墅区网站建设润州网站建设