Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Replication and Row Searches

19.5.1.27 复制和行搜索

当使用基于行的复制格式的副本应用UPDATEDELETE操作时,它必须在相关表中搜索匹配的行。该算法使用表中的一个索引来执行搜索作为首选,如果没有合适的索引,则使用哈希表。

该算法首先评估表定义中的可用索引,以确定是否有合适的索引可用于搜索,并且如果有多个可能的索引,哪个索引是最适合操作的。

  • 该算法忽略以下类型的索引:

  • 全文索引。

  • 隐藏索引。

  • 生成索引。

  • 多值索引。

任何索引,其中行事件的before-image不包含索引的所有列。

  1. 如果没有合适的索引,算法不使用索引进行搜索。如果有合适的索引,算法从候选索引中选择一个,按照以下优先顺序:

  2. 主键。

  3. 具有NOT NULL属性的唯一索引。如果有多个这样的索引,算法选择最左边的索引。

任何其他索引。如果有多个这样的索引,算法选择最左边的索引。

如果算法能够选择主键或具有NOT NULL属性的唯一索引,它将使用该索引来迭代UPDATEDELETE操作中的行。对于每个行事件中的行,算法在索引中查找该行以定位要更新的表记录。如果没有找到匹配的记录,它将返回错误ER_KEY_NOT_FOUND并停止复制应用程序线程。