
MySQL
文章平均质量分 83
LuciferV路西法
数据库行业从业者,分享数据库相关的技术文章,行业动态,欢迎关注。
个人网站:www.mytecdb.com
展开
-
MySQL如何避免全表扫描
MySQL全表扫描在大多数场景下性能都是非常低下的,尤其在表数据量特别大的情况下,全表扫描会耗尽数据库资源,严重时会导致数据库服务不可用,数据库崩溃,因此,业务SQL在发布上线前,应当检查是否会导致全表扫描。原文地址:https://mytecdb.com/blogDetail.php?id=1041. MySQL全表扫描的原因通过对SQL执行explain,在输出信息中如果type字...原创 2020-03-17 09:03:32 · 1603 阅读 · 0 评论 -
MySQL性能优化-索引条件下推ICP(Index Condition Pushdown)
索引条件下推,Index Condition Pushdown,简称ICP,是MySQL通过索引查询数据的一种优化方法,对于特定场景下的SQL优化具有明显的性能提高。原文地址:https://mytecdb.com/blogDetail.php?id=971. ICP索引下推原理举一个例子,有一个索引如下:idx_all(a,b,c)查询语句:select d from t wh...原创 2020-03-14 16:21:19 · 541 阅读 · 0 评论 -
MySQL性能优化-条件过滤(Condition Filtering)
MySQL在处理join查询时,遍历驱动表的记录,把驱动表的记录传递给被驱动表,然后根据join连接条件进行匹配。优化器通常会将更小的表作为驱动表,通过在驱动表上做额外的where条件过滤(Condition Filtering),能够将驱动表限制在一个更小的范围,以便优化器能够做出更优的执行计划。原文地址:https://mytecdb.com/blogDetail.php?id=97...原创 2020-03-14 16:19:05 · 1738 阅读 · 0 评论 -
如何开发一个自定义的MySQL插件
MySQL自带了很多插件,比如半同步插件、审计插件、密码验证插件等等,甚至MySQL存储引擎也是以插件方式实现的。MySQL开放的插件接口,为开发者开发自定义插件提供了便利。本文将介绍如何快速开发一个自定义的MySQL插件。原文地址:https://mytecdb.com/blogDetail.php?id=92一、开发环境准备下载MySQL源码,本文使用的源码是 Percona S...原创 2020-03-14 16:16:57 · 741 阅读 · 0 评论 -
MySQL主从复制从库SQL线程源码分析
MySQL主从复制通过Binlog进行数据传输,主库写入数据,生成Binlog,通过dump线程将Binlog发送给从库,从库IO线程接收Binlog并写入自己的relay log,SQL线程应用relay log里的事务。本文结合MySQL源码,分析SQL线程的主要处理过程。MySQL源码版本:5.7.19原文地址:https://mytecdb.com/blogDetail.php?...原创 2020-03-14 13:21:25 · 670 阅读 · 0 评论 -
MySQL主从复制过滤
MySQL主从复制是逻辑复制,基于Binlog进行主从数据传输,MySQL提供了丰富的参数来配置主从复制过滤条件。在主库可以设置对于库的数据写入是否写入binlog,在从库可以设置对某些库或者表的binlog是否忽略。本文将简单描述MySQL主从复制过滤的相关参数和常见用法。原文地址:https://mytecdb.com/blogDetail.php?id=88MySQL版本:5.7.1...原创 2020-03-14 13:20:07 · 1007 阅读 · 0 评论 -
MySQL主从复制主库binlog dump线程源码分析
在之前的文章《mysql主从复制io线程源码分析》,我们分析了MySQL从库的io线程工作的主要过程,大致回顾一下,如下:连接主库发送COM_REGISTER_SLAVE命令注册从库发送COM_BINLOG_DUMP_GTID命令请求拉取binlog下面将结合源码,分析一下主库接收到从库io线程发送过来的命令后,是如何具体处理的。MySQL源码版本:5.7.19原文地址:http...原创 2020-03-14 13:17:29 · 1410 阅读 · 0 评论 -
MySQL主从复制从库IO线程源码分析
mysql主从复制通过binlog来同步数据,在从库上执行start slave,会开启两个线程,分别是io线程和sql线程。io线程负责从主库拉取binlog并存储到本地的relay log,sql线程负责把relay log中的事务在从库应用。本文将结合源码分析io线程的具体实现。MySQL源码版本:5.7.19原文地址:https://mytecdb.com/blogDetail....原创 2020-03-14 13:15:47 · 941 阅读 · 0 评论 -
MySQL count(*),count(1),count(field)区别、性能差异及优化建议
count函数是用来获取表中满足一定条件的记录数,常见用法有三种,count(*),count(1),count(field),这三种有什么区别?在性能上有何差异?本文将通过测试案例详细介绍和分析。原文地址:mytecdb.com/blogDetail.php?id=81三者有何区别:count(field)不包含字段值为NULL的记录。count(*)包含NULL记录。sele...原创 2020-03-14 13:13:52 · 646 阅读 · 0 评论 -
MySQL SQL性能分析 Profiling Using Performance Schema
MySQL一直以来提供show profile命令来获取某一条SQL执行过程中的资源使用与耗时情况,这个命令对于分析具体SQL的性能瓶颈有非常大的帮助,但是这个功能在MySQL新的版本里将会被废弃,取而代之的是使用Performance Schema来提供同样的功能。本文将介绍如何使用Performance Schema来实现show profile SQL性能分析的功能。原文地址:htt...转载 2020-03-02 13:41:09 · 688 阅读 · 0 评论 -
MySQL SQL性能分析 show profile
MySQL show profile 和 show profiles 命令用于展示SQL语句执行过程中的资源使用情况,包括CPU的使用,CPU上下文切换,IO等待,内存使用等,这个命令对于分析某个SQL的性能瓶颈非常有帮助,借助于show profile的输出信息,能让我们知道一个SQL在哪个阶段耗时最长,消耗资源最多,从而为SQL优化,提高SQL性能提供重要的依据。原文地址:https:...转载 2020-03-02 13:39:23 · 797 阅读 · 0 评论 -
MySQL 主从幂等复制slave_exec_mode=IDEMPOTENT
MySQL slave_exec_mode 参数用于控制主从复制数据冲突时的处理策略,可选值有STRICT和IDEMPOTENT,分别代表严格模式和幂等模式,默认值为STRICT,该参数可动态调整。原文地址:https://mytecdb.com/blogDetail.php?id=76STRICT,严格模式IDEMPOTENT,幂等模式默认STRICT模式下,从库复制过程中,发...原创 2020-02-29 20:28:13 · 1500 阅读 · 0 评论 -
MySQL8.0新特性CTE(Common Table Expression)
CTE(Common Table Expression)可以认为是派生表(derived table)的替代,在一定程度上,CTE简化了复杂的join查询和子查询,提高了SQL的可读性和执行性能。CTE是ANSI SQL 99标准的一部分,在MySQL 8.0.1版本被引入。原文地址:mytecdb.com/blogDetail.php?id=751. CTE优势查询语句的可读性更好...转载 2020-02-29 14:36:01 · 541 阅读 · 0 评论 -
MySQL高效的逻辑备份工具mydumper & myloader
mydumper是开源的MySQL数据库逻辑备份工具,相比于mysqldump,它能够提供快速、高并发的数据导出与导入功能。帮助文档:http://centminmod.com/mydumper.html下载地址:https://launchpad.net/mydumper安装(CentOS 6.5,mydumper 0.2.3):yum install m原创 2017-04-18 00:43:27 · 1879 阅读 · 0 评论 -
MySQL数据一致性检查的几个工具
1、MySQL checksum命令在执行checksum命令时,表会被加一个读锁(read lock),checksum table的原理是对表中的数据进行一行一行的较验和计算,因些对于大表,这是一个很耗时的过程。如果对于myisam表,建表时加上CHECKSUM=1选项,那么在对这样的表进行checksum table时将会非常快checksum table tes原创 2017-03-13 01:09:46 · 13467 阅读 · 0 评论