MySQL优化

**索引优化**:

  - 创建适合的索引是提高查询效率的关键。为经常用于查询条件、连接条件和排序字段的列添加索引。

  - 避免过度索引,因为过多的索引会增加写操作的开销。

  - 使用复合索引(组合索引)来提高涉及多列查询的效率,并注意索引列的顺序,遵循最左匹配原则。

  - 定期删除冗余和无效的索引。

2. **查询优化**:

  - 合理使用WHERE子句来限制要查询的数据,避免不必要的全表扫描。

  - 避免在WHERE子句中使用内置函数、算术运算或其他表达式运算,因为这可能导致索引失效。

  - 尽量避免使用SELECT *,而是指定需要的列名,以减少数据传输量。

  - 使用JOIN代替子查询,以提高性能。

  - 对于大数据分页,避免使用LIMIT offset方式,而是通过索引定位起始位置。

3. **配置优化**:

  - 根据系统资源调整InnoDB Buffer Pool大小,这是优化MySQL性能的关键之一。

  - 关闭查询缓存(Query Cache),因为它在高并发场景下容易成为瓶颈。

  - 调整最大连接数(max_connections)和每个连接线程的最大数量,以支持更多的并发连接。

  - 启用慢查询日志(slow_query_log),以便记录和分析执行时间较长的SQL语句。

4. **数据结构优化**:

  - 选择最小且足够的字段类型,如使用INT(11)而不是BIGINT,VARCHAR而不是CHAR等。

  - 避免使用BLOB和TEXT类型,因为它们可能造成性能问题。

  - 归档旧数据或删除不再需要的历史数据,以减小表的大小。

  - 对于大表,考虑使用分区表以提高查询性能。

5. **硬件优化**:

  - 增加服务器内存以提高缓存效率,减少磁盘I/O。

  - 使用固态硬盘(SSD)可以显著提高I/O性能。

6. **应用层优化**:

  - 尽量使用批量插入和更新,减少与数据库的交互次数。

  - 使用缓存机制(如Redis、Memcached)来减少对数据库的直接访问。

7. **监控和维护**:

  - 定期执行OPTIMIZE TABLE和ANALYZE TABLE命令,以保持表的健康状态。

  - 使用工具如MySQLTuner、Percona Toolkit等监控数据库性能,及时发现并解决问题。

Mysql-explain语句

【语法】

Explain语法:explain select … from … [where …]

例如:explain select * from tableName;

简单的说就是explain关键字后面跟你要检查的SQL语句

【结果输出】

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

explain语句输出的结果共有10列内容,各个列均有不同的含义所在

【结果属性】

【id】

id:这是SELECT的查询序列号

【select_type 】

select_type:select_type就是select的类型,可以有以下几种:

SIMPLE:简单SELECT(不使用UNION或子查询等)

PRIMARY:最外面的SELECT

UNION:UNION中的第二个或后面的SELECT语句

DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询

UNION RESULT:UNION的结果。

SUBQUERY:子查询中的第一个SELECT

DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询

DERIVED:导出表的SELECT(FROM子句的子查询)

【table 】

table:显示这一行的数据是关于哪张表的

【type 】

type:这列最重要,显示了连接使用了哪种类别,有无使用索引,是使用Explain命令分析性能瓶颈的关键项之一。

结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。

【possible_keys 】

possible_keys:列指出MySQL能使用哪个索引在该表中找到行

【key 】

key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL

【key_len 】

key_len:显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好

【ref 】

ref:显示使用哪个列或常数与key一起从表中选择行。

【rows 】

rows:显示MySQL认为它执行查询时必须检查的行数。

【Extra 】

Extra:包含MySQL解决查询的详细信息,也是关键参考项之一。

Distinct

一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

Not exists

MYSQL 优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,

就不再搜索了

Range checked for each

Record(index map:#)

没有找到理想的索引,因此对于从前面表中来的每一 个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort

看 到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来 排序全部行

Using index

列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表 的全部的请求列都是同一个索引的部分的时候

Using temporary

看到这个的时候,查询需要优化了。这 里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Using where

使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index, 这就会发生,或者是查询有问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容