【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.13
【遇到的问题:问题现象及影响】
有一组备库,数据和主库一致。和备库执行同样的SQL,没有报错。
希望各位大佬提供排查思路。
再补充一下,是个别表不能走主键索引,不是所有表。
报错文字版的发一下
把force index(primary)去掉试下
这种情况可能是由于以下原因导致的:
FORCE INDEX
或者其他方式强制使用主键索引时,TiDB 可能会对该操作进行检查,以确保使用主键索引是合理的。如果检查失败,可能会导致错误的发生。为了解决这个问题,您可以尝试以下步骤:
tidb.toml
)保持一致,特别是与索引相关的配置项。比较主库和备库的配置文件,查看是否存在差异。pt-table-checksum
或者 sync_diff_inspector
)检查备库和主库的数据一致性。确保备库的数据与主库完全一致。ERROR 1815 (HY000): Internal : Can’t find a proper physical plan for this query
没报错
现在的情况是主库报错了,但是备库没有报错。
换个其他索引看看知否一样的报错
是不是有tiflash副本,清理掉这个tiflash副本试试
收集统计信息看看
根据您提供的信息,当执行某个查询时,出现了错误 ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query
。
这个错误通常表示 TiDB 在执行查询时无法找到适合的物理执行计划。物理执行计划是指 TiDB 在执行查询时选择的具体执行方式,包括选择哪些索引、使用哪种连接方式等。
这个问题可能是由以下原因导致的:
查询复杂度过高:如果查询涉及多个表、多个连接条件或者复杂的过滤条件,TiDB 可能会在选择物理执行计划时遇到困难。这种情况下,您可以尝试优化查询,例如通过添加索引、拆分查询或者调整查询条件来降低查询复杂度。
统计信息不准确:TiDB 使用统计信息来估计查询的成本,并选择最优的物理执行计划。如果统计信息不准确或者过时,TiDB 可能会选择不合适的执行计划。您可以尝试更新统计信息,使用 ANALYZE TABLE
命令来收集最新的统计信息。
TiDB 版本问题:某些 TiDB 版本可能存在执行计划选择的 bug 或者限制。您可以尝试升级到最新的 TiDB 版本,以获取更好的执行计划选择。
为了解决这个问题,您可以尝试以下步骤:
优化查询:检查查询语句,尝试优化查询的复杂度,例如添加索引、拆分查询或者调整查询条件。
更新统计信息:使用 ANALYZE TABLE
命令来更新表的统计信息,以确保 TiDB 使用最新的统计信息进行执行计划选择。
升级 TiDB 版本:如果您正在使用较旧的 TiDB 版本,尝试升级到最新的版本,以获取更好的执行计划选择和 bug 修复。
如果问题仍然存在,建议您提供更多的上下文信息、具体的查询语句和表结构,以便进行更详细的分析和解答。
换索引不会
没有tiflash
表是聚簇表还是 非聚簇表,完整表结构 发下
参考这个看看