请教mysql每次存储块大小的问题~?

问题描述

想咨询您一下,mysql的myisam机制中,一次写到文件中的数据块时多少字节呢?有限制嘛?reclength和length的关系是什么呢?谢谢~int _mi_write_part_record(MI_INFO *info, my_off_t filepos,/* points at empty block */ ulong length,/* length of block */ my_off_t next_filepos,/* Next empty block */ byte **record,/* pointer to record ptr */ ulong *reclength,/* length of *record */ int *flag);/* *flag == 0 if header */上面是myisam写文件的函数声明 问题补充:thxg 写道

解决方案

引用我这里用的mysql是windows下源码编译的,用vs2005编译的,这个调试的话如何做呀?你既然编译了,把对应的dll,exe以及pdb文件复制到相关目录,启动mysqld,然后attach到该进程, 在你关注的文件源码设置断点,即可跟踪。
解决方案二:
在安装目录下一般会有my.inimy-huge.inimy-innodb-heavy-4G.inimy-large.inimy-medium.inimy-small.ini等等一系列文件供参考
解决方案三:
引用您好,mysql在将一条记录插入到数据库的时候是insert执行一次就写一次myd试问嘛?如果是的话是不是用的buffer存储的记录呀?这个 buffer是多少字节的呢?不好意思,我刚刚开始弄,源码很多不大明白,而且搞不清楚具体什么地方的源码是写这个数据文件的,谢谢您这个跟引擎的实现有关。建议debug一下源码。
解决方案四:
可以看看mysql的源码实现,当:length 比 reclength(记录实际长度) 还大 48个字节的时候,需要进行拆分。if (length > *reclength + MI_SPLIT_LENGTH)length应该是记录所占的块的物理长度,有适当冗余空间,以供块的合并分裂使用。而reclength是记录的实际长度。
解决方案五:
reclenght 代表的是 表中一个记录 可以占用的最大长度length就是记录的实际长度http://code.google.com/p/mysql-heap-dynamic-rows/
解决方案六:
没研究过MySQL的源码。凭感觉,这种写处通常都有缓存,MySQL配置中可以指定写入缓存有多大,当缓存数据满了就进行写入。所以这里的数据块大小很可能与MySQL的配置有关。

时间: 2024-11-01 22:47:10

请教mysql每次存储块大小的问题~?的相关文章

请教mysql统计每天平均值进行运算问题

问题描述 请教mysql统计每天平均值进行运算问题 20C 用一个数据表统计温度来计算积温问题. 例如:昨天有五个温度值:10.4,10.6,10.8,10.9,11.0,今天统计三个温度:8.2,6.7,5.4.设一个特定值为5.则从昨天到今天的积温就是:((10.4+10.6+10.8+10.9+11.0)/5-5)+((8.2+6.7+5.4)/3-5),依次类推.sql语句应该怎么写?求教 现有数据表结构如下图time是时间字段,ch01为数据: 解决方案 1.先按照日期求出每天的平均值

请教mysql存储过程分割字符串做关联

问题描述 请教mysql存储过程分割字符串做关联 假如有两个表表一:id pid1 pid1pid22 pid2pid5pid63 pid34 pid4pid1...... 表二:pid pnamepid1 aaa pid2 bbbpid3 cccpid4 dddpid5 eeepid6 ggg...... 假如我想要通过存储过程计算表1中包含pname=ddd的记录的行数,按这样的表结构,请教是否可以实现?怎么实现呢? 解决方案 把你第一个表拆成以下形式.1 pid12 pid22 pid22

请教mysql日期字段类型设置与C#DataTable配合的问题

问题描述 在mysql中有日期字段,我设置该字段类型为DateTime时,在C#执行查询并写入DataTable时,报错误:该字符串未被识别为有效的DateTime.该字段的值为:2014/8/2014:38:09,也尝试将/改为-,都一样报错.报错的语句为:CurrlicTatatable=db.ExecuteDataTable(sqlinfo,null);经验证,sql语句没有错误,主要问题出在字段类型的设置上.现向各位大神请教mysql中的时间字段正确设置. 解决方案 解决方案二:不用拼接

设计数据库必读 mysql 字段大全 大小 范围 用途 区别

MYSQL的所有字段使用大全,必读,身藏 1.mysql的数值类型 列类型                       需要的存储量 TINYINT                         1 字节  SMALLINT                      2 个字节  MEDIUMINT                   3 个字节  INT                                 4 个字节  INTEGER                      

统计MySQL数据表大小

有时候需要查询MySQL数据库中各个表大小,该如何操作呢? MySQL中有一个名为 information_schema 的数据库,在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHEMA : 数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录数DATA_LENGTH:数据大小INDEX_LENGTH:索引大小 其他字段请参考MySQL的手册. use information_schema;SELECT TABLE_NAME,

MySQL查看数据库大小sql命令

1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询所有数据的大小: select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables; 3.查看指定数据库的大小: 比如查看数据库home的大小 select concat(round(sum(data_length/1024/1024),2),'MB') as data fr

请教:当页面大小改变时,怎样保证swf按钮与页面已有按钮的大小和相对位置不变

问题描述 具体问题是这样的:我用一个尺寸相同的swf按钮覆盖页面已有按钮,当用户通过CTRL+鼠标滚轴改变页面大小时,两种按钮的大小和相对位置发生变化,前者不再能够恰好覆盖后者,请问大家有什么办法解决这个问题么,谢谢! 解决方案 设置flash和按钮的位置,使用绝对定位保持一致试试.

mysql查询区分大小sql语句小结

公司网站有需求对用户名验证要验证大小写.其实刚开始他注册的时候就就都是大小写,所以没有必要做大小写验证了.但是现在要登陆的验证大小写,那在注册的时候也要对此进行验证. 但是MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,这个字符集对大小写不敏感,因此在比较过程中中文编码字符大小写转换造成了这种现象 后来找到一个利用binary临时解决办法  代码如下 复制代码 SELECT * FROM  ·表名·WHERE binary `user`=

Mysql日期类型大小比较---拉取给定时间段的记录

我们知道,mysql里边,日期类型有很多表现形式,date, datetime,timestamp等类型.考虑这样一种场景: 按时间段拉取给定时间段的内容,这时,我们就得使用日期类型的比较了. 表结构:tablename_tbl +-----------------+--------------+------+-----+-------------------+----------------+| Field | Type | Null | Key | Default | Extra |+---