我测试了一下innodb的存储
CREATE TABLE IF NOT EXISTS test.tb_varchar (
user_varchar varchar(20) NOT NULL )
ENGINE = InnoDB
DEFAULT CHARACTER SET = gb2312
COLLATE = gb2312_chinese_ci
然后批量插入了1W条记录,值都相同
INSERT INTO tb_varchar(user_varchar) VALUES ('1111111111');然后查看information_schema.tables对应avg_rowlength:40 data_length:409600这个单位应该是字节吧,为什么一行记录就用掉了40个字节?
CREATE TABLE IF NOT EXISTS test.tb_varchar (
user_varchar varchar(20) NOT NULL )
ENGINE = InnoDB
DEFAULT CHARACTER SET = gb2312
COLLATE = gb2312_chinese_ci
然后批量插入了1W条记录,值都相同
INSERT INTO tb_varchar(user_varchar) VALUES ('1111111111');然后查看information_schema.tables对应avg_rowlength:40 data_length:409600这个单位应该是字节吧,为什么一行记录就用掉了40个字节?
解决方案 »
- You have an error in your SQL syntax
- 求助longblob问题
- (求助)关于如何向有外键的表插入数据(只知道外键表其他属性 不知道id)
- postgreSQL 导入 导出DB的问题
- 刚学mysql ,请高手看下这个存储过程,找了好久不知哪错了
- Mysql用一条语句怎么取出一个表中记录的1/4。
- 请问各位大侠,在ASP里面怎么连接到Mysql服务器?
- 怎样从mysql数据库中用c语言取得blob字段的值,fetch后,不知道怎样将数值放进文件中?
- 动态sql的问题,请高人指点
- 【sql问题】distinct 改成group by 用法
- 如何把绝对路径写到数据库里?
- 关于mysql备份和导入编码不一样
http://hi.baidu.com/soyah/blog/item/0fe2bc8a12905508c9fc7af4.html
----
1. Compact行记录格式Compact行记录是在MySQL5.1时被引入的,其设计目标是能为高效存放数据.简单来说,就是一个页存放的行数据越多,其性能就越高.compact按照以下格式进行存放变长字段长度列表 Null标志位 记录头信息 列1数据….列n数据变长字段长度列表:compact行格式的首部是一个非NULL变长字段长度列表,而是按照列的顺序逆序放置的:当列的长度小于255字节,用1字节表示当大于255字节,用2字节表示变长字段的长度最大不可能超过2个字节(MySQL中varchar的最大长度为65535,因为2个字节为16位.)NULL标志位:该位指示了该行数据中是否有NULL值,用1表示。该部分所占字节应该为bytes.记录头信息:固定占用5个字节(40位).最后就是实际数据存放的地方了.注:每行数据除了用户定义的列外,还有两个隐藏列,事务ID和回滚指针列,分别为6个字节和7个字节大小.若innoDB表没有定义Promary Key每行还会增加一个6字节的RowID列.2 Redundant行记录格式Redundant是MySQL5.1版本之前InnoDB的行记录存储方式,MySQL5.1支持Redundant是为了向前兼容性.格式如下:字段长度偏移列表 记录头信息 列1数据….. 第一:长度偏移列表,同样按照顺序逆序放置的,当列的长度小255字节用1个字节表示,若大于255字节,用2他字节表示.第二:记录头信息:固定占用6个字节.行溢出数据InnoDB存储引擎可以将一条记录的某此数据存储在真正的数据页之外,即用为行溢出数据,一般为BLOB,lob这类的大对象列类型的存储会把数据存放数据页之外.
MYSQL HELP上有说明
对应三个char(20)的字段后,1w记录,对应avg_rowlength还是150。
对应四个char(20)的字段后,1w记录,对应avg_rowlength还是150。这个又怎么解释呢?
#*********************#
技术网站:www.mysqlops.com
新浪微博:http://weibo.com/mysqlops
#*********************#
user_varchar varchar(20) NOT NULL )
ENGINE = InnoDB
DEFAULT CHARACTER SET = gb2312
COLLATE = gb2312_chinese_ci