【发布时间】:2018-11-05 14:40:59
【问题描述】:
我正在尝试在 MariaDB 10.3 中对一些大型 InnoDB 表进行分区。对于每个表,将数据插入这些表需要几个小时。这似乎太慢了。
这些表最初是在 MySQL 5.5 中构建的,最近升级到 MariaDB 10.3。此升级过程没有报告错误或警告。
这些表平均包含大约 2400 万行,每个表大约有 600 Mb 的数据。
按照以下过程对这些表进行分区:
- 创建一个目标表的空副本,按范围分区(在日期时间列上),其中包含两个分区,一个用于保存早于定义日期的数据,另一个分区用于保存小于 MAXVALUE 的数据。
- 在这个空表中创建 100 个每周分区。
-
通过select语句将数据插入到这个表中:
INSERT INTO new_table SELECT * from originalTable;
我使用的 MariaDB 版本是 10.3.9
全局变量是默认值,除了:
autocommit = OFF
global_max_allowed_packet = 1073741824
innodb_buffer_pool_size = 10737418240
innodb_doublewrite = OFF
这是在具有 65GB 内存和 40 个 3G 内核的 CentOS 版本 7.2.1511 上运行的。
我在网上看到导入 300Mb 需要几分钟,但我什至无法接近那个速度。我的表现似乎非常错误,但我无法确定问题。非常感谢有关如何加快速度的任何想法?
【问题讨论】:
-
我知道自动提交已关闭,但您是否尝试将其包装在 BEGIN/COMMIT 中?
标签: import mariadb partitioning