5种快速提升MySQL数据库性能的方法

每个使用 MySQL 的开发人员都知道 RDBMS 对于他们的项目有多么重要。数据库管理系统可以支持各种项目,从游戏论坛到医疗保健解决方案。根据DatabaseJournal 进行的研究,它几乎占据了数据库市场份额的一半,即 44%。

提高 MySQL 的性能也是每个 DBA 在其职业生涯的某个阶段都在努力解决的问题。修复:向程序发送命令时出现问题不过不用担心,我们随时为您提供帮助。在本文中,我们将介绍五种快速提高 MySQL 数据库性能的方法。让我们开始吧!

  • MySQL 和您的应用程序

  • 总体上提高数据库性能

  • #1:管理my.cnf file

  • #2 和 #3:检查 MySQL 存储引擎和模式设计

  • #4 和 #5:索引和分区

  • 高级操作:提示和技巧

MySQL 和您的应用程序

在尝试提高您的 MySQL 应用程序性能之前,向程序发送命令时出现问题首先要考虑的事情之一是支持您的应用程序的基础架构。如果不首先了解它的构建基础,就不会改进任何系统。因此,我们需要退一步检查支持 MySQL 的服务器。

我们首先要检查两件基本的事情,首先是服务器上安装的内存量。[已解决] Windows 10 中的“向程序发送命令时出现问题”错误消息您可以通过发出free命令来观察这一点。其次,您可以发出命令来观察服务器上的硬盘空间量。df"

记住这些事情,你就可以连接到 MySQL 了。首先,您需要使用SHOW PROCESSLIST命令检查是否有任何不必要的查询正在运行。修复:“向程序发送命令时出现问题”错误您应该会收到如下所示的输出:

如果您看到任何您不认识的长时间运行的查询,向程序发送命令时出现问题 [已修复]最好终止它们;长时间运行的查询可能会成为其他查询的障碍。但是,您很可能不会看到任何可疑查询。即使您这样做了,终止一两个慢速查询也不会迅速提高您的数据库性能。

要加快查询速度,您需要对查询和 MySQL 的一般工作方式有一些了解。

总体上提高数据库性能

在向您介绍有助于提高 MySQL 数据库性能的具体措施之前,系统资源不足,无法完成请求的服务您需要了解数据库性能的基础知识。

说到数据库性能提升,人们通常说的是提高CRUD、、、、、查询Create的性能。在 MySQL 中,这些查询跨越、、和查询。ReadUpdateDeleteINSERTSELECTUPDATEDELETE

MySQL 中的所有查询都依赖于与 MySQL 相关的一个核心文件中定义的设置,.修复:系统资源不足,无法完成请求的服务 中定义的所有设置都对查询性能有直接影响。my.cnfmy.cnf

您通常可以INSERT通过从插入数据的表中删除索引来提高查询性能。特定表上的索引越多,进行INSERT操作就越困难。

为了提高SELECT查询性能,存在修复系统资源不足以完成请求的服务错误的方法我们通常使用索引。为了提高UPDATE查询性能,我们分批执行更新,这意味着我们执行许多较小的更新而不是一次大更新。

为了提高DELETE查询性能,我们将DELETE查询切换为TRUNCATE. TRUNCATE删除表中的所有行。这样的查询通常比使用删除行快得多,如何修复系统资源不足以完成请求的服务DELETE因为TRUNCATE它为 MySQL 提供了更少的开销。

当试图理解为什么基于 MySQL 的数据库在性能领域表现不佳时,上面给出的建议肯定是一个很好的起点。

不过,要了解上述假设背后的原因,我们需要更深入地研究。电脑键盘示意图主键盘布局我建议备份您的数据库,然后返回此博客。现在,我们将回顾有助于您快速提高数据库性能的五种方法。

#1:管理文件my.cnf

当试图提高 MySQL 查询性能时,首先要仔细研究的是文件,它包含 MySQL 运行所需的所有参数。如果您使用的是 Linux,如何在装有 Windows 7 的笔记本电脑上打开相机?可以在以下目录之一中找到该文件:my.cnfmy.cnf

  • /var/lib/mysql/my.cnf

  • /etc/my.cnf

  • /etc/mysql/my.cnf

  • /usr/etc/my.cnf

如果您使用的是 Windows,则可以在目录中找到该文件。/bin/mysql/mysql *.*.*

mysql *.``*.*``*指的是您的 MySQL 版本。笔记本电脑 WINDOWS 7 应用程序上的网络摄像头。如何在笔记本电脑上打开相机打开文件并查找 InnoDB 周围的参数:

所有这些参数都与 MySQL 中的主要存储引擎之一 InnoDB 相关。您可以使用其他存储引擎,但由于 InnoDB 是 MySQL 提供的默认存储引擎,如何在 Windows 10/11/8/7 上更改默认摄像头我们建议您使用它。

my.cnf参数

让我们回顾一下参数。该参数定义了缓冲池的大小,用于缓存与InnoDB表相关的数据。该参数指定存储文件的路径。是与 InnoDB 相关的主要文件,当相机在 Windows 11 上不工作时如何修复它存储所有必要的数据。innodb-buffer-pool-sizeinnodb-data-file-pathibdata1ibdata1

innodb-default-row-format指定 InnoDB 表中的行格式。这些可以是固定的或动态的。指定是否启用 InnoDB 中的双写机制。innodb-doublewrite

innodb-flush-log-at-trx-commit指定事务提交和完成时如何将数据刷新到日志文件。在 Windows 11 上启用相机 2 种简单方法该参数定义用于将数据刷新到日志文件的方法。innodb-flush-method

设定参数my.cnf

还记得您是如何计算出基础架构中可用的 RAM 和硬盘驱动器空间量的吗?现在是使用这些细节以获得最佳性能的时候了。我们将按如下方式设置参数。

该参数应设置为可用 RAM 的 50% 到 60%。它越大如何在 Windows 上使用 iTunes,缓存的数据就越多,因此,插入数据会更快。innodb-buffer-pool-size

增加变量的大小,使其能够容纳 MySQL 中的所有数据。我们建议将该参数设置为 5-10 GB。innodb-data-file-path

如果该参数不存在,请包含一个参数并将其设置为。该参数将帮助 MySQL 理解它需要将所有表存储为单独的文件,从而使缓冲池的大小显着变小在 Windows PC 上使用 iTunes 管理您的 iPhone。缓冲池将只保存元数据。innodb-file-per-tableoneinnodb-file-per-table

我们建议将参数保留为默认值。默认值保证 ACID 合规性,但是,如果您想要更快的写入性能,您也可以考虑将值更改为或。请记住,保证数据完整性的属性 ACID 将因此被折衷。innodb-flush-log-at-trx-commit02

保持冲洗方法不变。O_DIRECT由于 Linux 内核避免了 OS 缓存,如何使用 iTunes Matchflush 方法在导入数据时保证了更快的性能。

执行上述指定的步骤将保证更快的性能,即使您的服务器的 RAM 和存储空间有限。

#2 和 #3:检查 MySQL 存储引擎和模式设计

除了摆弄文件之外,我们还应该检查我们使用的存储引擎及其设计方式。如果您使用的是 MySQL,请使用 InnoDB。如果您使用的是Percona Server,如何修复笔记本电脑上的“未检测到电池”请使用Percona XtraDB。my.cnf

InnoDB 参数

在撰写本文时,InnoDB 是唯一支持 ACID 属性的存储引擎。即使在停电或任何类似中断的情况下,这些属性也能保证数据的完整性。如前所述,修复 Windows 10 未检测到电池的 5 种方法ACID 可以通过将参数设置为或来交换速度。innodb-flush-log-at-trx-commit02

InnoDB 提供了多个参数,您可以使用它们来快速提高查询性能和其他操作,包括和。innodb-buffer-pool-sizeinnodb-log-file-size

将缓冲池大小设置为基础结构中可用 RAM 的 60%,并将日志文件大小设置为分配给缓冲池的值的大约四分之一。MySQL 在 InnoDB 中恢复数据时扫描日志文件。修复 Windows 10 中未检测到电池的有用解决方案大小越大,恢复过程的速度越快。

InnoDB 和 XtraDB 都支持行级锁定。简单来说,行级锁定是指只锁定对直接受事务影响的行的访问。与表级锁定相比,它有一个显着的优势;开发人员可以在更新数据时继续使用行。

如果您的用例不需要这种方法,[已解决] 未检测到电池则应避免使用 InnoDB 以外的任何其他存储引擎。MyISAM 不可靠,其他存储引擎只能在特定的极端情况下使用。有关详细信息,请参阅 MySQL 文档。

如果您处理的数据超过 1000 万行,则您的所有表都将被规范化。

索引查询

至少您运行查询的表中的某些列SELECT已编入索引。如何修复 Windows 中未检测到电池?为获得最佳结果,索引子句之后的所有列WHERE或第一个列以节省空间。这种方法将提高读取数据的查询的性能,因为索引会让 MySQL 知道如何快速找到具有特定值的列。

数据类型和整数

了解数据类型和字符集的方法很重要。为了在磁盘上占用更少的空间,您应该使用CHAR(字符)或VARCHAR(可变字符)数据类型而不是数据类型。修复 Windows 10、11 PC 上未检测到电池错误整数也一样;必要时考虑使用instead of来节省硬盘空间。TEXT– CHARVARCHARSMALLINTINT

正确指定数据类型的长度。在处理大数据时,请考虑将最大值指定为 50,而不是 255。这种方法将节省大量磁盘空间。

确保您的表不存储任何不必要的数据。修复 Windows 11 笔记本电脑未检测到电池的 6 大方法存储的数据越少,您需要读取和更新的数据就越少。

#4 和 #5:索引和分区

除了上述因素外,索引和分区也非常重要。索引帮助我们快速找到具有特定值的行,而分区充当表中的表以进一步提高性能。

INSERT这两种方法都会对、修复:笔记本电脑上未检测到电池错误UPDATE和查询产生成本DELETE,因为插入或更新的数据需要在索引或分区本身内部进行更新。

但是,这两种方法也有好处;他们都加快了读取操作。分区使SELECT查询更快,因为它们可以将表拆分为以特定字符开头的更小的表,只通过它们运行查询。如果您的笔记本电脑已插入但未充电怎么办另一方面,索引的作用是使SELECT带有子句的查询WHERE更快。

索引的最佳实践

索引和分区都有多种不同的类型。出于本文的目的,我们不会全部讨论它们,但对于索引,请记住以下几点。

最常见的索引类型 B 树索引在与包含等号的运算符的查询结合使用时非常有用=。

覆盖索引覆盖特定查询使用的所有列。笔记本电脑电池无法充电的 7 种故障排除方法例如,列a1、a2和上的覆盖索引a3将满足以下查询:

SELECT  * FROM demo WHERE a1 = 'Demo' AND a2 = 'Demo 2' AND a3 = 'Demo 3' ;      

哈希索引仅适用于 MySQL 中特定的存储引擎和特定的搜索运算符,包括=和<=>。

MySQL 中的分区

对于分区,请记住它们也有多种形式。

分区依据RANGE让我们对落在给定范围内的值进行分区。笔记本电脑插上电源但不充电?这是修复方法这种类型的分区在按字符或数字拆分大型表时特别有用。

Partitioning byHASH根据列数将表拆分为多个表。例如,将表在数据库级别拆分为多个不同的表,总共八个分区。PARTITION BY HASH(id) PARTITIONS 8;

所有类型的分区都可以在MySQL 文档中找到。如何修复已插入但未充电的 Windows 10 笔记本电脑分区通常是在创建表时定义的,在许多情况下,它看起来像下面这样:

CREATE  TABLE table_name ( [ column_details ] ) [ partitioning_details ]; 例如,按范围分区看起来像这样:CREATE TABLE table_name ( ` demo_column`VARCHAR ( 255 ) NOT NULL DEFAULT ' ' ) PARTITION BY RANGE ( column ) ( PARTITION p1 VALUES LESS THAN

 
  
 
     
     
   ( 100 ),分区p2值小于( 200 ) );
   

其他类型的分区看起来与上面定义的分区非常相似。如何对无法启动的 PC 笔记本电脑进行故障排除但是,分区由、或其他类型RANGE代替。LISTHASH

分区还有另一个非常重要的好处。它允许用户删除存储在单个分区中的所有数据;ALTER TABLE demo TRUNCATE PARTITION partition_name会成功的。

高级操作:提示和技巧

索引和分区都将极大地帮助改进读取操作,但我们需要记住一些额外的事情。

COUNT(*)只有在使用 MyISAM 存储引擎时查询才会很快。Windows 11 未检测到电池错误:8 种修复方法更快的查询是 MyISAM 存储引擎的唯一优势,因为它将行计数存储在其元数据中。没有其他存储引擎可以做到这一点。COUNT(*)

要使用SELECT通配符进行更快的查询,请仅在搜索查询的末尾使用通配符。修复笔记本电脑上未检测到电池错误 – Windows 11/10查询应该类似于下面的代码;请记住,字符串开头没有通配符:

SELECT  * FROM demo_table WHERE column LIKE 'string%' ;    

字符串开头的通配符告诉 MySQL 它应该%在开头搜索任何内容,这会减慢查询速度。

UNIQUE索引帮助我们确保列中的每个条目都是唯一的。如何在 Windows 7 中始终以管理员身份运行程序如果不是这样,MySQL 将出错。

IGNORE如果我们想在插入数据或执行其他操作时忽略错误,该关键字很有用。只需在语句中指定IGNORE,然后照常进行:

INSERT  IGNORE  INTO demo_table ( c1 ) VALUES ( 'Demo' );  

LOAD DATA INFILE and SELECT … INTO OUTFILEINSERT比以常规方式发出查询和备份数据要快得多。INSERT此类查询避免了运行查询时存在的大量开销。如何保护您的家庭无线网络有关详细信息,请参阅 MySQL 文档。

FULLTEXT当我们搜索带有符号的任何内容时,旧版本的 MySQL 无法处理更大数据集上的索引@。那是 MySQL 中的一个错误,. 这种方法会导致查询超时。BUG#104263

避免ALTER对运行大数据集的表发出查询。由于ALTER内部工作原理,它强制 MySQL 创建一个新表,然后将数据插入其中,进行必要的更改,手动重新启动 Windows 资源管理器以避免系统重新启动并将原始表与副本交换。就大数据集而言,这种方法通常需要很长时间,所以请记住这一点。

有时,使用DEFAULT关键字一次为多行设置默认值会很有帮助。想象一下创建一个表,然后向其中插入十亿行。使用关键字时DEFAULT,行将预先填充特定关键字,如何通过在 Windows 中编辑 HOSTS 文件来阻止网站从而避免进行ALTER上述可能有问题的查询。定义一列如下:

`column_name` VARCHAR ( 255 ) NOT NULL  DEFAULT  'value' ;

希望本文中的建议能帮助您提高 MySQL 数据库的性能。删除 Rootkit 并防止它们感染您的 PC 的 3 大工具然而,与所有事情一样,请注意也有缺点。

每种方法的缺点

使用上述方法提高 MySQL 性能可能会带来以下缺点。

检查需要一些 Linux 内部知识,并且在许多情况下,什么是 Rootkit 以及它如何感染您的 PC需要一个相当强大的服务器。如果您的 RAM 限制为 256MB,或者如果您的磁盘空间总共只有 2GB,您就无法提高性能。my.cnf

了解你的方法和存储引擎并修改它们的设置通常需要对 MySQL 空间有深入的了解。人们需要确切地知道被修改的每个参数的作用,它们的适当值是什么,等等。my.cnf

Windows 用户很容易,因为,一个等价物,如何使用 Microsoft Fix it Center 修复 Windows 问题和错误在其内部为他们提供了很多注释,但 Linux 用户通常必须自己定义许多设置。my.inimy.cnf

数据类型和字符集的主要缺点是每个字符都需要磁盘空间,并且某些字符集对存储空间的要求不同。如果我们处理大型数据集,每个字符四个字节或每个字符八个字节肯定会有所不同,Virustotal:在线病毒和恶意软件扫描服务所以这也是需要考虑的事情。有关详细信息,请参阅MySQL 文档。

索引和分区通常以减慢其他一切(包括、和 )SELECT为代价来加快操作,使用 Spybot Search and Destroy 保护您的 PC 免受间谍软件、特洛伊木马的侵害因为所有这些查询也必须在索引和分区中插入、更新或删除数据。INSERTUPDATEDELETE

结论

在本文中,我们讨论了可以快速提高 MySQL 数据库性能的五种方法。Soluto 分析 Windows 启动,为您提供更快的计算机每种方法都有其独特的优点和缺点,适用于不同的场景。但是,优点是否大于缺点由您决定。

熟悉有关所选存储引擎的文档。使用 InnoDB 或 XtraDB 作为您的存储引擎,尽最大努力规范您正在使用的表,避免为您的数据类型使用不必要的大小,使用 Windows 引导性能诊断修复缓慢的 Windows 启动并为您的列建立索引以加快查询速度SELECT。

索引和分区用于SELECT以减慢INSERT、UPDATE和为代价来加快查询速度DELETE。了解 Windows 中的轻松访问中心这两种方法都有多种类型,如果使用得当,它们会非常有用。

一如既往,在尝试使用本文中描述的一种或多种方法提高 MySQL 应用程序性能之前,请务必评估所有可用的选项,在测试任何内容之前进行备份,并在本地环境中尝试所有修改第一的。明智地进行修改,并始终牢记,一个地方的性能提升很可能意味着另一个地方的性能下降。

猜你喜欢

转载自blog.csdn.net/weixin_47967031/article/details/129977306