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

相关推荐

  • 2024年9款优质CRM系统全方位解析

    文章介绍的工具有:纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时,许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说,找到一个既能提高客户关系管理效率,又能适应业务扩展的CRM系统尤为重要…

    2024年7月25日
    1600
  • 数据库权限关系图表是什么

    数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

    2024年7月22日
    200
  • 诚信数据库是什么意思

    诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

    2024年7月22日
    400
  • 数据库期末关系代数是什么

    关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

    2024年7月22日
    700
  • mysql建立数据库用什么命令

    在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

    2024年7月22日
    500
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部