MySQL优化与实践
一、MySQL优化概括

二、SQL优化

实践:
1.查看是否开启了慢查询日志
show variables like 'slow_query_log'

没有开启
2.查看是否开启了未使用索引SQL记录到日志
show variables like '%log%';

没有开启
3.查看慢查询多少秒才记录到日志
show variables like 'long_query_time';

4.查看慢查询日志位置

5.开启上面的一些配置
set global slow_query_log=on;//开启慢查询日志
set global log_queries_not_using_indexes=on;//开启记录没有用索引的SQL到慢查询
set global long_query_time=1;//超过1秒的查询记录到日志

6.MySQL慢查询日志分析工具mysqldumpslow,官方的
7.MySQL慢查询日志分析工具pt-query-digest,第三方、更好。SQL次数、百分比、具体SQL

8.如何分析SQL查询



9.explain实践,查看计划(SQL执行前都有执行计划)


10.具体的SQL优化
(1)count()和Max()的优化
(2)子查询优化
(3)group by的优化
(4)Limit查询的优化
(5)等等
三、索引优化

解释上面3个为什么:
1.一个索引包含了查询的所有列,那么称这个索引为覆盖索引。覆盖索引效率高
2.字段多导致一次索引获取数据量大,IO操作成本就会高
3.怎么知道离散度?select distinct,越高的离散度越好,排前面

重复冗余的索引不仅影响插入而且影响查询

复制粘贴,只要输入密码即可

四、数据库结构优化
1.

innodb中,对于Null的字段需要额外存储,尽量not null


2.垂直拆分

字段很多,拆分多个表,用外键(无论是不是物理上的)关联
3.水平拆分

把数据分到多个结构一致的表里去,上下太长(数据量多)需要水平切割。

五、系统配置优化
1.操作系统方面


表比较多的话,查询会占用文件数
2.MySQL本身配置优化方面







一个网站,点进去 向导式地教你,然后下载配置文件
六、硬件优化


非原创,学习整理
MySQL优化与实践的更多相关文章
- MySQL性能优化最佳实践 - 01 MySQL优化方法论
MySQL优化方法的关键是? MySQL参数优化,innodb_buffer_pool_size/innodb_flush_log_at_trx_commit/sync_binlog SQL开发规范 ...
- mysql优化笔记之分页
过年闲得蛋疼,于是看看mysql优化,看了网上好多关于分页的优化方法,但是呢,我亲自试上一把的时候,没有出现他们说的现象...难道是我的机器问题么? 下面看看我的实践记录,希望看到的加入进来交流一下O ...
- 单表60亿记录等大数据场景的MySQL优化和运维之道
此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...
- 【转】单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...
- [转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd ...
- MySQL优化四(优化表结构)
body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...
- 一次浴火重生的MySQL优化(EXPLAIN命令详解)
一直对SQL优化的技能心存无限的向往,之前面试的时候有很多面试官都会来一句,你会优化吗?我说我不太会,这时可能很多人就会有点儿说法了,比如会说不要使用通配符*去检索表.给常常使用的列建立索引.还有创建 ...
- MySQL优化配置之query_cache_size
原理MySQL查询缓存保存查询返回的完整结果.当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段. 查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓存都将失效 ...
- 机智的MySQL优化器 --- is null
[介绍] 工作的越久越到的的问题越多,就越是觉得一些“老话”历久弥新:由于最近的学习计划是深入的学习一遍MySQL优化器:学习过程中的一些成果 也会发布到这里,一来是为了整理自己已经知道的和新学到的, ...
随机推荐
- ECMAScript es6新功能讲解视频教程
下载链接:https://www.yinxiangit.com/1.html 目录: 01.课程介绍-ECMAScript 新功能.mp402.块的作用域-let.mp403.恒量-const.mp4 ...
- Spring Boot2 系列教程(五)Spring Boot中的 yaml 配置
搞 Spring Boot 的小伙伴都知道,Spring Boot 中的配置文件有两种格式,properties 或者 yaml,一般情况下,两者可以随意使用,选择自己顺手的就行了,那么这两者完全一样 ...
- vue 页面跳转传参
页面之间的跳转传参,正常前端js里写 window.location.href="xxxxx?id=1" 就可以了: 但是vue不一样 需要操作的是路由history,需要用到 V ...
- .Net基础篇_学习笔记_第五天_流程控制while循环003
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 用button 属性来保存字符串地址
我用到for循环创建button 通过点击不同的按钮拿到每个button对应的链接地址,因为button的个数也是通过后台数据返回.上代码: //保存到数组 _array = [Article mj ...
- mysql安装和配置环境
第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads 第二步 :跳转至网址https://dev ...
- linux 堆栈查看
top -c 查看进程ID pstree PID 查看线程树 pstack PID 查看堆栈
- [C++] 重载运算符与类型转换(2)——函数调用运算符和类型转换运算符
1.这两个应该是C++中比较高级的用法了. 一.函数调用运算符 1.重载函数调用运算符(),必须是成员函数,一个类可以定义多个不同版本的调用运算符,相互之间应该在参数数量或者类型上有所区别. ...
- 从 HTTP/1 到 HTTP/2,以及即将到来的 HTTP/3
如今的生活中已经离不开互联网,智能家居.在线支付.网上购物都需要互联网的支持.互联网切切实实地给生活带来了诸多便利.有了互联网,我们可以呆在空调房里,一边刷着微博,一边等透心凉的西瓜送到手上,安安静静 ...
- 程序员接触新语言————hello world ^-^,web3种样式表
我的第一个网页 <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...