mysql补充

1、一条sql语句的执行(mysql的基础架构)

(1)客户端

(2)server层:所有跨存储引擎的功能都在这一层实现,如内置函数、存储存储过程、触发器、试图等

  1. 连接器:连接管理,权限验证
  2. 查询缓存:查询缓存往往弊大于利,MySQL 8.0 版本直接将查询缓存的整块功能删掉了
  3. 分析器:分析sql语句要做什么,词法分析,语法分析
  4. 优化器:分析具体怎么做,选择执行的索引,生成执行计划
  5. 执行器:操作引擎,调用存储引擎的接口去具体的操作, 返回结果       

(3)存储引擎

负责数据的存储和提取,是插件式的,支持MyISAM、InnoDB等,默认的存储引擎(MySQL 5.5.5 版本后)为InnoDB

2、MySQL数据库中MyISAM和InnoDB的区别

(1)事务:InnoDB支持,MyIsam不支持

(2)行锁:InnoDB支持,MyIsam不支持

(3)外键:InnoDB支持,MyIsam不支持

(4)聚簇索引和非聚簇索引:聚簇索引指的是数据和索引是在一起的,非聚簇索引指数据和索引分开,即索引中不包含具体数据。

        InnoDB的主键索引为聚簇索引,非主键索引为非聚簇索引,MyISAM中只有非聚簇索引

(5)总数据行数:InnoDB中不保存表的总的数据行数,执行Select count(*) from table时做全表扫描;MyIsam会记录总的数据行数。

3、一条sql更新语句的执行

(1)基本流程:

  • 从磁盘读取数据页到内存中
  • 将内存中对应数据进行修改
  • 将修改后的数据写入到磁盘中

(2)ChangeBuffer的作用:

  • 在执行更新语句时进行优化,可以减少磁盘读取的次数
  • 要修改的数据页不在内存中,直接将数据的修改记录到ChangeBuffer中并记录日志,当真正要读取该数据时,将ChangeBuffer中对应的数据修改merge到内存的数据页中
  • 当存在对唯一性索引的修改时不能使用ChangeBuffer

&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了在MySQL补充空行,你可以使用row_number()函数来创建一个虚拟的行号列。这个函数可以为结果集中的每一行分配一个唯一的行号。通过这个行号列,你可以筛选出空行,并将其插入到结果中。 下面是一个示例查询,演示如何在MySQL补充空行: SELECT * FROM ( SELECT *, row_number() OVER (ORDER BY (SELECT 0)) AS rowNumber FROM yourTable ) AS myValues WHERE myValues.rowNumber <> '' ORDER BY myValues.rowNumber DESC; 这个查询中,我们在原始查询的外部包装了一个子查询。子查询使用row_number()函数为结果集中的每一行分配一个行号。然后,我们通过WHERE子句筛选出非空行,并使用ORDER BY子句按照行号降序排列结果。 请注意,你需要将"yourTable"替换为你实际的名,并根据需要调整查询的其他部分来适应你的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [用前一行的值填充空行mysql](https://blog.csdn.net/weixin_39901518/article/details/113116944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL加入空行](https://blog.csdn.net/weixin_34693167/article/details/113333919)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值