MYSQL的server层和存储引擎层

转自:微点阅读  https://www.weidianyuedu.com

SQL的全称是Structured Query Language,翻译成中国话就是结构化查询语言。这是一种声明式的语法,何为声明式?可以联想一下我们生活中的老板,老板在布置任务的时候会告诉你:小王啊,今天把这些砖从A地搬到B地啊,然后就没然后了。老板并不关心你是用手抬,还是用车拉,老板只关心结果:你把砖搬过去就好了。我们之于数据库而言,就是一个老板,SQL语句就是我们给数据库下达的任务,至于具体数据库怎么执行我们并不关心,我们只关心最后数据库给我们返回的结果。

对于设计数据库的人而言,语句怎么执行就得好好考虑了,老板不操心,事儿总还得干。设计MySQL的大叔人为的把MySQL分为server层和

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL存储引擎面试题涉及到MySQL的执行过程和存储引擎的相关知识。根据提供的引用内容,我可以回答以下问题: 19、binlog 的概念是什么,起到什么作用,可以保证 crash-safe 吗? 回答: binlog是MySQL Server层的归档日志,用于实现主从复制和数据恢复。它记录了对数据库的修改操作。当需要恢复数据时,可以使用binlog进行重放恢复。然而,binlog本身不能保证crash-safe,因为在发生崩溃之前,可能没有完全写入binlog。为了实现crash-safe,需要与redo log配合使用。 20、什么是两阶段提交? 回答: 两阶段提交是一种用于保证分布式事务的一致性的协议。在分布式环境中,涉及多个数据库的事务需要保证所有数据库的操作要么全部提交,要么全部回滚。两阶段提交包括准备阶段和提交阶段。在准备阶段,事务协调者向参与者发送准备请求,并等待参与者的响应。在提交阶段,事务协调者根据参与者的响应决定是提交还是回滚事务。 2、详细说一下一条MySQL语句执行的步骤。 回答: MySQL执行一条语句的步骤包括以下几个阶段: 1. 客户端发送SQL请求到MySQL Server层。 2. MySQL Server层对SQL请求进行分析、优化和执行等处理工作。 3. 生成SQL执行计划并将其发送到相应的存储引擎层执行。 4. 存储引擎层执行SQL操作,如修改数据或查询数据。 5. 如果是修改操作,存储引擎层将修改操作记录到内存中,并修改redo log的记录。 6. 将事务的状态设置为prepare,表示已准备好提交事务。 7. MySQL Server层处理完事务后,将事务的状态设置为commit,即提交该事务。 8. 在收到事务提交请求后,redo log将操作记录写入磁盘,完成日志记录过程。 以上是对给出的引用内容的回答,希望能够帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值