MySQL:带数据拷贝的在线DDL就地算法是如何工作的?

MySQL:带数据拷贝的在线DDL就地算法是如何工作的?,mysql,Mysql,我在mysql 5.7中阅读了关于在线ddl的文档 () 本文档说明,即使在使用ALGORITHM=INPLACE的情况下,数据复制仍然可能发生 “…当主键上的操作使用ALGORITHM=INPLACE时,即使数据仍被复制,也比使用ALGORITHM=COPY更有效,因为…” 我不能清楚地理解这一点。“数据仍在复制”是否意味着操作使用临时表?或者其他一些临时空间,如在线缓冲区?这是一种很好的解决方法。但我认为它的工作原理是:当使用算法=复制时,然后使用一个外部文件进行复制,当使用算法=就地时,它

我在mysql 5.7中阅读了关于在线ddl的文档 ()

本文档说明,即使在使用ALGORITHM=INPLACE的情况下,数据复制仍然可能发生

“…当主键上的操作使用ALGORITHM=INPLACE时,即使数据仍被复制,也比使用ALGORITHM=COPY更有效,因为…”


我不能清楚地理解这一点。“数据仍在复制”是否意味着操作使用临时表?或者其他一些临时空间,如在线缓冲区?

这是一种很好的解决方法。但我认为它的工作原理是:当使用
算法=复制
时,然后使用一个外部文件进行复制,当使用
算法=就地
时,它扩展当前表文件并在该文件内部复制数据,并将旧数据标记为“已删除”成为新记录的新位置(这也是您不应信任按插入顺序获取数据的原因之一)。。最有可能的是,缓冲池也将参与这两项工作,以加速磁盘上的写入到broad to answer..但它的工作原理是当使用
算法=复制时,然后使用外部文件复制到,当使用
ALGORITHM=INPLACE
时,它会扩展当前表文件并在该文件内部复制数据,并将旧数据标记为“已删除”,以作为新记录的新位置(这也是您不应信任按插入顺序获取数据的一个原因)。。最有可能的是,缓冲池也将参与其中,以加快磁盘上的写入速度