找回密码
 立即注册
搜索

[数据库] mysql 字段最长的字符格式是什么

[复制链接]
智慧谋略 发表于 2022-8-25 01:38:20 | 显示全部楼层 |阅读模式
ONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。


使用Text

MySQL提供四种TEXT类型:TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT。

下面显示每个TEXT类型的大小,假设我们使用一个字符集,该字符集需要1个字节来存储字符。

TINYTEXT - 1个字节(255个字符)

TINYTEXT可以存储的最大字符是255(2 ^ 8 = 256,1字节开销)。

需要少于255个字符的列应该使用TINYTEXT类型,长度不一致,不需要排序,例如:博文摘录,文章摘要等。

请参阅以下示例:



  • CREATE TABLE articles (


  •     id INT AUTO_INCREMENT PRIMARY KEY,


  •     title VARCHAR(255),


  •     summary TINYTEXT


  • );

SQL

在本示例中,我们创建了一个名为articles的新表,该表具有数据类型为TINYTEXT的summary列。

TEXT - 64KB(65,535个字符)

TEXT数据类型最多可容纳64KB,相当于65535(2 ^ 16 - 1)个字符。 TEXT还需要2字节开销。

文本可以容纳文章的正文。 请考虑以下示例:



  • ALTER TABLE articles


  • ADD COLUMN body TEXT NOT NULL


  • AFTER summary;

SQL

在本示例中,我们使用ALTER TABLE语句将具有TEXT数据类型的body列添加到articles表。

MEDIUMTEXT - 16MB(16,777,215个字符)

MEDIUMTEXT最多可容纳16MB的文本数据,相当于16,777,215个字符。它需要3字节开销。
MEDIUMTEXT可用于存储相当大的文本数据,如书籍文本,白皮书等。例如:



  • USE testdb;





  • CREATE TABLE whitepapers (


  •     id INT AUTO_INCREMENT PRIMARY KEY,


  •     body MEDIUMTEXT NOT NULL,


  •     published_on DATE NOT NULL


  • );

SQL

LONGTEXT - 4GB(4,294,967,295个字符)

LONGTEXT可以存储高达4GB的文本数据,这是非常巨大的。 它需要4字节开销。

 楼主| 智慧谋略 发表于 2022-8-25 01:38:46 | 显示全部楼层

MySQL数据库是用于软件开发和中小型网站建设的最常用数据库之一。

但是,许多人不知道MySQL可以支持多少数据,并且一些国内CMS制造商拥有大量数据。 它承担了责任,许多不了解MySQL的网站管理员对此有很多误解。 那么,MySQL数据库可以支持多少数据? 实际上,MySQL单表的上限主要与操作系统支持的最大文件大小有关。 让我们看一下官方介绍。   MySQL 3.22 将表大小限制为4GB。

由于MySQL 3.23中使用了MyISAM存储引擎,因此最大表大小已增加到65536TB(2567- 1字节)。 由于允许的表大小较大,因此,MySQL数据库的最大有效表大小通常由操作系统的文件大小限制而不是由MySQL内部限制确定



文件体积在上限有一个关键的限制原因,就是你储存的文件系统,简单来说,就是硬盘SSD或者储存卡用来管理和记录文件的一种方式,大部分现代系统都会做的一件事是记录每个文件的大小信息,这样既可让用户管理其磁盘空间又可以让计算机掌握磁盘不一样物理区域内有多少已用到的空间。


  这些大小信息被储存为32位或者64位数值,较老的系统,例如Win98大多都是用的是32位文件系统,FAT32是就是年代末家用电脑中最常见的文件系统,其实FAT32现在有的地方还在用,但是不幸的是,32位的二进制数最多可以表示42亿多点,这意味着以前很多电脑的文件大小的极限是4.2GB,这体积比刻满单层DVD都要小,放到现在显然不够用了。


093414x11ugr1ylz1lmmkn.jpg

  但是自从WinXP以来,微软将家用操作系统的文件系统换为了支持64位文件大小的NTFS,要是放在以前的电脑上,会因文件系统开销导致运行缓慢,现如今MTFS单个文件大小的理论限制超过了18EB(1EB=1000PB,1PB=1000TB),足够放下4亿部前面提到的4K电影了。


  再说了,就跟很多理论最大值一样,现实中的限制会更严,现代操作系统中对文件大小有额外的限制,例如,win10的限制不能超过17.5TB,这个限制在现在依然是大于任何市面上的硬盘的,但多年以后,钥匙我们找到了如何将意识转移到100EB DNA 储存设备上的方式,可能就要重新思考一下文件系统了。


InnoDB存储引擎将InnoDB表保存在一个表空间中,该表空间可以由多个文件创建。 这样,表的大小可以超过单个文件的最大容量。 表空间可以包含原始磁盘分区,从而使非常大的表成为可能。 表空间的最大容量为64TB。   实际上,MySQL可以承受的数据量主要与数据表的结构有关,而不是固定值。 如果表结构简单,则它可以承载比表结构更大的数据量。

  根据DVB团队和Cmshelp团队进行的CMS系统评估的结果,MySQL单个表可以很好地运行,具有大约2000万条记录(4G)和经过数据库优化后的5000万条记录(10G)。 它运作良好。

那么,为什么一些国内的CMS制造商仍然将负担不佳的产品责任推给MySQL?   这对MySQL不公平。 那些CMS供应商没有很好地完成内核工作,而是仍然添加了许多新颖的功能,最终导致其产品的低负载。 他们没有针对自己的负载效果制定相应的数据库优化方案和标准,而是继续保留了复杂的结构,这导致了MySQL资源的无尽浪费,最终导致了其负载方面的缺陷,因此他们充分发挥了中文的传统优势。

  .com的优势是灵活的:采用所谓的拆分表存储来避免重量和重量。 尽管可以在一定程度上缓解自身负担的缺陷,但会导致网站维护和资源浪费。 这是一个长期的解决方案吗?  ? 尽管他们解决了眼前的问题,但将来会发生什么? 您想不断实现目标吗?

用简单明了的类比来描述,MySQL中的表就像一块土地。 一张桌子等同于使用这块土地来建造高层建筑物并充分利用高的人员负担,而子桌子等同于使用在这块土地上建造的简易别墅。 如果要达到高的人员负担,将继续开辟新的土地以实现目标,但是我们必须考虑土地是否不足或技术水平是否不足。 这种方法使人们感到浪费资源并计划严重的缺陷。

那么谁敢使用这样的CMS系统? 是否要不停地更新服务器配置以实现良好的运行? 而且,在大多数情况下,下一个服务器中不仅有这样的网站,因此我们必须考虑是否要为如此庞大的小型CMS付款。   建议某些CMS制造商改进其产品,以便用户获得更好的收益。 否则,还有谁会使用您的软件产品?



discuz论坛 的数据库最大多大?

取决于你的硬盘有多大

dz支持读写分离  所以说可以无限

forum.jpg


 楼主| 智慧谋略 发表于 2022-8-25 01:40:17 | 显示全部楼层
浅谈mysql一张表到底能存多少数据
这篇文章主要介绍了浅谈mysql一张表到底能存多少数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨

知识准备数据页

在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网我们可以用如下命令查询到。

1

2

3

4

5

6

7

mysql> SHOW GLOBAL STATUS LIKE 'innodb_page_size';

+------------------+-------+

| Variable_name  | Value |

+------------------+-------+

| Innodb_page_size | 16384 |

+------------------+-------+

1 row in set (0.00 sec)





今天咱们数据页的具体结构指针等不深究,知道它默认是16kb就行了,也就是说一个节点的数据大小是16kb

索引结构(innodb)

mysql的索引结构咱们应该都知道,是如下的b+树结构

通常b+树非叶子节点不存储数据,只有叶子节点(最下面一层)才存储数据,那么咱们说回节点,一个节点指的是(对于上图而言)



每个红框选中的部分称为一个节点,而不是说某个元素。了解了节点的概念和每个节点的大小为16kb之后,咱们计算mysql能存储多少数据就容易很多了

具体计算方法根节点计算

首先咱们只看根节点

比如我们设置的数据类型是bigint,大小为8b

在数据本身如今还有一小块空间,用来存储下一层索引数据页的地址,大小为6kb

所以我们是可以计算出来一个数据为(8b+6b=14b)的空间(以bigint为例)我们刚刚说到一个数据页的大小是16kb,也就是(161024)b,那么根节点是可以存储(161024/(8+6))个数据的,结果大概是1170个数据如果跟节点的计算方法计算出来了,那么接下来的就容易了。

其余层节点计算

第二层其实比较容易,因为每个节点数据结构和跟节点一样,而且在跟节点每个元素都会延伸出来一个节点,所以第二层的数据量是1170*1170=1368900,问题在于第三层,因为innodb的叶子节点,是直接包含整条mysql数据的,如果字段非常多的话数据所占空间是不小的,我们这里以1kb计算,所以在第三层,每个节点为16kb,那么每个节点是可以放16个数据的,所以最终mysql可以存储的总数据为

1170 * 1170 * 16 = 21902400 (千万级条)

其实计算结果与我们平时的工作经验也是相符的,一般mysql一张表的数据超过了千万也是得进行分表操作了。

总结

最后用一张图片总结一下今天讨论的内容,希望您能喜欢

到此这篇关于浅谈mysql一张表到底能存多少数据的文章就介绍到这了,



高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|探索掌握未知、共创美好未来

GMT+8, 2026-9-17 02:31 , Processed in 0.324066 second(s), 43 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表