Mysql架构和索引及性能优化

第3章    Mysql架构和索引及性能优化

3.1  Mysql架构

  1.逻辑架构图一:

   

 2.逻辑架构图二:

   

 3.执行流程图:

    

 

 3.2 存储引擎介绍:

多存储引擎是mysql有别于其他数据库的一大特性;

* 存储引擎是针对表的

* MySQL 5.5之后,默认的存储引擎由MyISAM变为InnoDB

查看存储引擎show engines;

Innodb

Myisam

存储文件

.frm 表定义文件

.ibd 数据文件

.frm 表定义文件

.myd 数据文件

.myi 索引文件

表锁、行锁

表锁

事务

ACID

不支持

CRDU

读、写

读多

count

扫表

专门存储的地方

索引结构

B+ Tree

B+ Tree

3.1 索引的存储结构:

  •  B Tree和B+ Tree的特点与区别

树的高度一般都是在2-4这个高度,树的高度直接影响IO读写的次数。

如果是三层树结构---支撑的数据可以达到20G,如果是四层树结构---支撑的数据可以达到几十T

*  B Tree和B+ Tree的最大区别在于非叶子节点是否存储数据的问题。B Tree是非叶子节点和叶子节点都会存储数据。B+ Tree只有叶子节点才会存储数据,而且存储的数据都是在一行上,而且这些数据都是有指针指向的,也就是由顺序的。

  • 非聚集索引

 * 叶子节点只会存储数据行的指针,简单来说数据和索引不在一起,就是非聚集索引。

 * 主键索引和辅助索引都会存储指针的值

  • 聚集索引InnoDB)

主键索引(聚集索引)的叶子节点会存储数据行,也就是说数据和索引是在一起,这就是聚集索引。

辅助索引只会存储主键值

如果没有没有主键,则使用唯一索引建立聚集索引;如果没有唯一索引,MySQL会按照一定规则创建聚集索引。

3.2 Mysql性能优化之慢查询

MySQL 数据库有一个“慢查询日志”功能,

MySQL的慢查询日志功能,默认是关闭的,需要手动开启

查看是否开启慢查询功能,slow_query_log_file=OFF则没有开启,若为ON则为开启;

 

 临时开启慢查询功能:

MySQL 执行 SQL 语句设置,但是如果重启 MySQL 的话将失效

mysql>set global slow_query_log = ON;

mysql>set global long_query_time = 1;

永久开启慢查询功能:

修改/etc/my.cnf配置文件,重启 MySQL, 这种永久生效.

[mysqld]

slow_query_log = ON

slow_query_log_file = /var/log/mysql/slow.log

 

long_query_time = 1

慢日志格式:

mysql>select sleep(3);

 2.4 Mysql性能分析语句show profile

 Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。(通常需要手动开启)

show profile  show profiles 语句可以展示当前会话(退出session后,profiling重置为0) 中执行语句的资源使用情况.

show profiles :以列表形式显示最近发送到服务器上执行的语句的资源使用情况.显示的记录数由变量:profiling_history_size 控制,默认15条

 

 

 

查看profile是否开启,OFF(关闭),ON(开启) 

* select @@profiling;

* show variables like ‘%profil%’;

 开启:set profiling=1;

 2.4Mysql性能优化细节

猜你喜欢

转载自www.cnblogs.com/wnlsq/p/12112879.html