为什么 MYSQL 在不同虚拟机上相同 RAM 和 cpu 上插入速度很慢

问题描述 投票:0回答:5

我有一个问题,MYSQL 性能在不同的机器上插入相同的 ram 和 cpu。

我在 VM Window 2k3 4GB RAM 上运行 MYSQL,4 个 CPU 构建在我的 PC 上运行的 VMWare Workstaion 12 上,而 VM Window 2k3 4GB RAM、4 个 CPU 构建在服务器上的 ESXi 6.5 上。当然服务器的所有硬件都比我的电脑好

我的PC上的MYSQL在1.5秒内执行3000个查询插入,但在服务器上在48秒内执行3000个查询插入。有什么问题吗?

2 个虚拟机具有相同的 my.ini 配置:

[client]

port=3306

[mysql]

default-character-set=latin1


[mysqld]
port=3306
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"

datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"
character-set-server=latin1

default-storage-engine=INNODB

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

max_connections=500

query_cache_size=0

table_cache=256

tmp_table_size=18M

thread_cache_size=8

myisam_max_sort_file_size=100G

myisam_sort_buffer_size=35M

key_buffer_size=25M

read_buffer_size=64K

read_rnd_buffer_size=256K

sort_buffer_size=256K

innodb_additional_mem_pool_size=2M

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=1M

innodb_buffer_pool_size=47M

innodb_log_file_size=24M

innodb_thread_concurrency=18

当我将

innodb_flush_log_at_trx_commit
配置为0或2时,服务器在0.5秒内运行得非常快,但我想知道当
innodb_flush_log_at_trx_commit
为1时,我的PC上执行时间为1.5秒,但服务器执行时间为48秒,有什么区别?

mysql performance virtual-machine vmware
5个回答
1
投票

3000/48 大约是旋转驱动器的速度(经验法则:每个 I/O 10 毫秒)。所以这听起来像

innodb_flush_log_at_trx_commit=1

3000/1.5 听起来甚至比 SSD 还要好,所以我猜测有一个带有电池支持写入缓存的 RAID 控制器,这将使大多数写入几乎是瞬时的。拥有一组

1
就没问题了。或者驱动器可能启用了写入缓存。


0
投票

将其保留为 1 将有助于 innodb 保持 ACID 兼容。如果将其设置为 1,则日志缓冲区将在每个事务提交后立即写入日志文件。但如果设置 innodb_flush_log_at_trx_commit = 0,则每秒会执行一次相同的操作。实际上这可能是插入时间不同的原因。默认设置为1。设置为2时,事务提交时会将日志写入文件,但不会每次都进行刷新到磁盘操作。


0
投票

为什么可以通过提供来确定
共享 VM 主机的 VM 主机 TOTAL RAM 的相似帐户的 VM 数量。并从您的两台 MySQL 主机进行比较/分析, RAM(以 GB 为单位)和

SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS:

这将是一个有趣的评估。


0
投票

@Vuong Minh 我们只能通过

来确定原因
SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS;

对于您的每个主机。希望您可以将此信息添加到您的问题中。


0
投票

如果您从装有 MySQL 的虚拟机获得大约 50 - 80% 的性能,就虚拟化开销而言,这将是相当正常的。鉴于您看到的虚拟机性能仅达到 3.125%,这听起来像是磁盘 I/O 问题 - 主机操作系统和来宾操作系统之间的某些因素似乎使磁盘写入速度减慢了约 30 倍。

要证明(或反驳)这一假设,请在虚拟机和虚拟机管理程序配置中的虚拟磁盘上启用写入缓存,然后尝试再次运行相同的测试。您应该会看到更具可比性的性能。另外,请确保您已使用“密集”分配而不是惰性分配来分配虚拟磁盘 - 如果您分配了精简卷,它将导致大量随机磁盘 I/O 而不是顺序磁盘 I/O,这很容易造成 30 倍的减速。

披露:我写了引用的文章。

© www.soinside.com 2019 - 2024. All rights reserved.