MySQL 作为关系型数据库的典型代表,其流行程度超越于任何数据库,因此在 Java 面试中,MySQL 是一定会被问到的重要知识点。而在 MySQL 中有一道极其常见的面试题,我们这里系统的来看一下,这就是我们今天要讨论的 MySQL 调优问题。

MySQL 调优的大体思路如下:

具体调优思路如下。

1.查询语句优化

  1. 尽量避免使用 SELECT *,只查询需要的列。
  2. 使用 JOIN 代替子查询,减少嵌套查询的层次。
  3. 避免在 WHERE 子句中使用 LIKE '%value%',这会导致全表扫描。
  4. 合理使用 LIMIT 子句,限制查询结果的数量。

2.索引优化

  1. 合理使用索引:包括主键索引、唯一索引、普通索引和联合索引等。确保在经常用于查询条件的列上创建索引。
  2. 避免过度索引:因为每个索引都会占用额外的存储空间,并可能影响写操作的性能。

3.表结构优化

  1. 垂直分表:将表中不常用的字段或大型字段(如 TEXT、BLOB)分离到单独的表中,减少主表的大小和 I/O 开销。
  2. 水平分表:根据某种规则(如日期、地区等)将表中的数据分散到多个表中,每个表包含部分数据。这样可以提高查询效率,并降低单个表的锁竞争。
  3. 归档旧数据:定期将不常用的旧数据归档到历史表中,减少主表的数据量,提高查询性能。

4.架构优化

  1. 读写分离:通过主从复制实现读写分离,将读操作分散到多个从服务器上,减轻主服务器的负载。
  2. 数据库分片(水平分库/垂直分库):将大型数据库拆分成多个小型数据库,每个数据库包含部分数据。通过分片可以提高数据库的扩展性和查询性能。
  3. 分布式数据库:例如 TiDB、ES。
  4. 使用缓存:在应用程序级别使用缓存(如 Memcached、Redis 等),减少对数据库的直接访问次数。

5.升级硬件

  1. 选择高性能的 CPU:以支持复杂的查询处理和大量的并发访问。
  2. 增加内存容量:因为 MySQL 使用大量内存来缓存数据和索引,从而提高查询效率。
  3. 使用高速磁盘:如 SSD(固态硬盘),减少 I/O 等待时间。同时,可以考虑使用 RAID 技术来提高磁盘读写性能和可靠性。
  4. 优化网络配置:确保数据库服务器与客户端之间的数据传输高效稳定。

课后思考

MySQL 除了以上优化手段之外,你还知道哪些优化手段?欢迎评论区补充完善~

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

面试官:说说MySQL调优?的更多相关文章

  1. MySQL 调优/优化的 100 个建议

    MySQL 调优/优化的 100 个建议   MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...

  2. MySQL 调优基础(一) CPU与进程

    一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层 ...

  3. MySQL调优系列基础篇

    前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...

  4. mysql调优 基础

    MySQL调优可以从几个方面来做: 1. 架构层:做从库,实现读写分离: 2.系统层次:增加内存:给磁盘做raid0或者raid5以增加磁盘的读写速度:可以重新挂载磁盘,并加上noatime参数,这样 ...

  5. mysql调优最大连接数

    一.mysql调优 1.1 报错: Mysql: error 1040: Too many connections 1.2 原因: 1.访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器 ...

  6. MySQL调优 —— Using temporary

      DBA发来一个线上慢查询问题. SQL例如以下(为突出重点省略部分内容): select distinct article0_.id, 等字段 from article_table article ...

  7. 数据库MySQL调优实战经验总结<转>

    数据库MySQL调优实战经验总结 MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证.仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设 ...

  8. MySQL调优 优化需要考虑哪些方面

    MySQL调优 优化需要考虑哪些方面   优化目标与方向定位 总体目标:使得响应时间更快,吞吐量更大. (throughout --- 吞吐量:单位时间内处理事务的数量) 如何找到需要优化的地方 使用 ...

  9. 面试官问我MySQL调优,我真的是

    面试官:要不你来讲讲你们对MySQL是怎么调优的? 候选者:哇,这命题很大阿...我认为,对于开发者而言,对MySQL的调优重点一般是在「开发规范」.「数据库索引」又或者说解决线上慢查询上. 候选者: ...

  10. 性能优化之MySQL调优篇

    MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作 ...

随机推荐

  1. mybatis查询参数Set遍历查询

    #sqlmapper <resultMap id="BaseResultMap" type="com.LogEntity" > <result ...

  2. 设置profile启动配置 -Dspring.profiles.active=dev

  3. 关于 "= default" 和 "= delete" 函数

    在 C++ 11 中,"= default" 和 "= delete" 函数使我们能够显示指定成员函数是否自动生成. 其中,"= delete&quo ...

  4. 58同城的登录(RSA算法)

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 58同城的登录(RSA算法) 日期:2016-11-23 ...

  5. XAF 属性编辑器(PropertyEditor)- 原理篇

    前言 随着 DEV24.1.3 的发布,XAF Blazor 中的属性编辑器(PropertyEditor)也进行了很大的改动,在使用体验上也更接近 WinForm 了,由于进行了大量的封装,理解上没 ...

  6. ssh_exchange_identification: Connection closed by remote host 错误解决方案

    问题 今天登陆服务器时候,ssh 后返回 ssh_exchange_identification: Connection closed by remote host 错误,重试了几次,会有一定概率失败 ...

  7. “国产双系统”出炉,RK3568J非对称AMP:Linux+RTOS/裸机

    "非对称AMP"双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构."非对称AMP"双系统是指多个核心相对独立运 ...

  8. Excel插件之连接数据数据库秒数处理,办公轻松化

    接上文,对excel连接数据库需求的进一步优化: Excel 更改数据同步更新到Mysql数据库 1.通过mysql for excel 插件的思路,了解到一个新的插件 sqlcel,通过这个插件ex ...

  9. 随机数据下 Sqrt Tree 的平替实现

    原理 在随机数据下,把原序列分成 \(\sqrt n\) 个块,维护每个块的前缀后缀最大值,那么,在随机询问下,对于在一个块中的询问,暴力查询. 复杂度 概率 $ n ^ {-\frac{1}{2}} ...

  10. Linux启动Java程序jar包Shell脚本

    手动方式启动和终止java程序 启动java程序jar:nohup java -jar XXX.jar 查看程序占用pid:ps -ef | grep XXX.jar 或 jps jps是jdk提供的 ...