SWa*_*ahi 4 mysql innodb index alter-table
我在更改大表(400 G)以添加索引时遇到 Mysql(5.7)错误:
ERROR 1799 (HY000): Creating index 'FTS_DOC_ID_INDEX' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.
Run Code Online (Sandbox Code Playgroud)
我想我必须增加,innodb_online_alter_log_max_size
但我担心它是从 RAM 中取出的,因为它已经足够满了。
注意:我的路径上有足够的空间tmpdir
。
当我阅读手册时:
指定InnoDB表在线DDL操作期间使用的临时日志文件大小的上限。对于每个正在创建的索引或正在更改的表,都有一个这样的日志文件。该日志文件存储DDL操作期间在表中插入、更新或删除的数据。当需要时,临时日志文件会根据 innodb_sort_buffer_size 的值进行扩展,直至达到 innodb_online_alter_log_max_size 指定的最大值。如果临时日志文件超过大小上限,则 ALTER TABLE 操作会失败,并且所有未提交的并发 DML 操作都会回滚。因此,此选项的较大值允许在在线 DDL 操作期间发生更多的 DML,但也会延长 DDL 操作结束时锁定表以应用日志中的数据的时间。
这是指磁盘空间,而不是 RAM。它会根据需要而增长,而不是从环境开始。 innodb_online_alter_log_max_size
也许应该设置为小于可用磁盘空间的值,但也不能太小。
innodb_sort_buffer_size
默认为 1MB;可能没有理由改变这一点。在某些操作中,这么多的空间是在 RAM 中分配的。可能会为表上的每个索引分配其中之一(在 RAM 中)。
归档时间: |
|
查看次数: |
10310 次 |
最近记录: |