慢 SQL 定位与优化

0 基本思路 基本思路如下: 根据慢日志定位慢查询 sql 使用 explain 等工具分析 sql 修改 sql,尽量让 sql 走索引 下面依次展开。 1 根据慢日志定位慢查询 sql 先来认识一下 mysql 中的几个变量: long_query_time:定义了查询时间超过多少秒,即认为属于慢 sql slow_query_log:一个开关,控制是否记录慢日志 slow_query_log

深入理解 B+ 树

1 什么是 B+ 树?有什么用? 1.1 数据结构 B+ 树是一种数据结构,是大多数 MySQL 存储引擎的默认索引类型,用于提高查询效率。 B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。 B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。

docker 运行 phpMyAdmin

phpMyAdmin 有官方镜像,用起来很方便。 在 8090 端口启动,命令如下: docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8090:80 phpmyadmin 这里设置了环境变量 PMA_ARBITRARY=1,可以在登陆框中输入 MySQL 服务器地址(否则不会显示这个输入框)。 上面那条命令运行之后,phpmyadmin

docker 启动 mysql5.7

电脑里装的是 mysql 8.0,运行某个项目需要用到 5.7,于是用 docker 启动一个 mysql。 命令如下,备忘: docker pull mysql:5.7 // 拉取镜像 docker images // 查看镜像,确保已经拉取成功 docker run -p 3306:3306 --restart=always --privileged=true --name mysql57 -

用守护进程保护服务器上的 MySQL

问题背景 迁移到阿里云后,经常出现 MySQL 异常退出的问题。导致博客打不开。每次都是我发现之后,去服务器上重启 MySQL。 解决方案:用守护进程来监控 MySQL 的状态,如果发现它挂了,就自动重启。 编写守护进程代码 用 shell  脚本来写守护进程,比较方便。 代码如下(mysql-deamon.sh): #!/bin/sh while true; do   status=$(serv

验证 SQL 的排序规则

问题 在 SQL 中,各个字符的排序规则是什么?哪个在前,哪个在后? 例如,我想知道下面这些字符在 SQL 中的顺序,怎么办? 0123ABCDabcd!@#$%^&*()-_+={};:'"\|`~,.<>/? 解决方案 思路:在 MySQL 中创建一张表,只存一列数据,格式为 CHAR(1),然后依次插入上面的字符,再用 SELECT ORDER BY 来查看顺序。 S

SQL中的索引(index)

sql 中可以为数据列创建索引,具体语法见:http://www.w3school.com.cn/sql/sql_create_index.asp 索引有啥用? 提高 SELECT 语句的查询效率。当 WHERE 条件中包含索引列时,MySQL(以它为例)会根据索引列拿到数据表的子集,然后进行筛选;而不必先查询完整的数据表(当数据量很大时,效率会很低),再进行条件过滤。 注意:索引也有不适用的时候

sql 语法基础(笔记)

主要有两类语句: DDL(数据定义语句) CREATE TABLE/DATABASE ALTER TABLE/DATABASE DROP TABLE/DATABASE DML(数据管理语句) INSERT 新增 DELETE 删除 UPDATE 修改 INSERT 插入 -- 创建并使用数据库 CREATE DATABASE mydatabase USE mydatabase 创建新闻表并插入数据

从MySQL中导出Excel

试过几种方法,还是这种最好用: (ubuntu系统)命令行下,输入 mysql -u plough -p -e "select * from douban_book.Books" > book.xls