MySQL如何优化性能

MySQL如何优化性能

MySQL服务器配置:\

好吧,首先你应该知道配置文件的位置,具体取决于你的操作系统。在 Linux 系统中,它位于“/etc/mysql/my.cnf”中。\
现在是时候选择你的引擎 InnoDB 和 MyISAM 了。为了让选择更容易,你应该知道 InnoDB 成为 MySQL 5.5 的默认引擎,因为它支持“行级锁定、外键和事务”,而 MyISAM 不支持任何提到的特性,这使得它在现代很少有用应用程序。\
选择正确的引擎后,是时候在 my.cnf 文件中设置一些配置变量了。

max_connection 变量:\

max_connection 变量表示应用程序允许的连接数。默认值为 151 连接,但是,如果你收到错误消息“MySQL 错误,连接太多…”,你可以轻松增加此数量\

最大连接数 = 170

innodb_buffer_pool_size 变量:\

为了加快速度,MySQL 会将数据缓存在你的服务器内存中,这个变量告诉 MySQL 它可以使用多少 GigaBytes。如果你在数据库中保存大 blob,此变量非常有用。你可以将其设置为服务器内存的 80–90%。因此,如果你的服务器内存为 16GB,则可以将其设置为 14GB。

innodb_buffer_pool_size = 14GB

innodb_io_capacity 变量:\

这个变量告诉 MySQL 它可以使用多少输入/输出操作,它取决于你的磁盘。例如,单个 7200 RPM 驱动器限制为 200 I/O,而企业 SSD 磁盘限制为 50,000 I/O。你可以在操作系统上通过命令行轻松找到输入/输出值,并将变量设置为可用 I/O 的 90%,因此 MySQL 永远不会使用太多 I/O 操作。

innodb_io_capacity = 21000

query_cache_limit 和 query_cache_size 变量:\

MySQL 也支持内存中缓存数据,但是我们不能依赖它来做缓存系统,因为每次你的程序向数据库表写入数据的时候,MySQL 将会重建整个表的查询缓存。因此如果你的程序有很高的负载,MySQL 缓存将完全无用,这种情况下,两个变量较好设置为0,节省MySQL缓存的开销,相反,你可以使用类似 Redis 的东西来管理缓存。

query_cache_limit = 0query_cache_size = 0

慢查询日志:\

慢查询日志将会显示你的哪些查询超过你定义的阈值,而不需要猜测哪个查询更慢。\
首先,你必须在你的配置文件中启用 slow_query_log 。在Linux服务器中,打开 「/etc/mysql/my.cnf」或者你系统上同等的文件。\
并添加:

slow_query_log = 1long_query_time = 1

那么,这两个选项将启用慢查询日志,并记录任何需要超过一秒的查询。如果你喜欢在一个表中而不是在一个文件中查看日志,你可以添加:

log_output = 'TABLE'

然后你可以在「slow_log」表中找到你的日志。你可以在那里看到所有执行超过一秒的慢查询的信息。这些信息包括查询的确切执行时间和受影响的行数,以及哪个用户执行的它。

查询优化\

在你得到所有的慢查询后,你需要一种方式来优化它们,使它们更快。因此,你可以在查询语句前面加上「explain」关键词,从而获得相关查询的详情信息,例如:explain select * from users where active=1;

「解释」关键字可以帮助你定义查询命中哪些索引以及为获取数据而查询的行数。此信息可以告诉你是否需要创建更多索引或重组数据库表。

非规范化和约束:\

非规范化是通过添加冗余数据或将它们分组来提高读取性能的过程。例如,如果你有一个「产品」表和一个「类别」表,并且每次查询「产品」表时,你还需要获取每个产品的「类别名称」。在这种情况下,你可以使用「join」来检索「category_name」。但是,这意味着每次用户打开产品页面时,都会执行一个复杂的连接查询。因此,你可以考虑在「产品」表中添加「类别名称」。尽管有冗余数据,但读取性能的提高还是值得的。

非规范化方法可能会导致「产品」表中的「类别名称」过时。所以你需要定义一个「外键」约束,但是你需要知道一个「外键」会使写入性能稍微变慢,因为 MySQL 需要在写入数据之前检查约束。所以做出优异选择始终是你的任务。

读到这里,这篇“MySQL如何优化性能”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

文章标题:MySQL如何优化性能,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/28680

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月22日 下午9:54
下一篇 2022年9月22日 下午9:55

相关推荐

  • ASP.NET Core实现中间件的方式有哪些

    匿名函数 通常新建一个空的 ASP.NET Core Web Application,项目名字无所谓啦 在启动类里可以看到这么一句: // Startup.cs// …app.Run(async (context) =>{ await context.Response.WriteAsync…

    2022年8月29日
    53200
  • windows移动光标到文件末尾的快捷键是什么

    移动光标到文件末尾的快捷键组合是“CTRL+END”;CTRL的全称是control,是键盘中的控制键,编辑文本时,若光标不在最后,按下END键,光标会定位到最后面;如果是一篇文档,按“CTRL+END”,光标会定位到文档的最后。 本教程操作环境:windows10系统、DELL G3电脑。 移动光…

    2022年9月15日
    1.3K00
  • 如何使用exp进行SQL报错注入

    0x01 前言概述 小编又在MySQL中发现了一个Double型数据溢出。当我们拿到MySQL里的函数时,小编比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以小编就跑去测试看哪些函数会出现溢出错误。然后小编发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。…

    2022年9月6日
    72600
  • Redis RESP协议如何实现

    回顾RESP协议 RESP是基于TCP来实现的Redis通信协议,该协议是以/r/n(行)进行分割的,协议支持5种类型,具体信息如下: 类型 前缀 备注 简单字符串 + 简单字符串以+开头 错误数据 – 错误数据以-开头 整数 : 整数以:开头 复杂字符串 $ 复杂字符串以$开头 数组 …

    2022年9月8日
    57800
  • windows7操作系统有哪些版本

    windows7操作系统分为六个版本:1、Starter版本,只通过OEM计算机预装;2、HomeBasic版本,是win7经过简化的一种版本;3、HomePremium版本,能够给家庭用户提供更多的需求;4、Professional版,支持演示模式、加强的网络功能等等;5、Enterprise版本…

    2022年9月15日
    1.1K00
  • Word尾注怎么转换成脚注

    尾注转换成脚注的方法: 1、首先点击任务选项栏中的“引用”。 2、然后去点击里面的“插入尾注”。 3、之后点击下面的小箭头,选择“脚注和尾注”。 4、在弹出的窗口中点击“转换”。 5、之后去勾选“尾注全部转换成脚注”。 6、最后点击确定即可搞定。 感谢各位的阅读,以上就是“Word尾注怎么转换成脚注…

    2022年8月31日
    1.0K00
  • Vue3项目中如何引入SVG图标

    SVG 图标 既然是页面,肯定离不开一些图标 icon ,所以肯定要去较全的 阿里图标库 来寻找 这里讲解下如何将 阿里图标库 里面的东西,放到我们的页面上 阿里图标库 进入页面,找到 资源管理 下面的 我的项目,并创建项目 设置如下 创建好项目后,我们进入到 阿里的 素材库 里面找一些后续需要的图…

    2022年8月31日
    1.2K00
  • MySQL外键约束知识点有哪些

    一、MySQL外键约束作用 外键约束(Foreign Key)即数据库中两个数据表之间的某个列建立的一种联系。这种联系通常是以实际场景中含义完全相同的字段所造成的。MySQL通过外键约束的引入,可以使得数据表中的数据完整性更强,也更符合显示情况。下面,我举一个例子来说明MySQL外键约束的作用。 假…

    2022年9月15日
    1.4K00
  • 怎么用好MySQL索引

    为了更好地进行解释,我创建了一个存储引擎为InnoDB的表user_innodb,并批量初始化了500W+条数据。包含主键id、姓名字段(name)、性别字段(gender,用0,1表示不同性别)、手机号字段(phone),并为name和phone字段创建了联合索引。 CREATE TABLE `u…

    2022年9月21日
    68700
  • windows 0xc000021a怎么手动修复

    0xc000021a手动修复方法: 方法一: 1、首先按下电脑的电源键,会重新启动电脑。 2、重复操作2-3次,会进入系统修复界面,选择“高级选项” 3、接着进入“疑难解答”,再选择进入其中的“高级选项” 4、然后在其中选择进入“命令提示符” 5、然后在命令提示符中依次分别输入“bootrec /f…

    2022年9月15日
    1.5K00
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部