`

mysql text 字段过多解决方法

 
阅读更多

测试结论
mysql版本 5.1
表类型: innodb, row_format=compact (这是默认的行格式)

插入超过10个blob, blob的数据量很小(<768字节), 插入成功。
插入超过10个blob, blob的数据量很大(>768字节), 插入失败:报 Got error 139 from storage engine。

注意,如果mysql服务器版本是5.1, innodb_file_format选项不存在, 也就无从谈起Barracuda格式。 设置row_format=dynamic也是没意义的。

mysql版本 5.5
表类型: innodb, row_format=compact (这是默认的行格式)
插入超过10个blob, blob的数据量很大(>768字节), 插入失败:报 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, row_format=dynamic (这是innodb的新文件存储格式Barracuda所支持的行格式)
插入超过10个blob, blob的数据量很大(>768字节), 插入成功

备注:
1) 实际测试测试我用的每个字段长度都是100K+
2) 对于mysql5.5, 虽然支持Barracuda。但是默认使用的还是老的格式:Antelope
除非在mysql的配置里面my.cnf修改:
innodb_file_per_table = 1
innodb_file_format = Barracuda
或者set global 命令动态的修改:
SET GLOBAL innodb_file_format=barracuda;
SET GLOBAL innodb_file_per_table=1;

注意:
1) 修改后的innodb_file_format格式, 只影响后续创建的表。 也就是后续创建的表,可以支持把row_format设为dynamic
2) SET GLOBAL 只是在mysql服务器运行期间有效,重启后innodb_file_format还原为原来的格式。
3) 判断一个表是否支持超过10个blob的字段的简单办法:
show table status like 't1' \G
查看 Row_format , 如果是Compact, 必定不支持, 如果是dynamic, 则支持。

 

SHOW TABLE STATUS LIKE 'eventanalysis%';

http://www.cnblogs.com/gaizai/archive/2012/09/20/2695663.html

http://www.2cto.com/database/201405/302228.html

分享到:
评论

相关推荐

    Mysql 报Row size too large 65535 的原因及解决方法

    对于非BLOB和TEXT字段,MySQL需要为每个字段创建索引,这可能导致行尺寸超出限制。 非大字段通常指的是VARCHAR、CHAR、INT、DATE等类型。VARCHAR是一种可变长度的字符串类型,它只存储实际输入的字符数量加上一个...

    mysql基础知识和mysql优化整理

    2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、浮点类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。 3. SQL语言...

    MYSQL教程02 MYSQL教程02 MYSQL教程02

    在安装与配置MySQL后,我们需要熟悉数据类型,如整数类型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT)、浮点数类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME...

    更新text字段时出现Row size too large报错应付措施

    在MySQL数据库中,当尝试更新一个包含`TEXT`字段的记录时,可能会遇到"Row size too large"的错误。这个错误通常发生在试图创建或更新的行超过了存储引擎所允许的最大行大小。在这种情况下,错误信息会指出需要将...

    Mysql基础总结思维导图

    MySQL是一种广泛使用的开源关系型数据库管理系统,其设计目标是提供高效、可靠且易于维护的数据存储解决方案。本总结将深入探讨MySQL的基础知识,包括安装与配置、数据类型、表的创建与管理、SQL查询语言、索引与...

    MySQL 5.1中文手冊

    11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆...

    mysql开发设计规范

    22. **文本字段处理**:尽量将TEXT类型改为VARCHAR(255),新版本MySQL支持更大的VARCHAR长度,以代替TEXT。 23. **更新频繁的字段**:从更新频繁的表中分离出大字段,以减少查询和更新时的负担。 24. **行长度控制...

    MySQL 5.1官方简体中文参考手册

    11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆...

    MySQL 5.1参考手册

    11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆...

    Mysql速查手册HandBood系列(By FengGe整理)

    3. 数据类型:MySQL支持多种数据类型,如数值类型(INT、FLOAT、DECIMAL)、字符串类型(VARCHAR、TEXT)、日期时间类型(DATE、TIME、DATETIME)等。 二、数据库管理 1. 创建与删除:使用CREATE DATABASE语句创建...

    mysql5.1中文手册

    BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符...

    MySQL 5.1参考手册 (中文版)

    11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆...

    MySQL 5.1参考手册中文版

    11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 ...

    MySQL开发与操作规范

    - **避免使用text和blob类型**:如果必须使用,建议将这些类型的数据存储在扩展表中。 - **年份存储**:使用YEAR类型存储年份。 - **字段非空设置**:建议字段定义为NOT NULL,并设置默认值。 - **适度使用高级功能*...

    MYSQL中文手册

    11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 ...

    MySQL 数据库设计实践

    - 避免使用过多索引,因为过多索引会导致写操作变慢。 - 在复合索引中,考虑查询中最常使用的列作为前导列。 #### 四、去除“O”操作 “O”在这里可能指的是减少不必要的操作(如冗余的查询、更新等),以及优化...

Global site tag (gtag.js) - Google Analytics