根据MySQL文档,有四种文本类型:
假设字符编码为UTF-8,我可以在每种数据类型的列中存储的最大长度是多少?
对于@Ankan Zerob的挑战,这是我对每种文本类型中可以存储的最大长度的估计,以文字表示:
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
在英语中,每个单词4.8个字母可能是一个很好的平均值(例如norvig.com/mayzner.html),尽管单词长度会因领域而异(例如口语和学术论文),所以没有必要太精确。英语主要是单字节ASCII字符,偶尔会有多字节字符,非常接近每个字母一个字节。单词间空间必须允许额外的字符,所以我从每个单词5.8字节向下舍入。带有大量口音的语言,例如波兰语,会存储稍微少一点的单词,例如单词较长的德语。
需要多字节字符的语言,如希腊语、阿拉伯语、希伯来语、印地语、泰语等,在UTF-8中通常需要每个字符两个字节。疯狂地猜测每个单词5个字母,我已经从每个单词11个字节四舍五入。
CJK脚本(Hanzi、Kanji、Hiragana、Katakana等)我一无所知;我相信字符在UTF-8中大多需要3个字节,并且(经过大量简化)它们可能被认为每个单词使用大约2个字符,因此它们将介于其他两个之间。(CJK脚本使用UTF-16可能需要更少的存储空间,视情况而定)。
这当然是忽略了存储开销等。
相同答案的扩展
这是一个用于快速决策的粗略估算表!
x-x
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
请参考Chris V的回答:https://stackoverflow.com/a/35785869/1881812
从留档(MySQL 8):
Type | Maximum length -----------+------------------------------------- TINYTEXT | 255 (2 8−1) bytes TEXT | 65,535 (216−1) bytes = 64 KiB MEDIUMTEXT | 16,777,215 (224−1) bytes = 16 MiB LONGTEXT | 4,294,967,295 (232−1) bytes = 4 GiB
请注意,可以存储在列中的字符数将取决于字符编码。
问题内容: 根据MySQL文档,共有四种TEXT类型: 细语 文本 中文字 长文本 假设字符编码为UTF-8,我可以在每种数据类型的列中存储的最大长度是多少? 问题答案: 从文档中: 请注意,可以在您的列中存储的 字符 数取决于 字符编码 。
Snowflake文档指出,VARCHAR列仅限于16 MB未压缩的https://docs.Snowflake.net/manuals/sql-reference/data-types-text.html#data-types-for-text-strings Snowflake文档指出,VARCHAR数据会自动转换为JavaScript字符串数据类型。 https://docs.Snowfla
我知道使用尽可能最小的数据类型的原则,但我想知道为什么这会适用于MySQL中的TEXT/MEDIUMTEXT/LONGTEXT?如果我使用LONGTEXT而不是MEDIUMTEXT,是否存在性能问题?我发现了这样一个问题:当每个条目都适合中等文本大小的字段时,使用MySQL longtext大小的字段的缺点是什么?但我认为这不是性能问题的答案? 这只是一个为LONGTEXT增加一点存储空间的问题吗
问题内容: 根据定义: VARCHAR:长度范围是1到255个字符。除非指定BINARY关键字,否则以不区分大小写的方式对VARCHAR值进行排序和比较。x + 1个字节 TINYBLOB,TINYTEXT:BLOB或TEXT列,最大长度为255(2 ^ 8-1)个字符x + 1个字节 因此,基于此,我创建了下表: 还是创建varchar或tinytext更好, 为什么 ? 是否相同: VARCH
我得到的问题是,我希望它能够在5个字母最多,有谁可以告诉我如何做到这一点? 谢谢
问题内容: 我试图找出在以下情况下“ maxmemory”的安全设置: 大量写入的应用程序 8GB RAM 假设其他进程占用约1GB 这意味着redis进程的内存使用量不得超过7GB 每个BGSAVE事件的内存使用量都会增加一倍,原因是: 在redis 文档中,有关BGSAVE事件的内存使用量增加的说法如下: 如果要在写入量很大的应用程序中使用Redis,则在将RDB文件保存在磁盘上或重写AOF日