Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL 的性能优化

MySQL 的性能优化

作者头像
玖柒的小窝
修改于 2021-09-22 02:55:12
修改于 2021-09-22 02:55:12
6430
举报
文章被收录于专栏:各类技术文章~各类技术文章~

为搜索字段创建索引。避免使用 select *,列出需要查询的字段。垂直分割分表。选择正确的存储引擎。

    1.索引优化

    2.添加查询缓存

    3.优化数据库SQL语句

    4.数据库Cluster

    1>首先,开启慢查询global【配置文件】,(标准可以自定义),通过分析日志文件或直接show,查看哪些查询较慢.

    2>针对这条sql,添加Explain,查看其执行计划,查询数据条数/索引等

        优化:

        1.创建index索引,会占用存储空间,而且会降低DML操作的效率(做增删改需要维护索引),一般在sql中的where或者order by字段建立索引

        2.通过查询缓存,可以开启Mybatis的二级缓存,自定义实现Mybatis+redis/Ehcache结合,需要注意的是,只对结果缓存,缓存结果要放在以业务逻辑相关为划分单位。缓存原则是对那些查询需求远大于增删改需求的数据

        除此之外,尽量不要在where子句中使用函数,会使索引失效

        如果已经确定查询结果只有一条数据(当表中数据的该字段是唯一的),在查询SQL末尾增加 limit 1

        模糊查询尽量使用右模糊,左模糊会使索引失效

        如果非要使用表连接,最好要保证连接的两个字段都是创建了索引的

        避免使用select *

        尽量使用非空  not null,可以使用‘’空串代替null。因为‘’不占用空间,null会占用空间的

        在SQL语句中不要有运算,否则MySQL会放弃索引。

        对于百万级以上的表数据,如果要做表连接查询,一定要对表先分页,然后对分页结果再做表连接。也可以不用表连接

        nginx(负载均衡)  读写分离(MyCat) 主从复制(修改配置文件)

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
单机数据库优化的一些实践
数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题。本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正。
哲洛不闹
2018/09/18
9610
单机数据库优化的一些实践
MySQL优化指南
前言:MySQL的优化指南针对的是数据量大的情况下,数据量不够大的话没必要纠结优化的问题。但是当数据量变大之后,很多地方都是需要优化的,不然就会出现很多问题,最显著的现象是查询和修改变慢,即响应时间变长,所以本文的优化默认是数据量较大的情况。
cutd
2019/07/22
9580
MySQL性能优化的最佳20+条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例: 上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。
用户7657330
2020/08/14
6640
MySQL性能优化的最佳20+条经验
程序员必须掌握的MySQL优化指南(上)
MySQL作为最流行的关系型数据库之一,基本上每个开发人员都使用过,在平时工作中难免会遇到性能的问题,本篇从多个角度详细的介绍了,关于MySQL最常用的优化方法,包括字段类型,索引使用,SQL语句,参数调优,分库,分表,分片,缓存,以及通过中间件,NoSQL等。相信你认真读完之后一定会受益匪浅。
终码一生
2022/04/14
3440
「mysql优化专题」单表查询优化的一些小总结,非索引设计(3)
(0)可以先使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮我们分析是查询语句或是表结构的性能瓶颈。
java进阶架构师
2018/08/15
9620
「mysql优化专题」单表查询优化的一些小总结,非索引设计(3)
SQL 性能优化
Oracle 优化器RBO, CBO RBO 基于规则的优化器 oracle 10g开始,已经丢弃RBO CBO 基于成本的优化器 oracle 8中开始引入的
王小明_HIT
2019/08/30
9270
SQL 性能优化
MySQL高性能优化规范建议
没有特殊要求(即 Innodb 无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用 Innodb 存储引擎(MySQL5.5 之前默认使用 Myisam,5.6 以后默认的为 Innodb)。
一点博客
2019/10/21
7370
SQL性能优化的47个小技巧,果断收藏!
3、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)。 Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好。 4、每个Innodb表必须有个主键 Innodb是一种索引组织表:数据的存储的逻辑顺序和索引的顺序是相同的。每个表都可以有多个索引,但是表的存储顺序只能有一种。 Innodb是按照主键索引的顺序来组织表的
路人甲Java
2023/08/29
3450
SQL性能优化的47个小技巧,果断收藏!
2万字,深度解析SQL性能优化,值得收藏
左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成是Server(MySQL的服务端),我们将Server在细分为sql层和存储引擎层。
田维常
2024/05/29
8130
2万字,深度解析SQL性能优化,值得收藏
Oracle 性能优化总结
https://blog.csdn.net/zhushuai1221/article/details/51740846
Lenis
2019/12/25
2.3K0
Oracle 性能优化总结
关于Mysql高性能优化规范的一点建议
没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)。
极乐君
2019/04/19
1.1K0
【116期】MySQL索引优缺点、何时需要/不需要创建索引、索引及sql语句的优化
索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。
良月柒
2021/01/25
2.7K0
MySQL性能优化总结
1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;
阮键
2020/06/08
6690
52 条 SQL 语句性能优化策略,建议收藏!
关注公众号:程序员白楠楠,领取2020最新Java面试题手册(200多页PDF文档)。
程序员白楠楠
2020/12/09
9900
MySQL - SQL优化干货总结(吐血版)
BATJTMD等大厂的面试难度越来越高,但无论从大厂还是到小公司,一直未变的一个重点就是对SQL优化经验的考察。一提到数据库,先“说一说你对SQL优化的见解吧?”。SQL优化已经成为衡量程序猿优秀与否的硬性指标,甚至在各大厂招聘岗位职能上都有明码标注,如果是你,在这个问题上能吊打面试官还是会被吊打呢?
陈哈哈
2020/07/03
1.4K0
MySQL性能优化(六):其他优化
mysql是一个高度定制化的数据库系统,提供了很多配置参数,一般都需要根据应用程序的特性和硬件情况对mysql做配置优化,windows配置文件为my.ini,linux为my.cnf
码农架构
2020/10/26
6290
MySQL性能优化(六):常见优化SQL的技巧
在面对不够优化、或者性能极差的SQL语句时,我们通常的想法是将重构这个SQL语句,让其查询的结果集和原来保持一样,并且希望SQL性能得以提升。而在重构SQL时,一般都有一定方法技巧可供参考,本文将介绍如何通过这些技巧方法来重构SQL。
xcbeyond
2020/05/04
1.6K0
高效处理MySQL慢查询分析和性能优化
要开启慢查询日志(默认是关闭的),通过slow_query_log参数进行设置。在MySQL命令终端中执行以下命令:
不惑
2024/09/18
7650
高效处理MySQL慢查询分析和性能优化
【MySQL高级】应用优化及Mysql中查询缓存优化以及Mysql内存管理及优化
前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。
陶然同学
2023/02/24
1.6K0
【MySQL高级】应用优化及Mysql中查询缓存优化以及Mysql内存管理及优化
MySQL 海量数据优化(理论+实战) 吊打面试官
可以看到比起之前 limit 1000000时的0.218s 效率也同样提高了很多
CPP开发前沿
2022/06/04
4900
MySQL 海量数据优化(理论+实战) 吊打面试官
相关推荐
单机数据库优化的一些实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档