【发布时间】:2017-10-07 09:07:28
【问题描述】:
背景
我安装了 MariaDB 服务器,一些表使用 MyISAM,其中一些使用 InnoDB。 InnoDB 有利于减少查询时间,因为它是多核的。我将我们的一些大表更改为 InnoDB。
然后我发现我的硬盘正在使用越来越多的空间。我检查了我的 CentOS 7 Linux,发现 ibdata1 正在占用我的硬盘空间。而且我知道是否需要缩小将 MySQL 服务器完全转储到 .sql 文件中所需的空间,然后删除所有数据库。之后,停止 MySQL 服务器并删除 ibdata1 文件。此外,将innodb_file_per_table 设置为my.cnf。最后,将 sql 导入回服务器。
在我发现这个问题之前一切都很顺利。
问题
我实时检查了我的新 HDD 使用情况,我意识到该表现在正在使用一个 .ibd 文件,其名称与表名相同。这是巨大的!导入完成后,硬盘使用率比以前更差。我尝试OPTIMIZE TABLE 获取一个 750MB 的文件,看看它是否可以缩小大小但没有运气。我还有一个 14.8GB 的 InnoDB 表,但我没有另一个 14.8GB 的 MySQL 来优化我的表,我认为它不会减少使用量。
附件
当前的 my.cnf
[mysqld]
local-infile = 0
max_connections = 32768
long_query_time = 5
query_cache_type = ON
query_cache_size = 200M
tmp_table_size = 2M
max_heap_table_size = 64M
myisam_sort_buffer_size = 64M
table_open_cache = 4096
thread_concurrency = 28
sort_buffer_size = 16M
read_buffer_size = 16M
join_buffer_size = 16M
innodb_file_per_table
innodb_flush_method = O_DIRECT
innodb_log_file_size = 1G
innodb_buffer_pool_size = 4G
innodb_read_io_threads = 7
innodb_write_io_threads = 7
我现在能做什么?
【问题讨论】:
-
如果问题是
mysql特定的,为什么还要使用sql-server标签?
标签: mysql database optimization mariadb