Mar*_*ski 1 mysql myisam innodb
我有这个错误:
行大小太大 (> 8126)。将某些列更改为
TEXTorBLOB或使用ROW_FORMAT=DYNAMICorROW_FORMAT=COMPRESSED可能会有所帮助。在当前的行格式中,BLOB768 字节的前缀是内联存储的。
为了解决这个问题,我可以将 InnoDB 更改为 MyISAM 吗?
是的,您可以切换到 MyISAM。但这不一定是个好主意:
REPAIRMyISAM 表崩溃后经常需要InnoDB 表每行可以处理超过 8KB。显然,您因拥有十几个或更多 TEXT/BLOB 列而遇到了问题?行的主体部分最多存储一列的 767 个字节;其余的放在一个单独的块中。
我认为人们ROW_FORMAT会将所有大列放在一个单独的块中,只留下 20 个字节来指向它。
宽行的另一种方法是进行“垂直分区”。也就是说,构建另一个表(或多个表),其中包含匹配的列PRIMARY KEY和一些大列。将稀疏填充的列移动到这样的表中,然后在该表中减少行数,并用于LEFT JOIN获取数据是特别方便的。另外,如果您有一些很少需要的列SELECT,那么这些列就是移动的好选择——JOIN当您不需要这些列时就不需要。
| 归档时间: |
|
| 查看次数: |
1223 次 |
| 最近记录: |