• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
MySQL查询优化:GROUP BY

MySQL查询优化:GROUP BY

一、group by 当我们执行 group by 操作在没有合适的索引可用的时候,通常先扫描整个表提取数据并创建一个临时表,然后按照 group by 指定的列进行排序。在这个临时表里面,对于每一个 group 的数据行来说是连续在一起的。完成排序之后,就可以发现所有的 groups,并可以执行聚集函数(aggregate function)。可以看到,在……

MySQL数据类型与属性

MySQL数据类型与属性

一、数据类型的作用 在关系型数据库中,表是由记录组成,而记录是由字段组成。所以我们在创建一张表时需要定义好每个字段,而每个字段也需要显式定义字段类型,MySQL支持多种数据类型,包括整数型、浮点型、字符型、二进制型、枚举型等等。 数据类型在数据库中扮演着基础但又非常重要的角色,对数据类型的选择将影响与数据库交互的应用程序的性能。通常来说,如果一个页内可以存放……

MySQL InnoDB崩溃恢复流程

MySQL InnoDB崩溃恢复流程

InnoDB如果发生意外宕机了,数据会丢么?对于这个问题,稍微了解一点MySQL知识的人,都会斩钉截铁的回答:不会!为什么?他们也会毫不犹豫的说:因为有重做日志(redo log),数据可以通过redo log进行恢复。回答得很好,那么InnoDB怎样通过redo log进行数据的恢复的,具体的流程是怎样的?估计能说清楚这个问题的人剩的不多了,更深入一点:除……

MySQL InnoDB MVCC实现原理

MySQL InnoDB MVCC实现原理

数据多版本(MVCC)是MySQL实现高性能的一个主要的方式,InnoDB为了实现多版本的一致读,采用的是基于回滚段的协议。通过对普通的SELECT不加锁,直接利用MVCC读取指版本的值,避免了对数据重复加锁的过程,今天我们就用最简单的方式,来分析下MVCC具体的原理,先解释几个概念: 一、行结构 InnoDB表数据的组织方式为主键聚簇索引。由于采用索引组织……

MySQL 5.7 InnoDB COUNT(*)优化

MySQL 5.7 InnoDB COUNT(*)优化

一、背景 很多时候我们都会使用 count(*) 函数来统计表中的行数,但是,你会发现随着系统中记录数越来越多,这条语句执行得也会越来越慢。然后你可能就想了,MySQL 怎么这么笨啊,记个总数,每次要查的时候直接读出来,不就好了吗。 那么今天,我们就来聊聊 count(*) 语句到底是怎样实现的,以及 MySQL 为什么会这么实现。然后,我会再和你说说,如果……

MySQL中NULL值讨论

MySQL中NULL值讨论

学习过关系型数据库的伙伴都知道,NULL 是指不确定的值,在数据库中绝对是噩梦的存在;而空值,一般对字符串类型而言,指没有任何值的字符串类型,为字符类型的变量设置为空值:set @vs=””,空值跟无值不同。有人可能会问,无值是什么?无值,是指数据表中没有任何数据。无值和不确定值,单从字面意思上来看,两者之间的定义很清楚,一旦深究,这……

Hadoop实战:使用Maxwell将MySQL数据实时同步到HDFS

Hadoop实战:使用Maxwell将MySQL数据实时同步到HDFS

一、Maxwell介绍 Maxwell是一个守护程序,一个应用程序,能够读取MySQL Binlogs然后解析输出为json。支持数据输出到Kafka中,支持表和库过滤。 → Reference:http://maxwells-daemon.io → Download: https://github.com/zendesk/maxwell/releases/……

MySQL查询优化:ORDER BY

MySQL查询优化:ORDER BY

通常我们通过explain查看MySQL执行计划时,经常会看到在Extra列中显示Using filesort。其实这种情况就说明MySQL使用了排序。Using filesort经常出现在order by、group by、distinct、join查询等情况下。 一、使用索引来满足ORDER BY 为了优化SQL语句的排序性能,最好的情况是避免排序,合理……

MySQL基准测试工具sysbench实践

MySQL基准测试工具sysbench实践

一、Sysbench介绍 SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试: 1、cpu性能 2、磁盘io性能 3、调度程序性能 4、内存分配及传输速度 5、POSIX线程性能 6、数据库性能(OLTP基准测试) Sysbench的oltp主要用于评估测试各种不同系统……

MySQL Waiting for table metadata lock故障分析

MySQL Waiting for table metadata lock故障分析

源起 线上执行ALTER时,通过show processlist查看到出现Waiting for table metadata lock ,导致后面的查询都无法执行。 5217122 | create_table_04 | 172.100.207.148:31291 | finance | Query | 1829 | Wa……

MySQL常见的SQL优化案例

MySQL常见的SQL优化案例

前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQ……

MySQL InnoDB B+tree索引

MySQL InnoDB B+tree索引

假设我们知道 InnoDB 数据页的结构,知道了各个数据页可以组成一个双向链表,而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。页和记录的关系示意图如下: 其中 页……