Mysql 数据库

Mysql逻辑分层:自上而下(连接层_——服服务层——引擎层——存储层)


存储引擎;



Innodb:事务优先(适合高并发操作)

Myisam:性能优先(表锁)

查询数据库引擎:

支持哪些引擎?show engines;

查看当前使用的引擎?show variables like '%storage_engine%';


其他优化方法;

exists / in

select * from table where exists / in (子查询);

如果主查询的数据量大,则用In

如果子查询的数据量大,则用exist    (exists 语法:将主查询的结果放到子查询结果中进行条件校验(看子查询是否有数据,如果有数据,则校验成功,)


慢查询日志:(命令)

show variables like '%slow_query_log%';

临时开启——在内存中开启:set global slow_query_log = 1;

永久开启:/etc/my.cnf 中追加配置:vi / etc / my.cnf

重启Mysql服务:service mysql restart;


slow_query_log =1

slow_query_log_file=/var / lib /mysql / localhost-slow.log

慢查询阈值默认10秒命令;show variables like 'long_query_time';

临时设置阈值:set global long_query_time =5;  ———设置完成后,重新登陆起效。(不需要重启服务)

永久设置阈值:/etc/my.cnf 中追加配置:设置完成后需要重启服务

                          vi / etc / my.cnf

                         long_query_time=20



show global status like 'slow_queries%';   ——超过阈值的SQL

通过mysqldumpslow工具查看慢SQL,可以通过一些过滤条件进行快速查出需要定位的慢SQL


-- 获取返回记录最多的3个SQL:

                               mysqldumpslow -s r -t  3 /var / lib /mysql / localhost-slow.log

--获取访问次数最多的3个SQL:

                              mysqldumpslow -s c -t  3 /var / lib /mysql / localhost-slow.log

-- 获取按照时间排序,前10条包含Left Join 查询语句的SQL:

                             mysqldumpslow -s t -t  10 -g "left loin" /var / lib /mysql / localhost-slow.log

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容