草庐IT

【干货】MySQL底层架构设计,你了解多少?

很多开发同学对SQL优化如数家珍,却对MySQL架构一知半解。岂不是只见树叶,不见森林,终将陷入细节中不能自拔。今天就一块学习MySQL分层架构,深入了解MySQL底层实现原理,以及每层的作用,我们常见的SQL优化到底在哪一层做了优化?1.MySQL整体架构由图中可以看到MySQL架构主要分为Server层和存储引擎层。Server层又分为连接器、缓存、分析器、优化器、执行器。所有跨存储引擎的功能都在这层实现,比如:函数、存储过程、触发器、视图等。存储引擎是可插拔式的,常见的存储引擎有MyISAM、InnoDB、Memory等,MySQL5.5之前默认的是MyISAM,之后默认的是InnoDB

【干货】MySQL底层架构设计,你了解多少?

很多开发同学对SQL优化如数家珍,却对MySQL架构一知半解。岂不是只见树叶,不见森林,终将陷入细节中不能自拔。今天就一块学习MySQL分层架构,深入了解MySQL底层实现原理,以及每层的作用,我们常见的SQL优化到底在哪一层做了优化?1.MySQL整体架构由图中可以看到MySQL架构主要分为Server层和存储引擎层。Server层又分为连接器、缓存、分析器、优化器、执行器。所有跨存储引擎的功能都在这层实现,比如:函数、存储过程、触发器、视图等。存储引擎是可插拔式的,常见的存储引擎有MyISAM、InnoDB、Memory等,MySQL5.5之前默认的是MyISAM,之后默认的是InnoDB

MySQL查询性能优化七种武器之索引下推

前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下:MySQL查询性能优化七种武器之索引潜水MySQL查询性能优化七种武器之链路追踪今天要讲的是MySQL的另一种查询性能优化方式—索引下推(IndexConditionPushdown,简称ICP),是MySQL5.6版本增加的特性。1.索引下推的作用主要作用有两个:减少回表查询的次数减少存储引擎和MySQLServer层的数据传输量总之就是了提升MySQL查询性能。2.案例实践创建一张用户表,造点数据验证一下:CREATETABLE`user`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'主键',`

MySQL查询性能优化七种武器之索引下推

前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下:MySQL查询性能优化七种武器之索引潜水MySQL查询性能优化七种武器之链路追踪今天要讲的是MySQL的另一种查询性能优化方式—索引下推(IndexConditionPushdown,简称ICP),是MySQL5.6版本增加的特性。1.索引下推的作用主要作用有两个:减少回表查询的次数减少存储引擎和MySQLServer层的数据传输量总之就是了提升MySQL查询性能。2.案例实践创建一张用户表,造点数据验证一下:CREATETABLE`user`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'主键',`

MySQL查询为什么没走索引?这篇文章带你全面解析

工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引?同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事?原因可能是索引失效了,失效的原因有以下几种,看你有没有踩过类似的坑?1.数据准备:有这么一张用户表,在name字段上建个索引:CREATETABLE`user`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(255)DEFAULTNULLCOMMENT'姓名',`age`intDEFAULTNULLCOMMENT'年龄',PRIMARYKEY(`id`),KEY`i

MySQL查询为什么没走索引?这篇文章带你全面解析

工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引?同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事?原因可能是索引失效了,失效的原因有以下几种,看你有没有踩过类似的坑?1.数据准备:有这么一张用户表,在name字段上建个索引:CREATETABLE`user`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(255)DEFAULTNULLCOMMENT'姓名',`age`intDEFAULTNULLCOMMENT'年龄',PRIMARYKEY(`id`),KEY`i

手把手教你分析MySQL查询性能瓶颈,包教包会

当一条SQL执行较慢,需要分析性能瓶颈,到底慢在哪?我们一般会使用Explain查看其执行计划,从执行计划中得知这条SQL有没有使用索引?使用了哪个索引?但是执行计划显示内容不够详细,如果显示用到了某个索引,查询依然很慢,我们就无法得知具体是哪一步比较耗时?好在MySQL提供一个SQL性能分析工具—Profile。Profile可以帮助我们分析SQL性能瓶颈和资源消耗情况。1.查看Profile配置showvariableslike'%profil%';have_profiling表示是否支持profile功能,YES表示支持profiling表示是否开启profile功能,ON开启,OFF关

高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏

1.MySQL主从同步实现方式MySQL主从同步是基于BinLog实现的,而BinLog记录的是原始SQL语句。BinLog共有三种日志格式,可以binlog_format配置参数指定。参数值含义Statement记录原始SQL语句,会导致更新时间与原库不一致。比如update_time=now()Row记录每行数据的变化,保证了数据与原库一致,缺点是数据量较大。MixedStatement和Row的混合模式,默认采用Statement模式,涉及日期、函数相关的时候采用Row模式,既减少了数据量,又保证了数据一致性。常见的主从同步架构有一主多从、双主多从。2.MySQL主从同步的作用读写分离,

手把手教你分析MySQL查询性能瓶颈,包教包会

当一条SQL执行较慢,需要分析性能瓶颈,到底慢在哪?我们一般会使用Explain查看其执行计划,从执行计划中得知这条SQL有没有使用索引?使用了哪个索引?但是执行计划显示内容不够详细,如果显示用到了某个索引,查询依然很慢,我们就无法得知具体是哪一步比较耗时?好在MySQL提供一个SQL性能分析工具—Profile。Profile可以帮助我们分析SQL性能瓶颈和资源消耗情况。1.查看Profile配置showvariableslike'%profil%';have_profiling表示是否支持profile功能,YES表示支持profiling表示是否开启profile功能,ON开启,OFF关

高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏

1.MySQL主从同步实现方式MySQL主从同步是基于BinLog实现的,而BinLog记录的是原始SQL语句。BinLog共有三种日志格式,可以binlog_format配置参数指定。参数值含义Statement记录原始SQL语句,会导致更新时间与原库不一致。比如update_time=now()Row记录每行数据的变化,保证了数据与原库一致,缺点是数据量较大。MixedStatement和Row的混合模式,默认采用Statement模式,涉及日期、函数相关的时候采用Row模式,既减少了数据量,又保证了数据一致性。常见的主从同步架构有一主多从、双主多从。2.MySQL主从同步的作用读写分离,