MySQL自己梳理

本文详细阐述了SQL查询执行过程,包括连接器、查询缓存、解析器、预处理、优化和执行阶段。介绍了MySQL的常见存储引擎InnoDB和MyISAM的区别,NULL值的存储方式,char和varchar的差异以及索引类型对性能的影响。
摘要由CSDN通过智能技术生成

1.说一说执行一条查询 SQL 语句的全过程

谈一下我的理解,就是在执行一个查询SQL语句的时候,需要经过这几个阶段

1.连接器 它的作用时连接MySQL,校验使用者身份

2.查询缓存 如果命中了他中存在的就直接返回,没有就执行下一个,在MySQL8.0中他就被删除了

3.解析器 分析语法,分析词性,创建一个语法树

4.预处理阶段 就是检查这个表的完整性

5.优化阶段 选择一条成本最小的计划

6.执行阶段 按照执行计划执行,然后在储存引擎中查询记录,返回到客户端

2.MySQL 存储引擎有哪些?各自有什么区别?

比较常见的有两种 一是InnoDB 二是 Myisam这两种比较常见

另外还有archive csv blackhole 等等

3.MyISAM 和 InnoDB 存储引擎有什么区别?

这个两个的区别还是挺大的,在内存储存上,InnoDB将数据和索引数据存放在一块,而MyISAM是将这两个分开放的,同时InnoDB的B+树的叶子节点储存的是数据和索引数据,而MyISAM储存的是数据地址和索引数据

InnoDB是有行间索和日志,而MyISAM只有表锁

4.NULL 值是如何存储的?

在MySQL中compact行列式,有null值列表,null值就存放在null值列表中,其实就不会占据内存空间,然后null值列表需要占据1字节的空间

5.char 和 varchar 有什么区别?

在最大值上说char是255,而varchar是65535

char可以去空格 而varchar不可以,因为在储存时char不够就用空格填充

varchar会占用一到两个字节,因为他会存储字符串,如果大于255就两个字节,如果小于255就一个字节

还有就是他们的性能上,我认为大部分情况下varchar的性能大于char因为char在存储时会用空格填充,所以就会性能降低,也不是绝对的,因为char的空格填充在分页,断页等情况下也是起大作用的,而用varchar就是导致性能降低

6.假如说一个字段是varchar(10),但它其实只有6个字节,那他在内存中占的存储空间是多少?在文件中占的存储空间是多少?

分别占的存储空间时10和6

7.普通索引和唯一索引有什么区别?哪个更新性能更好?

普通索引的索引行是可以重复的,而唯一索引的索引行是不可以重复的

我觉得是普通索引的更新性能好

假如普通索引的更新页没有在内存中是可以放入change buffer 不用再进入磁盘中,而唯一索引这需要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
MySQL 内核参数是指 MySQL 数据库系统中可以配置和调整的各种参数。这些参数可以帮助我们优化 MySQL 数据库的性能和稳定性。以下是一些常用的 MySQL 内核参数: 1. `innodb_buffer_pool_size`: 这个参数指定了 InnoDB 存储引擎使用的内存缓存池的大小。默认值是 128MB,但是在实际生产环境中,我们需要根据数据量和服务器内存容量来调整这个参数的值。 2. `innodb_log_file_size`: 这个参数指定了 InnoDB 存储引擎的日志文件大小。默认值是 48MB。在高并发的写入场景下,如果日志文件过小,会导致频繁的切换和写入,影响性能。因此,我们需要根据实际情况来适当调整这个参数的值。 3. `max_connections`: 这个参数指定了 MySQL 数据库可以同时处理的最大连接数。默认值是 151。如果这个值过小,会导致连接被拒绝,如果这个值过大,会占用过多的系统资源。因此,我们需要根据实际情况来适当调整这个参数的值。 4. `query_cache_size`: 这个参数指定了 MySQL 查询缓存的大小。默认值是 0,表示禁用查询缓存。如果我们有一些经常被查询的数据,可以启用查询缓存来提高查询速度。但是,如果查询缓存过大,会占用过多的内存资源。 5. `tmp_table_size` 和 `max_heap_table_size`: 这两个参数指定了 MySQL 临时表的大小限制。默认值是 16MB。如果我们需要创建较大的临时表,需要适当调整这两个参数的值。 以上是一些常用的 MySQL 内核参数,但是在实际生产环境中,还需要根据具体情况来适当调整其他参数,以达到最优的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值