1. 安装 MySql 后的一些问题

1.1 字符乱码问题

  1. 在 MySql 配置文件加入字符编码
character_set_server=utf8
  1. 重启 MySql 服务器
  2. 修改已存在的数据库的字符集
alter database 数据库名 character set 'utf8';
  1. 修改数据表的字符集
alter table 表名 convert to character set 'utf8';

1.2 权限修改

  1. 查看权限(\G : 按列显示)
select * from user\G;
  1. 授权(所有库、所有表的全部权限)并设密码
grant all privileges on *.* to root@'%' identified by '123456';

1.3 修改密码

  1. 修改某个用户的密码
update mysql.user set password=password('123456') where user='root';
  1. 修改完后一定要刷新
flush privileges;

1.4 查看 sql_mode

show variables like 'sql_mode';

2. 逻辑架构

2.1 底层原理(执行流程)

  1. 进入数据库
  2. 访问数据库连接池
  3. 访问 “缓存和缓冲”,若在缓存中命中,则直接返回,不继续访问
  4. 若 第3步 未命中,则访问接口
  5. 访问解析器
  6. 访问优化器(在不改变查询结果的情况下调整 sql 的顺序),在此处生成执行计划。
  7. 存储引擎按照执行计划,打开表、查询数据、返回结果
  8. 流程图

2.2 查看执行周期(通过代码查看上述流程)

  1. 修改配置文件开启查询缓存
query_cache_type=1;
  1. 重启 MySQL
  2. 开启 profiling
show variables like '%profiling%';
set profiling=1;
  1. 查询数据
select * from mytb where id=2;
  1. 查看查询缓存
show profiles;

mysql 尚硅谷优化技巧 尚硅谷mysql高级笔记_mysql 尚硅谷优化技巧

  1. 查看具体的缓存信息(query 后的值 对应上表的 id)
show profile cpu.block io for query 2;

mysql 尚硅谷优化技巧 尚硅谷mysql高级笔记_mysql 尚硅谷优化技巧_02

  1. 注意
    只有 sql 语句一模一样才会命中缓存。

2.3 Performance Schema 性能架构

show databases;

mysql 尚硅谷优化技巧 尚硅谷mysql高级笔记_数据库_04


会发现有这样一个数据库

这里面就是该性能架构的相关文件

2.4 sql 语句执行顺序

  1. 手写时

mysql 尚硅谷优化技巧 尚硅谷mysql高级笔记_sql_05

  1. 机读后
  • 这就是优化器的作用

3. 存储引擎

3.1 查询命令

show engines;

3.2 MyISAM 和 InnoDB (实际应用)

  • 前四点最重要

3.3 其他引擎的介绍

  1. Archive 引擎(档案引擎)
    只支持 insert 和 select 操作
  2. Blackhole 引擎(黑洞引擎)
    不会执行任何查询操作,只会把查询语句存储到日志中
  3. CSV 引擎
    可以将普通的 CSV 文件作为 Mysql 的表来处理,但不支持索引
    可以作为一种数据交换的机制(报表系统、文本编辑)
  4. Memory 引擎
    快速的访问数据库
  5. Federated 引擎(联合引擎)
    若 表A 和 表B 在不同主机上,不能关联查询时,可在 表A 所在主机上 新建一个与 表B 一模一样的表,但只存放 访问 表B 的访问地址、用户名、密码等信息,这就是联合引擎
    只支持简单的两表查询,不支持更多表连接和排序、分组 等的操作
    补充:若要实现多表查询、分析,需要使用 数据中心 ,即定时的把 表A 表B 的数据读入数据中心,在数据中心里分析