细节
-
新功能
-
状态: Done">完成
-
媒介
-
解决方法: 固定
-
3.0.3
-
没有一个
-
没有一个
描述
测试
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 = '资源- >
.“和referenced_table_name = $(资源- >{台}’”;
但是…简单地添加"table_schema='$tbl->{db} "
’”将加快这一进程。
我提议:
my $sql = "SELECT table_schema, table_name "
.“从information_schema。key_column_usage”
.“table_schema = '资源- >
’”
.“和referenced_table_name = $(资源- >
’”;
在当前版本中,将包括跨数据库生成的外键。我的建议是,只有来自同一数据库的外键会被检查。
我找不到一个原因为什么有人会让外键跨数据库,但我相信有一些确实有一个有效的用例。
我认为默认的方法应该只检查相同的table_schema。如果人们想跨数据库检查,他们可以使用一个额外的标志来做到这一点吗?
我将此作为一个错误而不是蓝图报告,因为当前代码在处理大量数据库时根本无法使用。我希望这没问题。
启动:https://bugs.launchpad.net/雷竞技下载官网percona-toolkit/+bug/1690122