业务新增一条带大文本字段的数据,执行 INSERT 直接报错 Key too large,短文本数据可以正常写入,表已建立联合索引,TiKV、TiDB 各项资源负载正常。
你这个 Key too large 报错,结合 “带大文本字段、建了联合索引” 的场景,大概率是索引键长度超出限制导致的。TiDB 对单个索引键的默认长度限制是 3072 字节(约 768 个 UTF-8 字符),当联合索引中包含大文本字段时,索引键总长度超过这个限制就会触发报错,短文本写入正常也印证了这一点。
建议优先优化索引设计:移除大文本字段的索引,改用前缀索引(如 INDEX idx_text (content(255))),或把大文本字段拆分到单独的扩展表中,避免主表索引键过大;如果业务确实需要全字段索引,可通过调整 max-index-length 参数放宽限制(最大支持 12288 字节),同时检查 txn-entry-size-limit 配置,确认单条 KV 条目大小未超出 6MB 默认限制,从根源上解决写入报错问题。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。