使用Linux在云服务器上优化MySQL / MariaDB性能

2020年12月31日19:39:35 发表评论 57 次浏览

介绍

MySQL / MariaDB是健壮, 强大且流行的数据库选择。但是, 如果不进行微调, 则服务器资源的使用效率可能会很低。了解如何优化MySQL / MariaDB性能以改善数据库响应时间并最小化服务器开销。

要求

  • 具有Linux的云服务器。
  • 安装并正在运行MySQL 5.7或MariaDB 5.5。

注意:默认情况下, MySQL / MariaDB已安装并在标准Linux安装上运行。如果你的服务器是在最少安装的情况下创建的, 则在继续之前, 你将需要安装和配置MySQL / MariaDB。

优化MySQL / MariaDB查询

调整MySQL / MariaDB以获得更好性能的过程的一部分是检查缓慢或低效的查询。一个结构不良的MySQL / MariaDB查询会降低整个数据库的速度。

可以将MySQL / MariaDB配置为记录任何花费时间超过指定秒数的查询。这将使你跟踪任何慢速查询, 并根据需要进行更正。

要启用慢速查询日志记录, 请登录到MySQL / MariaDB:

mysql -u root -p

输入以下命令以启用日志记录:

SET GLOBAL slow_query_log = 'ON';

默认阈值为10秒。使用以下命令可为任何时间超过1秒的查询启用日志记录:

SET GLOBAL long_query_time = 1;

完成时间超过1秒的查询将记录在/var/lib/mysql/hostname-slow.log.

调整InnoDB值

可以调整三个InnoDB设置来提高MySQL 5.7和MariaDB 5.5的性能。有关这些设置的更多信息, 请参见官方的MySQL文档.

innodb_buffer_pool_size

该值应介于服务器总RAM的50%到75%之间。它应该等于或小于数据库的大小。

innodb_flush_log_at_trx_commit

此设置提供了性能和可靠性之间的重大折衷。设置为0时, 数据库性能将大大提高。但是, 崩溃可能导致多达1秒钟的事务丢失。

此设置的默认值为1。符合ACID。如果你的项目要求符合ACID, 不要更改值innodb_flush_log_at_trx_commit.

innodb_flush_method

设置为O_DIRECT为了避免双重缓冲数据。

添加新的InnoDB设置

要更改InnoDB设置, 请打开my.cnf用于编辑的文件:

  • CentOS 7:须藤nano /etc/my.cnf
  • Ubuntu 16.04:须藤nano /etc/mysql/my.cnf

仅CentOS 7:保留文件的第一行([mysqld]) 完整。将配置放置在此行下方。

仅适用于Ubuntu 16.04:将以下内容添加到文件顶部。一定要放[mysqld]作为第一行。

添加新配置, 每行一个。例如:

[mysqld]
innodb_buffer_pool_size = 500M
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT

保存并退出文件。重新启动MySQL / MariaDB, 以使更改生效:

  • CentOS 7:sudo systemctl重新启动mariadb
  • Ubuntu 16.04:sudo systemctl重新启动mysql
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: