存储容量的基本单位是字(MySQL篇:如何计算表记录的存储大小?)

MySQL有多少张唱片?

这个问题应该从密码规范、字符和字节的定义和区别、MySQL的数据类型和长度、MySQL的数据库行格式等。

MySQL

Unicode密码

在Unicode中,每个字符编码的值称为代码点。

在Unicode中,代码点的总范围是x0到x10ffff,总共有1114112个代码点。

代码点的最大值为x10ffff,对应于二进制的有21位。如果我们把2^16个值分成一个组,Unicode总共可以分成17个部分。每个部分称为一个平面,每个平面有65536(2^16)个代码点。

飞机号码

存储容量的基本单位是

代码点范围(十六进制)

姓名缩写

名称

飞机0

0000–FFFF

骨形态发生蛋白

基本多语言平面

飞机1

10000–1fff

SMP

补充多语言平面

飞机2

20000–2fff

小口喝

辅助表意平面

飞机3

30000–3FFFF

提示

第三表意平面

飞机4-13

40000–DFFFF

-(未分配)

-(未分配)

飞机14

E0000–EFFF

SSP

辅助专用飞机

飞机15-16

F0000–10FFFF

SPUA-A/B

补充私人用途面积图Private使用区域平面)

UTF-8个编码规则,而Unicode是其中之一字符集

广义Unicode是一种标准,它定义了一个字符集和一系列编码规则,即Unicode字符集和UTF-8UTF-16、编码规则,如UTF-32。

字符和字节

字符是指字形的单位或符号,包括字母、数字、操作符号、标点符号和其他符号,以及一些功能符号。

字节是计算机信息技术用来测量存储容量的计量单位。当计算机通电时,高压和低压被用作最基本的测量单位,用“0”和“1”表示。“0”或“1”称为“位”或1位,8位为字节或1字节。

由于字符类型很多,不同的字符(包括英文字母、数字、中文、表情符号、其他语言)以及不同的编码格式会产生不同的字节。例如,ASCII码由一个字节表示。在UTF-8字符集下,一个汉字占三个字节,一个英文字符占一个字节。

如何查询MySQL中字符的字节长度(UTF-8编码)如下:

选择CHAR#Length(';Hello123abc';);包含8个字符。


选择CHAR#Length(';Hello123abc';);包含8个字符。


选择十六进制(';Hello123abc';);它需要12个字节,两个十六进制字符是一个字节。


选择十六进制(';Hello123abc';);它需要12个字节,两个十六进制字符是一个字节。


选择十六进制(';你';);汉字占3个字节,两个十六进制字符占1个字节。


选择十六进制(';你';);汉字占3个字节,两个十六进制字符占1个字节。


选择十六进制(';A';);英文字母占1字节。


选择十六进制(';A';);英文字母占1字节。


MySQL数据类型和长度

值类型

类型

大小

射程(签名)

范围(无符号)

意图

TINYINT

1字节

(-128,127)

(0,255)

小整数值

斯莫林

2字节

(-32768,32767)

(0,65535)

大整数值

中微子

3字节

(-8388608,8388607)

(0,16777215)

大整数值

Int或整数

4字节

(-2147483648,2147483647)

(0,4294967295)

大整数值

比金

8字节

(-9,223,372,036,854,775,808,9223372036854775807)

(0,18446744073709551615)

最大整数值

浮动

4字节

(-3.402823466E+38,-1.175494351E-38),0,(1.175494351E-38,3.402823466351E+38)

0,(1.175494351E-38,3.402823466E+38)

单精度
浮点数

双重的

8字节

(-1.7976931348623157E+308,-2.2250738585072014E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308)

0,(2.2250738585072014E-308,1.7976931348623157E+308)

双精度
浮点数

DECIMAL

对于DECIMAL(m,d),如果m>;D.M+2,否则D+2

依赖于M和D的值

取决于D和M的值

小价值

日期和时间类型

类型

大小(字节)

范围

总体安排

意图

日期

3字节

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

时间

3字节

'-838:59:59'/'838:59:59'

HH:嗯:SS

时间值或持续时间

1字节

1901/2155

YYYY

年价值

约会时间

8字节

1000-01-0100:00:00/9999-12-3123:59:59

YyyymmddHH:mm:SS

混合日期和时间值

TIMESTAMP

4字节

1970-01-0100:00:00/2038

结束时间是2147483647秒,北京时间2038-1-1911:14:07,2038年1月19日格林威治时间凌晨03:14:07

YyyymmddHHMMSs

日期和时间值混合,时间戳

字符串类型

类型

大小

意图

烧焦

0-255字节

定长字符串

瓦尔查尔

0-65535字节

可变长度字符串

TINYBLOB

0-255字节

最多255个字符的二进制字符串

小TEXT

0-255字节

短文本字符串

斑点

0-65535字节

二进制形式的长文本数据

小马

0-65535字节

长文本数据

中绿叶

0-16777215字节

二进制形式的中等长度文本数据

中型TEXT

0-16777215字节

中等长度文本数据

长条

0-429467295字节

二进制形式的最大文本数据量

龙TEXT

0-429467295字节

最大文本数据

MySQL的记录存储格式动态介绍(MySQL5.7默认行格式)


MySQL紧凑、动态的内容格式


固定5字节的头信息;

隐藏列包括6字节的行。如果没有为表定义主键,或者没有不存储null的唯一列,则生成隐藏的主键行umarx;trx_uu;Max,事务ID,6字节;roll_uupointer是一个回滚指针,7字节。

计算表中记录的理论尺寸

以tableuser为例。表格结构如下:


用户表结构

  1. Marx是int类型,占4字节;
  2. Name是一个varchar(20)可变长度字段,最多20个字符。如果全部为汉字,则占60字节,每个汉字占3字节;
  3. age为int型,占4字节;
  4. 类型char(2)为2个字符,但未定义任何字符。对于UTF-8编码,无法定义长度。如果是汉字,它将占用6个字节;
  5. 记录的最大长度(字节)=5(记录头信息)+6(事务ID)+7(回滚指针)+4(Marx)+60(名称)+4(age)+6(类型)=92字节;实际长度需要根据数据的平均长度来确定。❶❺❾❾注:对于char(2)类型的列,当该列采用固定长度编码字符集时,该列占用的字节数不会添加到可变长度字段长度列表中;如果采用可变长度编码的字符集,此列占用的字节数将添加到可变长度字段长度列表中。为了解决一个问题,我们需要使用很多知识点。仅仅掌握知识点是没有什么用处的。我们可以综合利用它们,形成一个知识体系来解决具体问题。

您可以还会对下面的文章感兴趣

最新评论

  1. 离人何必挽
    离人何必挽
    发布于:2022-04-27 17:37:10 回复TA
    ello123abc';);它需要12个字节,两个十六进制字符是一个字节。选择十六进制(';你';);汉字占3个字节,两个十六进制字符占1个字节。选择十六进制(';你';);汉字占3个字节
  1. 卖萌小王子
    卖萌小王子
    发布于:2022-04-27 03:53:32 回复TA
    类型和长度值类型类型大小射程(签名)范围(无符号)意图TINYINT1字节(-128,127)(0,255)小整数值斯莫林2字节(-32768,32767)(0,65535)大整数值中微子3字节(-8388608,8388607)(0
  1. 池山秀伊
    池山秀伊
    发布于:2022-04-27 17:29:37 回复TA
    善良就像一种药,剂量大了,就是愚善;剂量正好,就是善良;剂量不够,则是伪善。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友