-
在配置文件里打开慢查询
linux环境下的配置文件位于/etc/my.cnf
windows环境下的配置文件位于 my.ini
配置 slow_query_log = 1 开启慢查询日志
slow_query_log_file= 慢查询日志存放地址
long_query_time=10 慢查询标准 -
慢查询分析工具
mysql自带的分析工具mysqlfumpslow,需要安装perl环境运行
这个工具可以对日志进行(时间,次数等)排序
mysql和mysqld是有区别的:
mysql.exe指的是mysql的客户端,比如登录等。
mysqld 指mysql的服务端,开启mysql服务。
3.慢查询优化方法- 硬件的优化(硬盘,内存,cpu等)
- 服务器优化(linux服务器比mysql服务器稳定)
- sql语句进行优化
- 反范式化设计(三大范式)
参考《阿里java开发手册》,适当冗余,以空间换时间
- 索引优化
mysql索引显式支持b-tree,实际上也支持hash,只是看起来显示的是b-tree,技术上实际上使用的是b+树
-
三大范式
- 字段不可拆分
- 完全依赖
- 消除传递依赖
-
索引
索引(Index)是帮助MySQL高效获取数据的数据结构。
mysql索引包含 普通索引 、唯一索引、符合索引主键索引不需要单独创建,主键索引跟唯一索引的区别就是:
主键索引不能为空,唯一索引可以为null执行计划 EXPLAIN(执行计划详细的知识参考ppt)
查询结果中的key字段表示用到的索引,为null表示没用到索引
sql是否充分用到了索引,看ken_len字段(百度ken_len的算法) -
索引查询的策略
全值匹配我最爱,最左前缀要遵守;尽量全值匹配,最佳左前缀法则
带头大哥不能死,中间兄弟不能断;
最佳左前缀法则,(查询从索引的最左前列开始并且不跳过索引中的列)
索引列上少计算,范围之后全失效;
不在索引列上做任何操作,范围条件放最后
LIKE百分写最右,覆盖索引不写*;
like左侧写%不能使用索引,尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *
不等空值还有OR,索引影响要注意;
OR改UNION效率高
VARCHAR引号不可丢, SQL优化有诀窍。
-
覆盖索引,要查询的列全部都是索引列,只用查索引目录就能找到数据,这种查询叫做覆盖索引
-
type system>const>eq_rel>rel>range>index>all
-
分页也是一种重要的优化方式
-
进阶(mycat 分库分表,读写分离,性能瓶颈,b+树,索引失效)
mysql(一)性能优化
猜你喜欢
转载自blog.csdn.net/weixin_43513459/article/details/104956281
今日推荐
周排行