MySQL三万字精华总结+面试100问,吊打面试官绰绰有余
一、MySQL架构和其它数据库相比 , MySQL有点与众不同 , 它的架构可以在多种不同场景中应用并发挥良好作用 。 主要体现在存储引擎的架构上 , 插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离 。 这种架构可以根据业务的需求和实际需要选择合适的存储引擎 。
文章插图
- 连接层:最上层是一些客户端和连接服务 。 主要完成一些类似于连接处理、授权认证、及相关的安全方案 。 在该层上引入了线程池的概念 , 为通过认证安全接入的客户端提供线程 。 同样在该层上可以实现基于SSL的安全链接 。 服务器也会为安全接入的每个客户端验证它所具有的操作权限 。
- 服务层:第二层服务层 , 主要完成大部分的核心服务功能 ,包括查询解析、分析、优化、缓存、以及所有的内置函数 , 所有跨存储引擎的功能也都在这一层实现 , 包括触发器、存储过程、视图等
- 引擎层:第三层存储引擎层 , 存储引擎真正的负责了MySQL中数据的存储和提取 , 服务器通过API与存储引擎进行通信 。 不同的存储引擎具有的功能不同 , 这样我们可以根据自己的实际需要进行选取
- 存储层:第四层为数据存储层 , 主要是将数据存储在运行于该设备的文件系统之上 , 并完成与存储引擎的交互
画出 MySQL 架构图 , 这种变态问题都能问的出来
MySQL 的查询流程具体是?or 一条SQL语句在MySQL中如何执行的?
客户端请求 ---> 连接器(验证用户身份 , 给予权限) ---> 查询缓存(存在缓存则直接返回 , 不存在则执行后续操作) ---> 分析器(对SQL进行词法分析和语法分析操作) ---> 优化器(主要对执行的sql优化选择最优的执行方案方法) ---> 执行器(执行时会先看用户是否有执行权限 , 有才去使用这个引擎提供的接口) ---> 去引擎层获取数据返回(如果开启查询缓存则会缓存查询结果)图:极客时间
文章插图
?
说说MySQL有哪些存储引擎?都有哪些区别?
二、存储引擎存储引擎是MySQL的组件 , 用于处理不同表类型的SQL操作 。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能 , 使用不同的存储引擎 , 还可以获得特定的功能 。
使用哪一种引擎可以灵活选择 , 一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求 , 使用合适的存储引擎 , 将会提高整个数据库的性能。
MySQL服务器使用可插拔的存储引擎体系结构 , 可以从运行中的 MySQL 服务器加载或卸载存储引擎。
查看存储引擎
-- 查看支持的存储引擎SHOW ENGINES-- 查看默认存储引擎SHOW VARIABLES LIKE 'storage_engine'--查看具体某一个表所使用的存储引擎 , 这个默认存储引擎被修改了!show create table tablename--准确查看某个数据库中的某一表所使用的存储引擎show table status like 'tablename'show table status from database where name="tablename"
设置存储引擎-- 建表时指定存储引擎 。 默认的就是INNODB , 不需要设置CREATE TABLE t1 (i INT) ENGINE = INNODB;CREATE TABLE t2 (i INT) ENGINE = CSV;CREATE TABLE t3 (i INT) ENGINE = MEMORY;-- 修改存储引擎ALTER TABLE t ENGINE = InnoDB;-- 修改默认存储引擎 , 也可以在配置文件my.cnf中修改默认引擎SET default_storage_engine=NDBCLUSTER;
默认情况下 , 每当 CREATE TABLE 或 ALTER TABLE 不能使用默认存储引擎时 , 都会生成一个警告 。 为了防止在所需的引擎不可用时出现令人困惑的意外行为 , 可以启用 NO_ENGINE_SUBSTITUTION SQL 模式 。 如果所需的引擎不可用 , 则此设置将产生错误而不是警告 , 并且不会创建或更改表存储引擎对比常见的存储引擎就 InnoDB、MyISAM、Memory、NDB 。
InnoDB 现在是 MySQL 默认的存储引擎 , 支持事务、行级锁定和外键
文件存储结构对比在 MySQL中建立任何一张数据表 , 在其数据目录对应的数据库目录下都有对应表的.frm 文件 , .frm 文件是用来保存每个数据表的元数据(meta)信息 , 包括表结构的定义等 , 与数据库存储引擎无关 , 也就是任何存储引擎的数据表都必须有.frm文件 , 命名方式为 数据表名.frm , 如user.frm 。
查看MySQL 数据保存在哪里:show variables like 'data%'
MyISAM 物理文件结构为:
- .frm文件:与表相关的元数据信息都存放在frm文件 , 包括表结构的定义信息等
- .MYD (MYData) 文件:MyISAM 存储引擎专用 , 用于存储MyISAM 表的数据
- 三星|顶配旗舰重回最低价,三个月降价四百,12G+256G+120W
- 路由器|千兆双频WiFi6,还能异地组网,什么神仙路由器只卖三百多?
- 电池|百元级散热器,超频三东海R4000拯救热到可以蒸蛋的机箱
- 荣耀|建议收藏!2021年底盘点:这三款旗舰可以让你安逸地使用两三年
- 酷派|酷派:国产手机“假高端”严重,用户不应分为三六九等
- 苹果|要是不看真实数据,我还以为国产机将iPhone打成下一个三星了呢
- 电池|2021年年底买千元机,这四款用三五年没问题,十二月购机必看
- wi-fi6|12月物超所值的三款高性价比手机推荐 价格不超过3000元
- iphone13|iPhone13 缺货问题得到改善,发货时间变快,第三方优惠将更大
- realme|买不起“十三香”?目前这4款真香机最值得买,三五年不卡顿