mysql中text可以存储多少个字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中text可以存储多少个字相关的知识,希望对你有一定的参考价值。
参考技术A最多可以存储65535字节。
在mysql中,一个text文件中,存储字节的范围为0~65535字节,换算单位也就是64KB。因此,mysql中text最多可以存储65535字节。
text文件有tinytext、text、mediumtext和longtext四种类型,这四种类型有着相同的最大长度和存储的需求。
扩展资料:
mysql的特性:
1、使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、php、Eiffel、Ruby,.NET和 Tcl 等。
4、支持多线程,充分利用 CPU 资源。
5、优化的 SQL查询算法,有效地提高查询速度。
6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
参考资料来源:百度百科-mySQL
MySQL char & varchar 字符集 & 存储大小
【中文标题】MySQL char & varchar 字符集 & 存储大小【英文标题】:MySQL char & varchar character sets & storage sizes 【发布时间】:2012-04-22 07:34:18 【问题描述】:想知道这两种数据类型将占用多少实际存储空间,因为 MySQL 文档对此事有些不清楚。
CHAR(M) M × w 字节,0
VARCHAR(M), VARBINARY(M) L + 1 个字节,如果列值需要 0 – 255 字节,如果值可能需要超过 255 个字节,则为 L + 2 个字节
在我看来,这似乎意味着,给定一个 utf8 编码的数据库,一个 CHAR 将始终占用每个字符 32 位,而 VARCHAR 将占用 8 到 32 位,具体取决于所存储字符的实际字节长度。那是对的吗?或者 VARCHAR 是否意味着 8 位字符宽度,并且存储多字节 UTF8 字符实际上会消耗 VARCHAR 中的多个“字符”?或者 VARCHAR 是否也总是每个字符存储 32 位?很多可能性。
我以前不必担心这么多,但我开始达到内存临时表大小限制,我不一定要增加 MySQL 的可用池(第二次)。
【问题讨论】:
【参考方案1】:CHAR
和 VARCHAR
都计算字符数。考虑到字符编码和长度,它们都计算了它们可能需要的最大存储空间。对于 ASCII,每个字符 1 个字节。对于 UTF-8,每个字符 3 个字节(不是您期望的 4 个字节,因为 MySQL's Unicode support is limited 出于某种原因,并且它不支持在 UTF-8 中需要 4 个字节的任何 Unicode 字符)。到目前为止,CHAR
和 VARCHAR
是相同的。
现在,CHAR
继续保留此数量的存储空间。
VARCHAR
而是分配了 1 或 2 个字节,这取决于这个最大存储是
有趣的是,这使得 85 成为 UTF-8 的神奇数字VARCHAR
:
VARCHAR(85)
使用 1 个字节作为长度,因为 85 个 UTF-8 字符的最大可能长度为 3 × 85 = 255。
VARCHAR(86)
使用 2 字节作为长度,因为 86 个 UTF-8 字符的最大可能长度为 3 × 86 = 258。
【讨论】:
补充一点,MySQL 的utf8
存储不仅残缺不全,也不是标准的 UTF-8。 utf8
编码字符串的存储大约是常规 UTF-8 编码字符串的两倍,因此效率更低。
@deceze 我没有意识到这一点。您对此有任何详细信息或参考吗?
我希望我这样做了,但文档并没有说太多。最近有一个关于转储数据库的问题,其中数据以二进制原样转储,这是非常明显的。
看起来比这更复杂。例如,InnoDB has two different row formats(COMPACT
和 REDUNDANT
)因此一行占用的空间取决于正在使用的空间。它不再像以前那样简单,当时唯一常用的存储引擎是 MyISAM。无论如何,1字节的差异无论如何都可以忽略不计。您更有可能关心 InnoDB 中键的最大长度,即 768 字节。因此 UTF-8 VARCHAR(256) 不能成为键的一部分。一个 UTF-8 VARCHAR(255) 字段可以是一个键。
啊,情节变厚了..很高兴知道。我还注意到在更高版本的 MySQL 中提供了一个“utf8mb4”字符集,这是对他们之前一直使用的 gimped utf8 字符集的修复。以上是关于mysql中text可以存储多少个字的主要内容,如果未能解决你的问题,请参考以下文章