MySQL相关问题
- 一、MySQL支持哪些存储引擎?
- 二、MySQL是如何执行一条SQL的?
- 三、MySQL数据库InnoDB存储引擎是如何工作的?
- 四、如果要对数据库进行优化,该怎么优化?
- 五、MySQL如何定位慢查询?
- 六、如何分析MySQL慢查询日志?
一、MySQL支持哪些存储引擎?
查询数据版本:
select version();
查询数据存储引擎:
show engines;
二、MySQL是如何执行一条SQL的?
三、MySQL数据库InnoDB存储引擎是如何工作的?
四、如果要对数据库进行优化,该怎么优化?
1、服务器硬件:cpu、内存、磁盘io、网卡流量;
2、服务器的操作系统:Linux的配置参数不同性能不同;
3、数据库存储引擎的选择:根据需要选择不同的存储引擎,MyISAM
不支持事务,表级锁;InnoDB
事务级存储引擎,完美支持行级锁和事务ACID特性;
4、数据库自身配置参数:MySQL有上百项的数据库配置参数;(my.cnf
)
5、数据库表结构的设计和SQL语句的执行效率:慢查询是性能问题的罪魁祸首,不合理的数据库表结构设计和不合理的索引是影响数据库查询性能的重要因素;
6、数据库架构:高并发下读写分离、大数据量分库分表、多级缓存、搜索引擎;
五、MySQL如何定位慢查询?
定位慢查询主要有如下几种方式:
1、业务驱动,主要是业务及运营人员或者用户反馈给我们的,他们在使用系统的过程中发现某些功能很慢,这种方式一般是项目上线后出现的,开发人员会比较被动,建议不要采用这种方式;
2、测试驱动,系统上线前通过测试人员的反馈,了解到哪些功能比较慢;
3、系统跟踪监控,比如工具Prometheus、SkyWalking(微服务中使用);
4、慢查询日志,通过开启MySQL慢查询日志监控慢查询sql并及时进行优化;
show variables like '%quer%';
修改my.cnf
文件
slow_query_log = ON #开启慢查询
long_query_time = 2 #查询时间
log_queries_not_using_indexes = ON #没有命中索引
六、如何分析MySQL慢查询日志?
在MySQL的 bin 目录下,慢查询日志分析工具,查看帮助:
./mysqldumpslow --help
# 按平均查询时间排序,显示前十条
./mysqldumpslow -t 10 -s at /usr/local/mysql-8.0.33/data/localhost-slow.log
结果说明:Count: 2 Time=0.01s (0.02s) Lock=0.00s (0s) Rows=3.0 (6), root[root]@[192.168.0.1]
-
Count:2,告诉我们这种类型的语句执行了2次;
-
Time=0.01s(0.02s),告诉我们这类语句执行的最大时间0.01s,总共花费的时间是0.02s;
-
Lock=0.00s(0s) 锁的时间;
-
Rows=3.0 (6) 单次返回的结果数为3条记录,2次总共返回6条记录;