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

建筑网站汇总做同性恋网站犯法吗

建筑网站汇总,做同性恋网站犯法吗,家庭宽带做网站服务器吗,WordPress推广返佣插件执行一条SQL请求的过程是什么#xff1f; 面试官您好#xff0c;一条SQL查询语句在MySQL中的执行过程#xff0c;是一个分工明确、层层递进的流水线作业。要理解这个过程#xff0c;我们首先要了解MySQL的两大核心组件#xff1a;Server层和存储引擎层。 Server层#x…执行一条SQL请求的过程是什么 面试官您好一条SQL查询语句在MySQL中的执行过程是一个分工明确、层层递进的流水线作业。要理解这个过程我们首先要了解MySQL的两大核心组件Server层和存储引擎层。 Server层负责建立连接、解析和优化SQL、管理事务等这是MySQL的“大脑”。存储引擎层如InnoDB负责数据的实际存储和提取这是MySQL的“双手和仓库”。 现在我们可以把一次SQL查询想象成一个顾客在一家大餐厅点餐的全过程 第一步门口迎宾与身份确认 (连接器 - Connector) 餐厅的比喻顾客客户端来到餐厅门口迎宾连接器会上前接待。MySQL的工作 客户端发起连接请求连接器负责完成TCP握手。然后连接器会验证用户的身份用户名和密码。验证通过后它会检查用户的权限看用户有哪些操作许可。最后它会从连接池中分配一个连接给客户端或者建立一个新的连接。此后的所有操作都在这个连接上进行。 第二步服务员下单与理解菜单 (解析器 - Parser) 餐厅的比喻顾客点了一道菜SELECT * FROM users WHERE id 1服务员解析器拿出点单本。MySQL的工作 词法分析首先解析器会将SQL语句打散成一个个最小的、不可再分的“单词”Token比如SELECT, *, FROM, users等。语法分析然后它会根据MySQL的语法规则来判断这条语句的语法是否正确。如果不正确比如写成了SELECT FROM users就会直接报错。构建语法树语法分析通过后解析器会构建出一棵抽象语法树AST。这棵树清晰地表达了这条SQL要“做什么”比如“要查询”、“从users表”、“条件是id1”。 第三步主厨的烹饪方案决策 (优化器 - Optimizer) 餐厅的比喻服务员把点菜单交给了主厨优化器。主厨是整个厨房的灵魂他要决定这道菜 “如何做才最高效”。MySQL的工作这是决定SQL查询性能最核心、最关键的一步。优化器会根据语法树并结合MySQL的统计信息生成最终的执行计划Execution Plan。 它会做大量的优化决策比如 选择最优索引这条WHERE语句是走主键索引快还是走某个二级索引更快决定表的连接顺序对于多表JOIN是先驱动A表再关联B表还是反过来优化子查询等等。 优化器的目标是找到一个成本最低的执行方案。 第四步厨师按菜谱操作 (执行器 - Executor) 餐厅的比喻主厨把最终的“菜谱”执行计划交给了厨师执行器。MySQL的工作 执行器在执行前会再次检查用户是否有查询这张表的权限。然后它会完全按照执行计划一步步地去调用存储引擎层提供的接口来操作数据。比如执行计划说“请使用users表的主键索引查找id1的记录”执行器就会调用InnoDB引擎的接口去获取这行数据。执行器拿到存储引擎返回的数据后可能会进行一些加工比如排序、分组最终将结果集返回给客户端。 关于查询缓存 (Query Cache) 在MySQL 8.0之前还有一个查询缓存模块它位于解析器之前。如果一个SQL能完全命中缓存就会直接返回结果。但由于缓存的命中条件极其苛刻SQL语句和参数必须一模一样且任何对表的更新都会导致该表所有缓存失效维护成本高而命中率低因此在MySQL 8.0中被彻底移除了。 总结一下一条SQL的旅程就是通过连接器建立连接由解析器将其翻译成“机器能懂的语言”语法树再由优化器制定出“最高效的执行方案”最后由执行器调用存储引擎来完成实际的数据操作。 讲一讲MySQL的引擎吧你有什么了解 面试官您好MySQL的存储引擎是其可插拔式架构的一大特色。它允许我们为不同的数据表选择不同的底层存储和处理机制以适应不同的业务场景。 在众多存储引擎中我主要熟悉和使用过以下三种最经典的引擎 1. InnoDB现代MySQL的“全能王者”默认引擎 InnoDB是MySQL 5.5之后默认的存储引擎也是现在绝大多数应用场景的事实标准。它是一个为高并发、高可靠性的在线事务处理OLTP场景而设计的、功能全面的引擎。 核心特性 支持ACID事务这是它最重要的特性。InnoDB提供了完整的事务支持包括提交、回滚、以及崩溃恢复能力能最大限度地保证数据的强一致性。行级锁 (Row-Level Locking)当进行更新或删除操作时InnoDB只锁定需要修改的行而不是整张表。这使得它在高并发的读写场景下性能表现极其出色锁冲突的概率大大降低。支持外键约束 (Foreign Key)能够在数据库层面强制保证数据的引用完整性。MVCC (多版本并发控制)InnoDB通过MVCC机制实现了非阻塞的读操作做到了“读写不加锁”极大地提升了并发读取的性能。 适用场景绝大多数的业务场景特别是那些对数据一致性要求高、且有大量并发写入的应用比如电商系统、金融系统、社交应用等。 2. MyISAM曾经的“速度之星” 在InnoDB成为默认引擎之前MyISAM是MySQL的默认引擎它以其简单、高速的读取性能而闻名。 核心特性 不支持事务这是它与InnoDB最本质的区别它不支持ACID。表级锁 (Table-Level Locking)MyISAM的锁粒度非常粗。任何一个写操作INSERT, UPDATE, DELETE都会锁定整张表。这意味着在写入时所有其他的读写操作都必须排队等待。不支持外键。存储与索引它会将表数据.MYD文件和索引.MYI文件分开存储。一个特殊的优势它内部维护了一个计数器所以执行COUNT(*)来查询全表总行数时速度极快几乎是瞬间完成。 适用场景 适用于那些 “读多写少”、甚至是纯粹的只读报表类应用。对事务完整性要求不高的场景。因为是表级锁所以不适合高并发写入的场景。 3. Memory (HEAP)“快如闪电”的内存引擎 核心特性 数据存储在内存中这是它最大的特点也是它速度极快的原因。数据易失性因为数据在内存中所以一旦数据库服务器重启或崩溃表中的所有数据都会丢失。不支持事务和外键同样使用表级锁。 适用场景 用于存储那些临时的、非持久化的、需要被高速访问的数据。比如用作一些查询的临时中间表或者一些需要频繁访问的、但可以从其他地方重建的配置数据或缓存数据。 总结与选型 特性InnoDB (全能型)MyISAM (读取型)Memory (临时型)事务支持 (ACID)不支持不支持锁级别行级锁表级锁表级锁外键支持不支持不支持MVCC支持不支持不支持崩溃恢复支持不支持数据直接丢失COUNT(*)扫表 (较慢)极快较快 我的选型决策 在今天对于任何需要持久化存储的业务数据我都会毫不犹豫地选择InnoDB。它的功能全面性、数据安全性以及在高并发下的优秀表现使其成为了无可替代的通用选择。MyISAM和Memory则作为特殊用途的引擎只在一些非常特定的、能容忍其缺点的场景下如纯读报表、临时数据缓存才会考虑使用。 MySQL为什么InnoDB是默认引擎 面试官您好InnoDB之所以能够取代MyISAM并在MySQL 5.5版本之后成为默认的存储引擎其根本原因在于InnoDB的设计和功能完美地契合了现代互联网应用对数据处理的核心需求高并发、高可靠性和数据强一致性。 我们可以从以下几个关键特性来理解为什么InnoDB是现代应用的不二之选 1. 强大的事务支持 (ACID) —— 数据一致性的基石 现代应用的需求在绝大多数业务场景中特别是电商、金融、社交等领域一系列数据库操作必须被当作一个不可分割的整体来执行。比如一个转账操作必须保证“A账户扣款”和“B账户加款”这两个动作要么都成功要么都失败。InnoDB的解决方案InnoDB提供了完整的ACID事务支持。通过START TRANSACTION, COMMIT, ROLLBACK等命令它可以将多个SQL操作打包成一个逻辑单元从而从数据库层面强制保证了业务逻辑的数据一致性。MyISAM的短板MyISAM不支持事务。如果使用MyISAM来执行转账一旦在扣款成功后、加款前发生系统崩溃就会导致“钱凭空消失”的严重数据不一致问题。 2. 行级锁 (Row-Level Locking) —— 高并发写入的保障 现代应用的需求互联网应用通常面临着海量的用户并发访问特别是高并发的写入操作比如秒杀场景下的下单、扣库存。InnoDB的解决方案InnoDB采用了行级锁。当一个事务需要修改某一行数据时它只锁定这一行而不会影响到其他线程对同一张表中其他行的读写。这极大地降低了锁的粒度使得在高并发写入时线程之间互相等待和阻塞的可能性大大减少从而提供了极高的并发处理能力。MyISAM的短板MyISAM只支持表级锁。任何一个写操作都会锁定整张表。这意味着当一个线程在修改表中的某一行时所有其他想对这张表进行任何读写操作的线程都必须排队等待。在高并发写入场景下这会造成严重的性能瓶颈。 3. MVCC (多版本并发控制) —— 高并发读取的利器 InnoDB的另一个“黑科技”除了行级锁InnoDB还通过MVCC机制实现了非阻塞的读操作。工作原理对于SELECT查询InnoDB通常不会去加锁而是通过读取一个“快照”版本的数据来实现“读写不冲突”。一个事务在读取数据时另一个事务可以同时修改它两者互不干扰。结果这使得InnoDB在处理 “读多写多” 的混合并发场景时性能极其出色。 4. 崩溃恢复能力 (Crash Recovery) —— 数据可靠性的保障 现代应用的需求生产系统必须是高可靠的不能因为服务器突然断电或宕机就导致已经提交的事务数据丢失。InnoDB的解决方案InnoDB拥有一套完善的日志系统包括Redo Log重做日志和Undo Log回滚日志。 通过Redo LogInnoDB保证了所有已提交的事务即使在数据库崩溃后也能够通过日志进行前滚恢复确保数据的持久性。 MyISAM的短板MyISAM不具备崩溃恢复能力。如果服务器宕机MyISAM表很可能会损坏需要手动进行修复且可能导致数据丢失。 总结一下InnoDB凭借其对事务、行级锁、MVCC和崩溃恢复的全面支持构建了一个既能保证数据强一致性和高可靠性又能应对高并发读写的强大存储引擎。这些特性恰恰是现代OLTP在线事务处理应用最核心、最不可或缺的能力。因此它取代MyISAM成为默认引擎是技术发展的必然选择。 说一下MySQL的InnoDB与MyISAM的区别 面试官您好InnoDB和MyISAM是MySQL中最著名的两种存储引擎它们在设计哲学和底层实现上有着本质的区别这也决定了它们完全不同的适用场景。 我通常会从以下几个核心维度来对比它们 1. 核心功能与可靠性事务与外键 InnoDB: 支持事务 (ACID)。这是它最大的优势。它支持提交、回滚和崩溃恢复能从数据库层面保证业务操作的原子性和数据一致性。同时它也支持外键约束。MyISAM: 不支持事务和外键。这意味着它无法保证复杂操作的数据一致性一旦发生断电等意外数据很可能处于一个中间状态。影响: 这一点直接决定了InnoDB是在线事务处理OLTP 应用如电商、金融系统的不二之选而MyISAM则不适合这类对数据一致性要求高的场景。 2. 并发性能锁的粒度 InnoDB: 支持行级锁 (Row-Level Locking)并且通过MVCC多版本并发控制 实现了非阻塞的读。 优势: 当进行写操作时只锁定需要修改的行大大减少了锁冲突使得高并发的读写性能非常出色。 MyISAM: 只支持表级锁 (Table-Level Locking)。 劣势: 任何一个UPDATE或INSERT都会锁定整张表导致其他所有读写操作都必须排队等待。在高并发写入的场景下性能会急剧下降。 影响: InnoDB能够轻松应对高并发的混合读写负载而MyISAM只适合 “读多写少” 的场景。 3. 索引结构与数据存储聚簇 vs. 非聚簇 这是两者在物理存储上的一个根本区别也深刻地影响了它们的查询性能。 InnoDB: 采用聚簇索引 (Clustered Index)。 结构: 数据文件本身就是按照主键顺序组织的一棵B树叶子节点直接存储了完整的行数据。优点: 通过主键查询时速度极快因为找到索引就等于找到了数据只需一次I/O。缺点: 辅助索引二级索引需要“回表”辅助索引的叶子节点存储的是主键的值。因此通过辅助索引查询时需要先找到主键值再用主键值去聚簇索引中找到完整的行数据这需要两次I/O。主键的选择很关键: 正如您所说主键不宜过大因为所有辅助索引都会包含它使用自增ID作为主键可以保证新数据总是在末尾插入避免了页分裂性能最好。 MyISAM: 采用非聚簇索引 (Non-Clustered Index)。 结构: 数据文件 (.MYD) 和索引文件 (.MYI) 是相互分离的。特点: 无论是主键索引还是辅助索引它们的叶子节点存储的都是一个指向数据文件中物理行位置的指针。优缺点: 主键查询和辅助索引查询的性能没有本质区别都需要一次索引查询和一次数据文件查询。 4. 其他差异 COUNT(*)的效率: MyISAM: 内部维护了一个计数器执行SELECT COUNT(*) FROM table时直接返回这个计数值速度极快。InnoDB: 不保存这个计数值因为MVCC的存在不同事务看到的行数可能不同需要进行全表扫描来计算总行数当数据量大时效率较低。 文件结构: MyISAM: 每个表对应三个文件.frm表结构、.MYD数据、.MYI索引。InnoDB: 通常所有表的数据和索引都存储在同一个表空间文件如ibdata1中也可以配置为“独立表空间”让每个表对应一个.ibd文件。 总结与选型 特性InnoDB (默认)MyISAM事务支持不支持锁级别行级锁表级锁外键支持不支持MVCC支持不支持索引聚簇索引非聚簇索引崩溃恢复支持不支持 结论 在今天的应用开发中对于所有需要高并发、数据一致性、高可靠性的业务表InnoDB是唯一的、也是最佳的选择。这也是为什么它会成为MySQL的默认存储引擎。MyISAM则可以作为一种补充用于一些对事务和并发写入要求不高的、以读取和分析为主的场景比如一些日志表、数据仓库的维度表等可以利用其COUNT(*)快的特性。 数据管理里数据文件大体分成哪几种数据文件 面试官您好在数据库管理中特别是以MySQL的InnoDB存储引擎为例从物理存储的角度看它的数据文件大体上可以分为三大类表空间文件、日志文件、以及其他辅助性文件。 第一类表空间文件 (Tablespace Files) —— 数据的最终归宿 这是真正存储我们表数据和索引的地方。InnoDB的表空间可以有两种管理模式 共享表空间 (Shared Tablespace) 文件名通常是 ibdata1 文件。特点在默认配置下所有数据库的所有表的数据和索引都会被存放在这一个或多个共享的表空间文件中。优点管理相对简单。缺点 难以管理整个文件会随着数据增长而不断变大即使删除了某个表其占用的空间也很难被回收给操作系统容易导致文件只增不减。性能瓶颈所有表的I/O操作都集中在一个文件上可能成为性能瓶颈。 独立表空间 (File-per-Table Tablespace) —— 推荐的最佳实践 文件名每个表都会有自己独立的 .ibd 文件例如users.ibd。如何开启这个模式在MySQL 5.6.6之后的版本中是默认开启的由参数innodb_file_per_table ON控制。特点一张表的数据、索引、以及其他元数据都独立地存储在它自己的.ibd文件中。共享表空间ibdata1此时只存放一些公共的系统数据如数据字典、Undo日志等。优点 管理方便删除或TRUNCATE一张表时可以直接删除对应的.ibd文件空间会立刻被回收给操作系统。性能更好不同表的I/O操作分散在不同的文件中。便于备份和恢复可以对单个表进行物理备份和恢复。 结论在现代MySQL实践中使用独立表空间是绝对的标准和最佳实践。 第二类日志文件 (Log Files) —— 可靠性的保障 这些日志文件不直接存储表数据但它们是保证InnoDB实现ACID特性特别是持久性Durability 和崩溃恢复Crash Recovery 能力的关键。 重做日志 (Redo Log) 文件名通常是两个或多个名为 ib_logfile0, ib_logfile1 的文件。作用实现了WALWrite-Ahead Logging技术。当有数据需要修改时InnoDB会先将这个修改操作以日志的形式顺序地写入Redo Log文件这非常快然后再慢慢地将数据刷回到磁盘上的表空间文件中。价值 提升性能将随机的磁盘写操作转换为了顺序的日志写操作大大提升了写入性能。崩溃恢复如果数据库在数据还未完全刷盘时就宕机了重启后MySQL可以通过重放Redo Log中的记录来恢复那些已经提交但未持久化的事务保证数据不丢失。 撤销日志 (Undo Log) 存储位置它通常存储在共享表空间ibdata1 中也可以配置为独立的Undo表空间。作用记录了数据被修改之前的“旧版本”。价值 事务回滚当一个事务需要ROLLBACK时InnoDB就利用Undo Log中的旧数据来恢复到修改之前的状态。MVCC实现在多版本并发控制中当一个事务需要读取某一行数据而这一行正在被另一个未提交的事务所修改时InnoDB会通过Undo Log找到这一行的“上一个版本”的数据返回给它从而实现了非阻塞的读。 第三类其他辅助性文件 二进制日志 (Binary Log / binlog) 这不是InnoDB特有的而是MySQL Server层的日志。作用记录了所有对数据库进行修改的SQL语句或行的变更。价值 主从复制在主从架构中从库就是通过读取和重放主库的binlog来实现数据同步的。数据恢复可以用于进行基于时间点的恢复Point-in-Time Recovery。 表定义文件 (.frm) 在MySQL 8.0之前每个表都有一个.frm文件用于存储表的结构定义字段、类型等。在MySQL 8.0之后这部分信息被统一存储在了数据字典中。 总结一下MySQL的数据文件可以看作一个体系.ibd文件是数据的“家”Redo/Undo Log是保证这个家“安全可靠”的保险和记录系统而binlog则是整个小区MySQL Server的“监控录像”用于备份和同步。
http://www.w-s-a.com/news/760486/

相关文章:

  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网
  • 推广学校网站怎么做公司可以做多个网站吗
  • 游戏网站后台建设郑州定制网站
  • 商务公司网站建设网站建设如何自学
  • 现在建网站可以拖拉式的吗中国国内最新新闻
  • phpstorm网站开发产品logo设计
  • 电子商务网站建设与运营什么是单页面网站
  • 西安优化网站公司南阳微信网站
  • 购物网站线下推广方案佛山快速建站哪家服务专业
  • 临沂网站排名外贸网站推广方法之一
  • 手机网站百度关键词排名查询吕梁网站制作吕梁安全
  • 做网站媒体wordpress管理员账号数据库添加
  • php如何自己做网站wordpress怎么修改编辑代码
  • 网站建网站建设公司WordPress互联
  • 泊头市网站建设价格wordpress导航菜单位置
  • 怎么设立网站赚广告费网页制作素材模板图片
  • 做班级网站的目的网站设计制作公司需要什么资质
  • 济南做网站哪家好财政网站平台建设不足
  • php网站建设招聘网站开发与设计论文
  • 上海 网站建设平台 补贴网站开发招标文件范本
  • 延安网站建设公司电话手机上那个网站做农产品推广比较好
  • 增城哪家网站建设好如何做网站实名认证
  • 常州地区做网站个人购物网站需要备案吗
  • 网站建设公司 跨界鱼科技专业做服务器的网站都有哪些
  • 欧洲网站服务器网站建设费用计入什么科目
  • 网站的色调苏州策划网站模板建站公司
  • 怎么看网站用的什么后台公路建设项目可行性研究报告编制办法哪个网站查最新版
  • 可以看的网站的浏览器有哪些专业APP客户端做网站
  • 如何做网站推广自己的产品推荐个网站好吗