04

MySQL索引原理与慢查询优化

索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者w开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?

继续阅读全文

23

什么情况下会用到临时表

MySQL在以下几种情况会创建临时表:
1、UNION查询;
2、用到TEMPTABLE算法或者是UNION查询中的视图;
3、ORDER BY和GROUP BY的子句不一样时;
4、表连接中,ORDER BY的列不是驱动表中的;
5、DISTINCT查询并且加上ORDER BY时;
6、SQL中用到SQL_SMALL_RESULT选项时;
7、FROM中的子查询;
8、子查询或者semi-join时创建的表;

继续阅读全文

21

MySQL的SQL解析器和存储引擎层

客户端通过以SQL语句的形式发送请求给服务器端从而从表中获取数据或对表数据进行修改。而服务端程序使用以下两层处理模型以执行每个语句请求:dbdao.com
上层包括SQL解析器(parser)和优化器(optimizer)。
下层包括了一组存储引擎。

继续阅读全文

02

磁盘空间不足的临时解决方案

一、通过软连接的方式迁移部分表空间到其他硬盘 优点:对数据没有任何影响,反而可以适当增加IO能力,使用多个磁盘的IOPS 缺点:需要停机 处理步骤: 1、关掉mysql实例 2、cp big.ibd /new/big.ibd 3、rename big.ibd big.ibd.remove 4、ln -s big.ibd /new/big.ibd 5、chow -R mysql:mysql /new/big.ibd 6、启动数据库,检查是否异常 7、删掉 remove的文件. 。。。。

继续阅读全文