细节

    • 新功能
    • 状态: Done">完成
    • 媒介
    • 解决方法: 固定
    • 3.0.3
    • 3.0.4
    • 没有一个
    • 没有一个

    描述

      测试
      pt-online-schema-change 3.0.2
      mysql version 14.14 Distrib 5.6.35-80.0,用于debian-linux-gnu (x86_64),使用readline 6.3
      D=喜马拉雅山novocar_brainstorm,t=估计,u=root,p=*****——alter- external -keys-method=auto——alter="修改类型集('INVOICE','PLANNING','ATR')"——即将

      有几张罚单提到了信息模式的继承慢性。大多数是关闭的,因为你可以设置。alter-foreign-keys-method为none,这样它就不会检查。

      但是,这并不能解决问题。它只是避免它。如果您确实需要外键呢?

      真正的问题是,pt-online-schema-change中用于查找sub find_child_tables子表的查询很慢:

      目前:
      my $sql = "SELECT table_schema, table_name "
      .“从information_schema。key_column_usage”
      .“referenced_table_schema = '资源- >

      {db}’”
      .“和referenced_table_name = $(资源- >{台}’”;

      但是…简单地添加"table_schema='$tbl->{db} "

      ’”将加快这一进程。
      我提议:
      my $sql = "SELECT table_schema, table_name "
      .“从information_schema。key_column_usage”
      .“table_schema = '资源- >

      ' AND referenced_table_schema='$tbl->{db}

      ’”
      .“和referenced_table_name = $(资源- >

      {台}

      ’”;

      在当前版本中,将包括跨数据库生成的外键。我的建议是,只有来自同一数据库的外键会被检查。
      我找不到一个原因为什么有人会让外键跨数据库,但我相信有一些确实有一个有效的用例。

      我认为默认的方法应该只检查相同的table_schema。如果人们想跨数据库检查,他们可以使用一个额外的标志来做到这一点吗?

      我将此作为一个错误而不是蓝图报告,因为当前代码在处理大量数据库时根本无法使用。我希望这没问题。

      启动:https://bugs.launchpad.net/雷竞技下载官网percona-toolkit/+bug/1690122

      附件

        活动

            carlos.salguero卡洛斯Salguero
            carlos.salguero卡洛斯Salguero
            投票:
            0 为这个问题投票
            观察人士:
            1 开始关注这个问题

            日期

              创建:
              更新:
              解决:

              聪明的清单