`
xombat
  • 浏览: 163673 次
  • 性别: Icon_minigender_1
  • 来自: 乌托邦
社区版块
存档分类
最新评论

Mysql 中各类型数据的的存储需求

阅读更多
首先,数据库中每行最大长度不能超过65535bytes,其中Blob和Text的数据只占用9到12byte(具体大小不知道和什么有关系)。

Char(M)的长度计算比较简单,但也要详细说一下,M是字符的个数(不能超过255),而不是byte数,因此它的实际存储容量和它所使用的字符集有关系,对于像utf8这样的字符集(每个字符没有固定的长度),他的容量V应该如何计算?这里简单的V = M * w,其中w是字符集中每个字符占用的最大byte数,对于utf8应该是3吧,我原来猜测既然像char(4)这样的数据最大能容纳4*3bytes(对于utf8字符集),那么他肯定能容纳’123456’这段数据,因为他用utf8字符集表示也不过占用6bytes。但是实际测试后发现不是,不管是数字还是字母或者汉字,他最多只能容纳4个。

然后我们重点关注一下varchar(M)的长度,因为它的长度很不固定而且使用范围最广。这里的M的范围理论上限制在0到65535之间,为什么说理论上,是因为它的实际长度要受很多因素的限制,比如每行最大长度,使用的字符集,以及M。我们拿 varchar(127)来作为例子,假设他使用gbk字符集,他的最大可能长度应该是127*2=254,但是因为他需要有一个prefix来表示他具体bytes数是多少(因为varchar是变长的,没有这个长度值他不知道如何读取数据),因此分配1byte来表示他的bytes数为254,这样他最终占用的byte数为255,如果是varchar(128),2*128 = 256这个数字用一个byte无法表示,因此需要2个byte的prefix,这样他会占用258bytes。而如果他改使用latin1字符集,那么每个字符为1个字节,这样它的最大可能长度为1* 128 < 256,可以用一个byte表示它的长度,因此他又占用129bytes。

这里的M最大能是多少呢?对于latin1的字符,因为每个字符占一个字节,而max row size 为65535,所以M最大为65535-2 = 65533(2是prefix的长度,这个65535其实还和这一行中其他列的长度有关,准确的说应该是65535减去其他列的长度,但这里简单将他们忽略)。而如果使用utf8字符,字符最大占用3个字节,那么M最大应该是(65535 – 2)/3 = 21844,这里的2是prefix的长度。

对于某些数据库引擎,他的数据存取空间大小还需要考虑align的情况,比如计算的大小是15,但他的align = 4,所以它最后会占用16bytes。
分享到:
评论

相关推荐

    Java中数据类型和MYSQL中数据类型的对比

    对比 Java 和 MySQL 数据类型时,开发者需要考虑存储需求、数据精度、性能和空间效率等因素。在设计数据库模式和编写 SQL 查询时,了解这些差异至关重要,以确保数据的正确性和高效存储。同时,这也影响到数据库查询...

    mysql常用数据类型

    以上数据类型是MySQL中最常见且使用频率较高的类型,它们覆盖了大部分应用程序可能遇到的数据存储需求,为开发者提供了灵活多样的选择。在实际应用中,合理选择数据类型不仅可以提高数据处理效率,还能有效减少存储...

    MySQL数据类型全掌握

    ### MySQL数据类型全掌握 #### 一、概述 在数据库设计和开发过程中,正确选择数据类型对于确保数据的准确性和优化存储空间...希望本文能帮助您更好地掌握MySQL数据类型,从而在数据库设计和开发中做出更合适的选择。

    MySQL基本数据类型.docx

    MySQL是一个广泛使用的开源关系型数据库管理系统,其支持多种数据类型来满足各种数据存储需求。以下是MySQL中一些主要的基本数据类型的详细说明: 1. **SMALLINT**: 这是一种整数类型,占用2个字节,可以存储从-32,...

    MySQL数据类型详解

    MySQL数据类型详解 在数据库管理系统中,数据类型是用来定义列中数据可以取值的类型和范围。在MySQL中定义数据类型具有重要的作用: 1. 对数据进行分类:数据类型有助于对数据进行归类处理,例如整数、字符串、...

    mysql数据类型详解.pdf

    MySQL中数据类型的选择对于数据库设计至关重要,它直接关系到数据存储的有效性和查询的效率。MySQL支持多种数据类型,可以分为几大类:数值型、日期时间型、字符型以及其他数据类型等。 数值型数据类型主要包括:...

    代码:kafka数据接入到mysql中

    在大数据处理领域,将Kafka数据接入到MySQL中是一个常见的需求。Kafka作为一个高吞吐量、分布式的实时消息发布订阅系统,常用于日志收集、流式数据处理等场景。而MySQL则作为广泛应用的关系型数据库,用于持久化和...

    MySQL 中的数据类型介绍

    总结,了解MySQL中的数据类型对于优化数据库性能、减少存储空间和确保数据精度至关重要。正确选择数据类型是创建高效、健壮数据库的关键步骤。在实际应用中,应根据数据特性、存储需求和性能要求来选取合适的数据...

    java的Date类型转换成MySQL的DateTime类型.doc

    Java 中 Date 类型转换为 MySQL 的 DateTime 类型 Java 中的 Date 类型和 MySQL 的 DateTime 类型是两个不同...该方法可以高效地将 Java 的 Date 类型转换为 MySQL 的 DateTime 类型,从而满足网络游戏开发中的需求。

    MySQL日期数据类型、MySQL时间类型使用总结

    ### MySQL日期数据类型与时间类型...通过以上总结,我们可以看到MySQL提供的日期和时间数据类型及其相关函数非常实用且强大,能够满足大多数应用的需求。掌握这些类型和函数的使用方法,对于开发人员来说是非常有益的。

    详解MySQL数据类型DECIMAL(N,M)中N和M分别表示的含义

    MySQL中的DECIMAL数据类型用于存储高精度的十进制数,它在数据库设计中尤其重要,因为这种数据类型可以确保精确存储货币和其他需要精确计算的数值。标题和描述提到的"DECIMAL(N,M)"中,N和M是两个关键参数,它们定义...

    把mysql数据库中的数据导入到oracle数据库中

    - 使用SQL Developer将MySQL数据导入到相应的Oracle用户下。 **2. 从MySQL导出的SQL文件导入Oracle** - 如果只有MySQL的导出文件,需要先将文件恢复到MySQL数据库中,再使用SQL Developer进行迁移。 - 注意事项: ...

    mysql历史数据同步到clickhouse 已测试

    MySQL作为流行的开源关系型数据库,广泛应用于事务处理和实时数据存储。在需要对历史数据进行深度分析时,将MySQL的数据同步到ClickHouse可以显著提升查询效率。 **1. 数据同步方案** - **binlog同步**: 利用MySQL...

    MySQL_数据类型_(列表).pdf

    ### MySQL 数据类型详解 在学习 MySQL 的过程中,了解并掌握其数据...通过合理选择合适的数据类型,不仅可以提高数据库的查询效率,还能有效减少存储空间的需求。希望本文能够帮助您更好地理解和应用 MySQL 数据类型。

    mysql数据类型以及他们的数据的范围

    MySQL 提供了多种数据类型,包括数字类型、日期和时间类型以及字符串类型,以满足不同场景下的数据存储需求。 1. **数字类型**: - **TINYINT**: 包含一个字节的整数,有符号范围是-128到127,无符号范围是0到255...

    MySQL之数据类型

    在使用 MySQL 数据库进行数据存储时,选择合适的数据类型至关重要,它不仅影响着数据的存储方式,还可能对查询性能及存储空间的使用效率产生影响。本文将详细介绍 MySQL 中的一些关键数据类型,特别是日期时间类型、...

    25.9 MySQL 数据类型

    MySQL 数据类型是数据库管理系统中用来定义列属性的关键元素,它决定了可以存储在列中的数据种类。MySQL 支持多种数据类型,包括数值类型、字符串类型、日期和时间类型以及二进制类型。这些数据类型的选择直接影响到...

    MySql数据类型详解

    ### MySQL数据类型详解 #### 一、列类型概述 MySQL提供了丰富的数据类型,适用于各种应用场景。根据数据的不同特性,MySQL中的数据类型大致可以分为以下几类:数值类型、字符串类型、日期/时间类型以及二进制类型...

    mysql 测试数据集,单表200万条数据

    - 数据类型:正确选择数据类型可以节省存储空间,如INT、VARCHAR、DATE等。 - 约束:设置NOT NULL、UNIQUE、FOREIGN KEY等约束,保证数据的有效性。 - 主键:每张表应有一个主键,用于唯一标识每条记录,如自动...

Global site tag (gtag.js) - Google Analytics