1.安装
看这位CSDN大佬:mysql-linn
mysql的启动与停止
Root密码设置与开启自启动
1.修改密码
2.连接数据库
3.登入mysql
4.查看是否设置开机启动 (没有chkconfig mysql on)
5设置数据库的字符集
1.拷贝配置文件到/etc下
2.字符集错误
3.查看字符集
4.修改
修改my.cnf文件 百度修改字符集方法把配置文件粘贴;
2.mysql的目录
MySQL的架构
3.MySQL性能调优
1.MySQL性能下降的主要原因
2.常见的join查询
1.sql执行顺序
2.sql joins
- 内连接
2.左连接
3.右连接
4.左外连接
5.右外连接
6.全连接
7.
演示:
默认的两张数据库:
内连接:
左连接:
右连接
独A表
独B:
全有:
全没有:
上面条件上各加is null;
4.什么是索引
1.官方定义
2.索引是什么
3.索引的优势和劣势
5.索引的分类和使用
1.单值索引
2.唯一索引
3.复合索引
4.基本语法
1.查看索引
2.添加索引的4种方式
5.MySQL索引结构 (BTree树)
6.那些情况下需要创建索引
7.哪些情况不需要索引
- 数据量太小 300万以下MySQL扛得住
- 经常要修改的表
- 数据值单一,有许多重复的内容
6.重点 MySQL的性能分析
1.MySQL常见瓶颈
2.explain (执行计划)
3.语法 (explain + sql语句)
4.名词段解释
1. id
2.select_type
1.有哪些
2.都是什么意思3.type
4. possible_keys 和 key
5.key_len
6.ref
7.rows
8.Extra
9.小练习
7.索引的优化案例
1.关于取值范围为索引导致的索引失效 sortfile提示
数据库表:
要求:
查询语句:
explain结果:
新建索引
explain分析
原因:因为取值是范围 所以用不上索引 出现文件内排序
删除,再键索引
2.关于join连接产生的索引失效
左连接查询
book建索引,查询。(左连接索引加右表)
class表建索引(左连接加左表)
3.关于三表查询键索引
class left book left phone 没建索引前分析的情况
class left book left phone 建索引后分析的情况
8.索引的优化和避免索引失效
索引优化口诀:
全值匹配我最爱,最左前缀要遵守;
带头大哥不能死,中间兄弟不能断;
索引列上少计算,范围之后全失效;
Like百分写最右,覆盖索引不写星;
不等空值还有or,索引失效要少用;
VAR引号不可丢,SQL高级也不难!
索引优化1:最佳左前缀法则
全值匹配我最爱,最左前缀要遵守;
带头大哥不能死,中间兄弟不能断;
创建的组合索引(这里是创建了name,age,pos)
1.最好的情况就是我们 按照索引的顺序查找
2.使用索引的第一个也不会失效
3.跨过索引第一个,直接查索引第二个 失效
4.使用索引第一位和第三位 (中间兄弟不能断)这里索引只用到了一个
索引优化2:索引列上少计算
索引优化3:范围之后全失效
正常情况
判断age使用到了范围 变为了一个范围的查找 之后的索引都会失效
索引优化4:覆盖索引不写星
正常情况:
不带星 性能更好
不带* 取值范围通过检索索引里的 也会增强效率
索引优化5:不等空值还有or,索引失效要少用;
正常情况下 使用 =
使用 != 索引失效
使用 is not null 或者 is null 也会导致索引失效
索引优化6:Like
使用 like 索引失效 使用Like查询 百分号最好在后边
如果非要使用%% 那么可以创建覆盖索引
索引优化7.varchar类型引号问题
测试:
9索引面试题分析
- 在常量查询内没有按照索引顺序 索引也不会失效 会优化
- 使用范围查找 查找后面的索引会失效
- 使用范围 顺序也颠倒了 之后范围索引后面的会失效 (顺序MySQL会调优)
- 中间断了 但是加了排序
5. 加了排序 和上面一样
- 中间断了 出现排序异常
- 只用c1一个字段 但是c2,c3用于排序 无filesort
- order by 没有按照索引顺序写 会索引失效 出现filesort
- c2和排序c2 重复 也不会出现异常、
- c1 c2用于查询 c2,c3用于排序 无filesort
- order by 没有按照顺序排序 都会出现filesort 但是如果排序字段已经是常量 那么不会索引失效
- 使用group by 索引就会失效 本身也会失效
- 分组 并且 索引顺序颠倒 灭绝师太!!!!
10. 查询截取分析
1. in和exists
2.为排序使用order by 优化
1.建表
2.示例
order by 也是排序 当排序的值和索引一致时 可以使用索引 当大哥没了 或者中间断了 就会filesort
排序时 和索引的位置不一样 也会导致索引失效
带头大哥没了索引失效 只要带头大哥没有了 索引就会失效
order by 默认升序 如果一升一降就会失效
3.group by优化
4.慢查询日志
开启慢查询日志:
- 查询是否开启 一般除了性能调优 不会开启 他会有一点性能的损耗
- 开启 并做设置
查询启动查询
- 查看超时sql
2.批量插入脚本
5.Show Profile
1.开启
2.开启:
3.运行sql
随便运行
4.查询执行过的sql
5.诊断
6.参数备注
看到这几个就严重了:
6.全局查询日志
11.数据库锁理论概述
1.什么是锁
2.三锁
1.表锁(偏读) :
2.行锁(偏写)
3.页锁(介于两者之间)
3.表锁读锁的案例讲解(MyISAM引擎)
1.查看表的加锁情况
2.创建锁
读锁
写锁
现在锁已经被创建了
3.解锁
1.加了读锁之后 读操作
2.加了读锁后写操作
1.本客户端写被锁住
同时还不可以读别的表
2.其他客户端 被阻塞
但是可以读
3.表锁写锁的案例讲解
加写锁
1.自己可以写自己的锁表
2.自己可以读自己的锁表
3.自己也不能读其他的表
1.其他可不可以读其他表
2.其他不可以读锁表
3.其他不可以修改锁表
4.表锁读锁写锁结论
4.行/锁案例讲解(InnoDB)
1.行锁的基本演示:
行锁就是连个同时修改同一行数据,当一方修改未提交时,另一方修改会导致阻塞;
2.两个客户端操作同一个表的不同行,不会被锁
2.无索引行锁升级为表锁
1.给varchar类型不加引号 导致索引失效 升级为表锁
2.在其他一个地方修改不同的行 导致锁住
5.间隙锁的危害
范围修改 2-6 但是,没有2;他会把范围内的都锁柱
这里添加2 被锁住
6.如何锁定一行
7.案例结论
12.主从复制
1.复制的原理
2.复制的规则
windows:
Linux:
注释:
在windows创建账户授权save
linux