MySQL架构

mysql架构图:

Mysql技术简介 mysql技术大全_存储引擎

 mysql查询语句限制性from语句

mysql分层以及可插拔的存储引擎

  1. 连接层
  2. 服务层
  3. 存储引擎层
  4. 数据存储层

 

sql语句:

show engines; 查看当前支持的存储引擎

show variables like '%storage_engine%';  查看当前默认存储引擎

Mysql技术简介 mysql技术大全_Mysql技术简介_02

 MyISAM和InnoDB的区别:

Mysql技术简介 mysql技术大全_Mysql技术简介_03

MySQL优化分析:

创建索引:create index ind_user_name【索引名称】 on user【表名】(`name`【字段名称】);

Mysql技术简介 mysql技术大全_字段_04

SQL执行顺序:

我们手写SQL的顺序:

Mysql技术简介 mysql技术大全_mysql_05

mysql解析SQL顺序:

Mysql技术简介 mysql技术大全_字段_06

MySQL JOIN连接

Mysql技术简介 mysql技术大全_mysql_07

Mysql技术简介 mysql技术大全_存储引擎_08

Mysql技术简介 mysql技术大全_字段_09

Mysql技术简介 mysql技术大全_存储引擎_10

Mysql技术简介 mysql技术大全_Mysql技术简介_11

Mysql技术简介 mysql技术大全_存储引擎_12

Mysql技术简介 mysql技术大全_Mysql技术简介_13

索引:

基本概念:

Mysql技术简介 mysql技术大全_存储引擎_14

Mysql技术简介 mysql技术大全_mysql_15

Mysql技术简介 mysql技术大全_字段_16

Mysql技术简介 mysql技术大全_mysql_17

优劣势:

Mysql技术简介 mysql技术大全_Mysql技术简介_18

Mysql技术简介 mysql技术大全_Mysql技术简介_19

索引分类:

实际应用过程中建复合索引>单值索引

Mysql技术简介 mysql技术大全_存储引擎_20

Mysql技术简介 mysql技术大全_字段_21

B-TREE:

Mysql技术简介 mysql技术大全_Mysql技术简介_22

Mysql技术简介 mysql技术大全_mysql_23

Mysql技术简介 mysql技术大全_字段_24

Mysql技术简介 mysql技术大全_mysql_25

性能分析:

Mysql技术简介 mysql技术大全_Mysql技术简介_26

mysql查询优化器:

Mysql技术简介 mysql技术大全_mysql_27

Mysql技术简介 mysql技术大全_mysql_28

Explain:

Mysql技术简介 mysql技术大全_字段_29

Mysql技术简介 mysql技术大全_Mysql技术简介_30

Mysql技术简介 mysql技术大全_Mysql技术简介_31

explain各字段解释:

Mysql技术简介 mysql技术大全_存储引擎_32

Mysql技术简介 mysql技术大全_mysql_33

Mysql技术简介 mysql技术大全_字段_34

Mysql技术简介 mysql技术大全_字段_35

type:

Mysql技术简介 mysql技术大全_Mysql技术简介_36

Mysql技术简介 mysql技术大全_存储引擎_37

Mysql技术简介 mysql技术大全_mysql_38

Mysql技术简介 mysql技术大全_存储引擎_39

Mysql技术简介 mysql技术大全_字段_40

Mysql技术简介 mysql技术大全_字段_41

Mysql技术简介 mysql技术大全_mysql_42

Mysql技术简介 mysql技术大全_存储引擎_43

extra:

Mysql技术简介 mysql技术大全_mysql_44

Mysql技术简介 mysql技术大全_mysql_45

Mysql技术简介 mysql技术大全_字段_46

Mysql技术简介 mysql技术大全_存储引擎_47

Mysql技术简介 mysql技术大全_Mysql技术简介_48

Mysql技术简介 mysql技术大全_存储引擎_49

Mysql技术简介 mysql技术大全_存储引擎_50

Mysql技术简介 mysql技术大全_存储引擎_51

索引优化:

Mysql技术简介 mysql技术大全_存储引擎_52

索引失效原因:

Mysql技术简介 mysql技术大全_存储引擎_53

Mysql技术简介 mysql技术大全_mysql_54

 

Mysql技术简介 mysql技术大全_字段_55

 根据上图,使用like查询时,如果左边有%,则会发生全表扫描问题,如果like的时候必须使用左右%且要求用上索引,那么需要使用覆盖索引来解决,也就是只查添加索引的字段

Mysql技术简介 mysql技术大全_Mysql技术简介_56

Mysql技术简介 mysql技术大全_mysql_57

 尽量使用组合索引,遵循最左前缀原则;like左边带%无法使用索引,是因为匹配字段的开头是不确定的字段数量和内容,无法使用索引进行检索,左侧无%能使用索引是因为左侧开头能够确定字母,例如是k%,那么mysql最起码可以直接根据索引的排序功能先从k开头的索引进行查找

索引的作用有两个:1.检索;2.排序;检索意味着条件查询,排序意味着大于、小于、排序等操作有效

group by基本上都需要进行排序,会有临时表生成

Mysql技术简介 mysql技术大全_存储引擎_58

Mysql技术简介 mysql技术大全_存储引擎_59

查询截取分析:

大纲: 

Mysql技术简介 mysql技术大全_Mysql技术简介_60

mysql优化步骤:

Mysql技术简介 mysql技术大全_存储引擎_61

查询优化:

Mysql技术简介 mysql技术大全_字段_62

Mysql技术简介 mysql技术大全_存储引擎_63

order by:

Mysql技术简介 mysql技术大全_存储引擎_64

Mysql技术简介 mysql技术大全_字段_65

group by: 

Mysql技术简介 mysql技术大全_存储引擎_66

慢查询:

Mysql技术简介 mysql技术大全_Mysql技术简介_67

Mysql技术简介 mysql技术大全_mysql_68

 

Mysql技术简介 mysql技术大全_存储引擎_69

 使用set global slow_query_log=1默认本次生效,重启mysql后失效。

Mysql技术简介 mysql技术大全_存储引擎_70

set global long_query_time=3;

使用select sleep(4);执行长时间查询来测试是否开启慢查询成功。

查询当前系统中记录的慢查询sql条数:show global status like '%Slow_queries%';

Mysql技术简介 mysql技术大全_存储引擎_71

 

Mysql技术简介 mysql技术大全_存储引擎_72

Mysql技术简介 mysql技术大全_字段_73

 

showProfile:

Mysql技术简介 mysql技术大全_Mysql技术简介_74

 

Mysql技术简介 mysql技术大全_存储引擎_75

Mysql技术简介 mysql技术大全_存储引擎_76

开启showProfile

Mysql技术简介 mysql技术大全_字段_77

Mysql技术简介 mysql技术大全_Mysql技术简介_78

 例如:show profile cpu,block io for query 1;

上方相关查询参数:

Mysql技术简介 mysql技术大全_字段_79

 日常开发过程中当使用showProfil工具分析时,如果出现以下四点那么需要注意:

Mysql技术简介 mysql技术大全_字段_80

 

 全局查询日志:

Mysql技术简介 mysql技术大全_字段_81

mysql锁机制:

Mysql技术简介 mysql技术大全_存储引擎_82

 按照对锁的操作类型分为读锁和写锁:

Mysql技术简介 mysql技术大全_Mysql技术简介_83

 按照锁的粒度分为表锁和行锁。

表锁:

Mysql技术简介 mysql技术大全_字段_84

 

Mysql技术简介 mysql技术大全_字段_85

show open tables;查看当前数据库的表的状态,包含锁信息。

给表解锁:unlock tables;

读锁:

Mysql技术简介 mysql技术大全_mysql_86

Mysql技术简介 mysql技术大全_字段_87

 写锁:

Mysql技术简介 mysql技术大全_Mysql技术简介_88

总结: 

 

Mysql技术简介 mysql技术大全_字段_89

Mysql技术简介 mysql技术大全_mysql_90

 

Mysql技术简介 mysql技术大全_mysql_91

 

行锁:

特点:

Mysql技术简介 mysql技术大全_存储引擎_92

Mysql技术简介 mysql技术大全_Mysql技术简介_93

 

Mysql技术简介 mysql技术大全_存储引擎_94

 并发事务带来的问题:

Mysql技术简介 mysql技术大全_mysql_95

Mysql技术简介 mysql技术大全_字段_96

 

Mysql技术简介 mysql技术大全_字段_97

Mysql技术简介 mysql技术大全_存储引擎_98

Mysql技术简介 mysql技术大全_字段_99

事务的隔离级别:

Mysql技术简介 mysql技术大全_mysql_100

 行锁:

Mysql技术简介 mysql技术大全_Mysql技术简介_101

 

Mysql技术简介 mysql技术大全_存储引擎_102

 

 更新数据时索引失效会导致行锁升级为表锁:

例如b字段是varchar类型,从前面的章节我们知道查询时,条件中如果varchar类型没有加单引号,会导致索引失效;同样的如果在更新的时候,如update table set a=xxx where b=xxx,此处b没有加单引号会导致索引失效,最终导致行锁变成表锁。

间隙锁:

Mysql技术简介 mysql技术大全_mysql_103

总结:

Mysql技术简介 mysql技术大全_mysql_104

Mysql技术简介 mysql技术大全_字段_105

Mysql技术简介 mysql技术大全_mysql_106

Mysql技术简介 mysql技术大全_存储引擎_107

查看当前数据库的连接:

show processlist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。

主从复制:

Mysql技术简介 mysql技术大全_字段_108

Mysql技术简介 mysql技术大全_字段_109

Mysql技术简介 mysql技术大全_Mysql技术简介_110

一主一从常见配置:

Mysql技术简介 mysql技术大全_mysql_111

Mysql技术简介 mysql技术大全_mysql_112

本例中master节点是windows,slave节点是linux。

主机配置(windows):

Mysql技术简介 mysql技术大全_mysql_113

Mysql技术简介 mysql技术大全_字段_114

从机配置(linux):

Mysql技术简介 mysql技术大全_Mysql技术简介_115

 

Mysql技术简介 mysql技术大全_字段_116

主机授权给从机访问数据库:

Mysql技术简介 mysql技术大全_存储引擎_117

从机配置需要复制的主机:

Mysql技术简介 mysql技术大全_Mysql技术简介_118

Mysql技术简介 mysql技术大全_mysql_119