首页 数据库 mysql教程 MySQL怎么优化性能?优化技巧分享

MySQL怎么优化性能?优化技巧分享

Sep 22, 2022 pm 01:49 PM
mysql

MySQL怎么优化性能?优化技巧分享

当谈到数据库性能优化时,最重要的事情就是选择正确的。你应该决定你的应用程序是需要关系型数据库还是非关系型数据库。即使在一种类型中,你也将有多种选择。 与关系数据库一样,你可能会发现 Oracle、MySQL、SQL Server 和 PostgreSQL。 另一方面,非关系型数据库引入了 MongoDB、Cassandra 和 CouchDB。

你可能希望我建议使用非关系数据库以获得更快的读/写性能。 但是,通过一些改进和调整,您可以推动关系数据库超出其已知限制。 因此,在本文中,我将向您介绍一些技巧,以使您的 MySQL 数据库更快。

如果您特别想知道为什么要使用 MySQL,那么答案很简单,因为它是免费的、开源的,并且在 PHP 社区中非常受欢迎,而 Oracle 因价格昂贵而未被广泛使用。 其他选项不如 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 = 0

query_cache_size = 0
登录后复制

慢查询日志:\

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

slow_query_log = 1

long_query_time = 1
登录后复制

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

log_output = 'TABLE'
登录后复制

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

查询优化\

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

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

非规范化和约束:\

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

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

英文原文地址:https://codeburst.io/database-performance-optimization-8d8407808b5b

译文地址:https://learnku.com/mysql/t/71571

【相关推荐:mysql视频教程

以上是MySQL怎么优化性能?优化技巧分享的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MySQL:初学者的数据管理易用性 MySQL:初学者的数据管理易用性 Apr 09, 2025 am 12:07 AM

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

忘记数据库密码,能在Navicat中找回吗? 忘记数据库密码,能在Navicat中找回吗? Apr 08, 2025 pm 09:51 PM

Navicat本身不存储数据库密码,只能找回加密后的密码。解决办法:1. 检查密码管理器;2. 检查Navicat的“记住密码”功能;3. 重置数据库密码;4. 联系数据库管理员。

navicat premium怎么创建 navicat premium怎么创建 Apr 09, 2025 am 07:09 AM

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

mysql:简单的概念,用于轻松学习 mysql:简单的概念,用于轻松学习 Apr 10, 2025 am 09:29 AM

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

Navicat for MariaDB如何查看数据库密码? Navicat for MariaDB如何查看数据库密码? Apr 08, 2025 pm 09:18 PM

Navicat for MariaDB 无法直接查看数据库密码,因为密码以加密形式存储。为确保数据库安全,有三个方法可重置密码:通过 Navicat 重置密码,设置复杂密码。查看配置文件(不推荐,风险高)。使用系统命令行工具(不推荐,需要对命令行工具精通)。

navicat如何执行sql navicat如何执行sql Apr 08, 2025 pm 11:42 PM

在 Navicat 中执行 SQL 的步骤:连接到数据库。创建 SQL 编辑器窗口。编写 SQL 查询或脚本。单击“运行”按钮执行查询或脚本。查看结果(如果执行查询的话)。

navicat怎么新建连接mysql navicat怎么新建连接mysql Apr 09, 2025 am 07:21 AM

可在 Navicat 中通过以下步骤新建 MySQL 连接:打开应用程序并选择“新建连接”(Ctrl N)。选择“MySQL”作为连接类型。输入主机名/IP 地址、端口、用户名和密码。(可选)配置高级选项。保存连接并输入连接名称。

MySQL和SQL:开发人员的基本技能 MySQL和SQL:开发人员的基本技能 Apr 10, 2025 am 09:30 AM

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

See all articles