MySQL-性能优化

这篇具有很好参考价值的文章主要介绍了MySQL-性能优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有志者,事竟成
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

mysql 性能中级优化,MySQL,mysql,性能优化,数据库


前言

性能优化是通过某些有效的方法提高mysql数据库的性能。性能优化的目的是为了使mysql数据库运行速度更快、占用的磁盘空间更小。性能优化包括很多方面,例如优化查询速度、优化更新速度和优化mysql服务器等。

一、优化简介

优化mysql数据库是数据库管理员的必备技能。通过不同的优化方式达到提高mysql数据库性能的目的。

数据库管理员可以使用show status语句查询mysql数据库的性能。语法形式如下:

show status like 'value';

其中,value参数是常用的几个统计参数。这些常用参数介绍如下。

connections:连接mysql服务器的次数;
uptime:mysql服务器的上线时间;
slow_queries:慢查询的次数;
com_select:查询操作的次数;
com_insert:插入操作的次数;
com_update:更新操作的次数;
com_delete:删除操作的次数。

二、优化查询

查询是数据库中最频繁的操作。提高了查询速度可以有效的提高mysql数据库的性能。

1、分析查询语句

通过对查询语句的分析,可以了解查询语句的执行情况。mysql中,可以使用explain语句和describe语句来分析查询语句。

explain语句的基本语法如下:

explain select 语句;

通过explain关键字可以分析后面的select语句的执行情况。并且能够分析出所查询的表的一些内容。

2、索引对查询速度的影响

索引可以快速的定位表中的某条记录。使用索引可以提高数据库查询的速度,从而提高数据库的性能。

如果查询时不使用索引,查询语句将查询表中的所有字段。这样查询的速度会很慢。如果使用索引进行查询,查询语句只查询索引字段。这样可以减少查询的记录数,达到提高查询速度的目的。

3、使用索引查询

索引可以提高查询的速度。但是有些时候即使查询时使用的是索引,但索引并没有起作用。

1、查询语句中使用like关键字

在查询语句中使用like关键字进行查询时,如果匹配字符串的第一个字符为“%”时,索引不会被使用。如果“%”不是在第一个位置,索引就会被使用。

2、查询语句中使用多列索引

多列索引是在表的多个字段上创建一个索引。只有查询条件中使用了这些字段中第一个字段时,索引才会被使用。

3、查询语句中使用or关键字

查询语句只有or关键字时,如果or前后的两个条件的列都是索引时,查询中将使用索引。如果or前后有一个条件的列不是索引,那么查询中将不使用索引。

4、优化子查询

很多查询中需要使用子查询。子查询可以使查询语句很灵活,但子查询的执行效率不高。子查询时,mysql需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句再临时表中查询记录。查询完毕后,mysql需要撤销这些临时表。因此,子查询的速度会受到一定的影响。如果查询的数据量比较大,这种影响就会随之增大。在mysql中可以使用连接查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快。

三、优化数据库结构

数据库结构是否合理,需要考虑是否存在冗余、对表的查询和更新的速度、表中字段的数据类型是否合理等多方面的内容。

1、将字段很多的表分解成多个表

有些表在设计时设置了很多的字段。这个表中有些字段的使用频率很低。当这个表的数据量很大时,查询数据的速度就会很慢。

对于这种字段特别多且有些字段的使用频率很低的表,可以将其分解成多个表。

2、增加中间表

有时需要经常查询某两个表中的几个字段。如果经常进行联表查询,会降低mysql数据库的查询速度。对于这种情况,可以建立中间表来提高查询速度。

3、增加冗余字段

设计数据库表时尽量让表达到三范式。但是,有时为了提高查询速度,可以有意识地在表中增加冗余字段。

4、优化插入记录的速度

插入记录时,索引、唯一性校验都会影响到插入记录的速度。而且,一次插入多条记录和多次插入记录所耗费的时间是不一样的。根据这些情况,分别进行不同的优化。

1、禁用索引

插入记录时,mysql会根据表的索引对插入的记录进行排序。如果插入大量数据时,这些排序会降低插入记录的速度。为了解决这种情况,在插入记录之前先禁用索引。等到记录都插入完毕后再开启索引。禁用索引的语句如下:

alter table 表名 disable keys;

重新开启索引的语句如下:

alter table 表名 enable keys;

对于新创建的表,可以先不创建索引。等到记录都导入以后再创建索引。这样可以提高导入数据的速度。

2、禁用唯一性检查

插入数据时,mysql会对插入的记录进行唯一性校验。这种校验也会降低插入记录的速度。可以在插入记录之前禁用唯一性检查。等到记录插入完毕后再开启。禁用唯一性检查的语句如下:

set unique_checks=0;

重新开启唯一性检查的语句如下:

set unique_checks=1;

3、优化insert语句

插入多条记录时,可以采取两种写insert语句的方式。第一种是一个insert语句插入多条记录。

5、分析表、检查表和优化表

分析表主要作用是分析关键字的分布。检查表主要作用是检查表是否存在错误。优化表主要作用是消除删除或者更新造成的空间浪费。

1、分析表

mysql中使用analyze table语句来分析表,该语句的基本语法如下:

analyze table 表名1 [,表名2...]

使用analyze table分析表的过程中,数据库系统会对表加一个只读锁。在分析期间,只能读取表中的记录,不能更新和插入记录。analyze table语句能够分析innodb和myisam类型的表。

2、检查表

mysql中使用check table语句来检查表。check table语句能够检查innodb和myisam类型的表是否存在错误。而且,该语句还可以检查视图是否存在错误。该语句的基本语法如下:

check table 表名1 [,表名2...][option];

其中,option参数有5个参数,分别是quick、fast、changed、medium和extended。这5个参数的执行效率依次降低。option选项只对myisam类型的表有效,对innodb类型的表无效。check table语句在执行过程中也会给表加上只读锁。

3、优化表

mysql中使用optimize table语句来优化表。该语句对innodb和myisam类型的表都有效。但是,optilmize table语句只能优化表中的varchar、blob或text类型的字段。optilmize table语句的基本语法如下:

optimize table 表名1 [,表名2...];

通过optimize table语句可以消除删除和更新造成的磁盘碎片,从而减少空间的浪费。optimize table语句在执行过程中也会给表加上只读锁。

四、优化mysql服务器

优化mysql服务器可以从两个方面来理解。一个是从硬件方面来进行优化;另一方面是从mysql服务的参数进行优化。通过这些优化方式,可以提供mysql的运行速度。但是这部分的内容很难理解,一般只有专业的数据库管理员才能进行这一类的优化。

1、优化服务器硬件

服务器的硬件性能直接决定者mysql数据库的性能。例如,增加内存和提高硬盘的读写速度,可以提高mysql数据库的查询、更新的速度。

2、优化mysql的参数

内存中会为mysql保留部分的缓存区。这些缓冲区可以提高mysql数据库的处理速度。缓存区的大小都是在mysql的配置文件中进行设置的。

五、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。文章来源地址https://www.toymoban.com/news/detail-802629.html

到了这里,关于MySQL-性能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL——性能优化与关系型数据库

    吞吐与延迟:有些结论是反直觉的,指导我们关注什么。 没有量化就没有改进:监控与度量指标,指导我们怎么去入手。 80/20原则:先优化性能瓶颈问题,指导我们如何去优化。 过早的优化是万恶之源:指导我们要选择优化的时机。 脱离场景谈性能都是耍流氓:指导我们对

    2024年02月01日
    浏览(50)
  • MySQL数据库IO性能优化方法论

    作者:禅与计算机程序设计艺术 随着互联网信息化的发展,网站日益繁荣,用户对网站访问速度要求越来越高。如何提升网站数据库IO性能从而实现快速响应?本文将从数据库的优化角度出发,结合实际应用场景,进行系统地剖析、归纳和总结,为读者提供一个系统性、完整

    2024年02月06日
    浏览(55)
  • MySQL数据库性能优化中常用的方法是什么?

    MySQL 是目前广泛使用的关系型 数据库 系统,随着数据量的不断增加和业务需求的提升,MySQL数据库性能优化已经成为开发人员和DBA必须面对的一个重要问题。 查询语句是MySQL数据库中最常用的操作之一,也是造成性能问题的主要原因之一。以下是一些常见的查询语句优化方法

    2024年01月19日
    浏览(53)
  • MySQL数据库的性能优化----(一步一个脚印)

    一、MySQL数据库的优化目标、基本原则: 1、优化目标: MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化、还是表结构优化,参数优化,最后都可以归纳到这这两个分类中: (1)减少 I/O 次数: I/O是数据库最容易瓶颈的地方,大部分数据库操作中超过90%的时间

    2024年02月03日
    浏览(90)
  • MySQL语句通过腾讯云数据库智能管家的性能与语法优化

    最近公司项目迁移至腾讯云,用的腾讯云MySQL服务器,MySQL负载一直很高,借助云管家优化了一部分SQL语句,提升了部分性能和释放了部分,MySQL内存占用      

    2024年02月15日
    浏览(59)
  • 掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点

    不能⼀上来就说分库分表! 根据实际情况分析,两个角度思考:不分库分表、分库分表 软优化 数据库参数调优 分析慢查询SQL语句,分析执行计划,进行sql改写和程序改写 优化数据库索引结构 优化数据表结构优化 引入NOSQL和程序架构调整 硬优化 提升系统硬件(更快的IO、更

    2023年04月19日
    浏览(59)
  • 轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)

    在项目中,正确设置数据表的限定条件是数据存储过程中的关键一步。我们频繁需要创建和修改表以管理各种业务数据。让我们深入学习创建和修改数据表的方法,以产品信息表( product_info )为例。 创建数据表 首先,让我们了解产品信息表的结构: product_id product_name cate

    2024年02月20日
    浏览(60)
  • mysql数据库优化

    数据库的性能调优和优化是指通过优化数据库结构、SQL语句的编写以及服务器硬件和操作系统等方面的配置,来提高数据库的响应速度和稳定性,以满足业务需求。 结合实际需求,从以下四个方面进行讲解。 一、数据库设计优化 二、SQL语句优化 三、索引优化 四、硬件和操

    2024年01月17日
    浏览(38)
  • 性能测试之Mysql数据库调优

    性能调优前提:无监控不调优,对于mysql性能的监控前几天有文章提到过,有兴趣的朋友可以去看一下 1、我们在监控图表中关注的性能指标大概有这么几个:CPU、内存、连接数、io读写时间、io操作时间、慢查询、系统平均负载以及memoryOver 2、介绍下Grafana模板中各性能指标的

    2024年02月04日
    浏览(57)
  • Mysql数据库结构优化汇总

         设计表以最大限度地减少其在磁盘上的空间。这可以减少写入磁盘和从磁盘读取的数据量,从而带来巨大的改进。较小的表通常需要较少的主内存,而它们的内容在查询执行过程中被主动处理。表数据的任何空间减少也会导致更小的索引可以更快地处理。 尽可能使用最

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包