gpt4 book ai didi

mysql - 行大小太大(> 8126)我可以将 InnoDB 更改为 MyISAM

转载 作者:行者123 更新时间:2023-11-29 05:18:21 24 4
gpt4 key购买 nike

我有这个错误:

Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

要解决这个问题,我可以将 InnoDB 更改为 MyISAM 吗?

最佳答案

是的,您可以切换到 MyISAM。但这不一定是个好主意:

  • MyISAM 不支持事务
  • MyISAM 表经常在崩溃后需要REPAIR

一个 InnoDB 表每行可以处理超过 8KB 的数据。显然,您遇到问题是因为有十几个或更多 TEXT/BLOB 列?行的主要部分最多存储一列的 767 个字节;其余的放在一个单独的 block 中。

我认为 ROW_FORMAT 会将所有大列放在一个单独的 block 中,只留下 20 个字节指向它。

宽行的另一种方法是进行“垂直分区”。也就是说,使用匹配的 PRIMARY KEY 和一些大列构建另一个表(或多个表)。将稀疏填充的列移动到这样的表,然后在该表中减少行数,并使用 LEFT JOIN 获取数据特别方便。此外,如果您有一些您很少需要 SELECT 的列,那么这些列是移动的好候选者——当您不需要它们时不需要 JOIN列。

关于mysql - 行大小太大(> 8126)我可以将 InnoDB 更改为 MyISAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29534868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com