在我的家庭机器上,运行Ubuntu18.04和MySQL版本8.0.12的硬件、表创建、数据库创建等都非常缓慢。在我的另一台拥有较旧硬件(较慢的SSD)、较旧版本的MySQL (5.7)和Ubuntu16.04的计算机上,一切都要快得多。我将/etc/mysql/mysql.conf/mysqld.cnf中的配置从速度更快的计算机复制到速度较慢的计算机中,但没有任何变化。这个问题是从哪里来的呢?
例如
CREATE TABLE blah (id BIGINT UNSIGNED NOT NULL PRIMARY KEY) ENGINE='InnoDB';完成大约0.12~0.90秒,并从
SHOW PROFILE for query 7;我得到了
'starting', '0.000132'
'checking permissions', '0.000025'
'Opening tables', '0.000877'
'creating table', '0.092163'
'After create', '0.007109'
'query end', '0.000024'
'closing tables', '0.000007'
'freeing items', '0.000019'
'cleaning up', '0.000013'与我的工作机器相比,这是非常慢的,我的工作机器对0.009.0 1~0.009执行相同的查询。我怎样才能知道问题从何而来?
发布于 2018-09-28 19:04:59
我会把钱花在MySQL 8.0的新特性上,比如原子DDL https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html
MySQL 8.0支持原子数据定义语言(DDL)语句。这个特性被称为原子DDL。原子DDL语句将数据字典更新、存储引擎操作和与DDL操作关联的二进制日志写入组合到单个原子事务中。事务要么提交,对数据字典、存储引擎和二进制日志进行可适用的更改,要么回滚,即使服务器在操作期间停止。原子DDL是通过在MySQL 8.0中引入MySQL数据字典而实现的。在早期的MySQL版本中,元数据存储在元数据文件、非事务性表和特定于存储引擎的字典中,这就需要中间提交。MySQL数据字典提供的集中式、事务性元数据存储消除了这一障碍,使将DDL语句操作重组为原子事务成为可能。
注意元数据文件对数据字典的更改。
https://dba.stackexchange.com/questions/218658
复制相似问题