计算MySql单行大小的公式(引擎MyISAM)

时间:2011-04-11 06:55:59

标签: mysql size row formula myisam

我有一种情况,我必须动态创建表。根据某些条件,我将改变特定表的列的大小。
为此,我需要计算一行的大小。

e.g。 如果我要创建下表

CREATE TABLE示例(id int,name varchar(30));

因此,考虑到在mysql表中存储行的所有开销,公式将为我提供上表中单行的大小。

可以这样做吗?这样做是否可行?

2 个答案:

答案 0 :(得分:2)

这取决于您使用的存储引擎以及为该表选择的行格式以及您的索引。但它不是一个非常有用的信息。

修改

当你确切知道自己在做什么时,我建议反对标准化 。创建DBMS以处理大量数据。您可能不需要将结构化数据序列化为单个字段。

请记住,您的应用程序层必须令牌(或更糟)序列化字段数据以获得原始含义,这肯定比从数据库中获取结构化形式的数据更大的开销。

我能想到的唯一一个例子就是客户端繁重的架构,当将处理移动到客户端时实际上会减轻服务器的负担,并且为了传输,您无论如何都要序列化我们的数据。 - 在服务器端代码(如php)中,将序列化stye 数据保存到数据库中并不是一个好的方法。

(尽管在某些情况下使用php的内置序列化可能是一个好主意。您当前的项目似乎并没有从中受益。)

答案 1 :(得分:0)

VARCHAR是一个可变长度数据类型,它有一个length属性,但该值可以为空;计算可能不准确。请查看information_schema中的“Avg_row_length”字段。tables